ROOT logo
// modified 22-05-00 by D.B
// modified  3-12-1998 D.B
// modified  23/3/99 by D.B
// modified  22/11/99 by D.B <d.bertini@gsi.de>
//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//HLdSockremoteSource
//
//  This is a particular kind of "data source"  (see HDataSource) which takes 
// the event's data from  directly from a Data event builder.
//
//  The data are accessed via a server using Root's TSockets  
// and need to be unpacked.  For This user must specify the 
// node of a dedicated remote event 
// SERVER as argument in the constructor of this class. 
// Unpacking/swapping data is then similar 
// to other data source.(see HldSource).
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "hldsockremotesource.h"
#include "hldsockremotevt.h"
#include "hrecevent.h"
#include "hruntimedb.h"
// #include "heventfile.h"
#include "hldevt.h"
#include "hldsubevt.h"
#include "hldunpack.h"  
#include "hades.h"
#include <iostream> 

ClassImp(HldSockRemoteSource)

HldSockRemoteSource::HldSockRemoteSource(void): HldSource() {
	refId=-1;
}

HldSockRemoteSource::HldSockRemoteSource(const Text_t *nodeName,Int_t evtMax): HldSource(){
   fReadEvent=new HldSockRemotEvt(nodeName,0,evtMax,0);
   currNodeName=nodeName;
   iter=0;
   iter=fUnpackerList->MakeIterator();
  isDumped=kFALSE;   
}



HldSockRemoteSource::~HldSockRemoteSource(void) {
  //Destructor for a remote data source
   if (fUnpackerList) fUnpackerList->Delete();
  fUnpackerList=0;
  if (fReadEvent) delete fReadEvent;
  fReadEvent=0;
  if(iter) delete iter;
}


Bool_t HldSockRemoteSource::init(void) {
  //Calls the init() function for each unpacker.
 if (!(*fEventAddr)) {
   (*fEventAddr) = new HRecEvent;
 }
 if(isDumped) return kTRUE;
 iter=fUnpackerList->MakeIterator();
 if (initUnpacker()==kFALSE) {
      Error("init()","error in initialisation of  unpackers \n");
    return kFALSE;
 }
 HldUnpack* unpacker;
 while ( (unpacker=(HldUnpack *)iter->Next())!=NULL) {
       fReadEvent->appendSubEvtIdx(*unpacker);      
 }  
 return kTRUE;  
}


EDsState HldSockRemoteSource::getNextEvent(Bool_t doUnpack) {
 // test Server IO
if(isDumped) return dumpEvt();

 iter->Reset();
 HldUnpack *unpacker;
 if (!fReadEvent) return kDsError;
  if (fReadEvent) fReadEvent->execute();
  decodeHeader((*fEventAddr)->getHeader());
  while ( (unpacker=(HldUnpack *)iter->Next())!=NULL) {
    if (!unpacker->execute()) return kDsError;
  }
return kDsOk;
}

Int_t HldSockRemoteSource::getCurrentRunId(void) {
  ((HldSockRemotEvt*)fReadEvent)->read();
  return fReadEvent->getRunNr();
}
 hldsockremotesource.cc:1
 hldsockremotesource.cc:2
 hldsockremotesource.cc:3
 hldsockremotesource.cc:4
 hldsockremotesource.cc:5
 hldsockremotesource.cc:6
 hldsockremotesource.cc:7
 hldsockremotesource.cc:8
 hldsockremotesource.cc:9
 hldsockremotesource.cc:10
 hldsockremotesource.cc:11
 hldsockremotesource.cc:12
 hldsockremotesource.cc:13
 hldsockremotesource.cc:14
 hldsockremotesource.cc:15
 hldsockremotesource.cc:16
 hldsockremotesource.cc:17
 hldsockremotesource.cc:18
 hldsockremotesource.cc:19
 hldsockremotesource.cc:20
 hldsockremotesource.cc:21
 hldsockremotesource.cc:22
 hldsockremotesource.cc:23
 hldsockremotesource.cc:24
 hldsockremotesource.cc:25
 hldsockremotesource.cc:26
 hldsockremotesource.cc:27
 hldsockremotesource.cc:28
 hldsockremotesource.cc:29
 hldsockremotesource.cc:30
 hldsockremotesource.cc:31
 hldsockremotesource.cc:32
 hldsockremotesource.cc:33
 hldsockremotesource.cc:34
 hldsockremotesource.cc:35
 hldsockremotesource.cc:36
 hldsockremotesource.cc:37
 hldsockremotesource.cc:38
 hldsockremotesource.cc:39
 hldsockremotesource.cc:40
 hldsockremotesource.cc:41
 hldsockremotesource.cc:42
 hldsockremotesource.cc:43
 hldsockremotesource.cc:44
 hldsockremotesource.cc:45
 hldsockremotesource.cc:46
 hldsockremotesource.cc:47
 hldsockremotesource.cc:48
 hldsockremotesource.cc:49
 hldsockremotesource.cc:50
 hldsockremotesource.cc:51
 hldsockremotesource.cc:52
 hldsockremotesource.cc:53
 hldsockremotesource.cc:54
 hldsockremotesource.cc:55
 hldsockremotesource.cc:56
 hldsockremotesource.cc:57
 hldsockremotesource.cc:58
 hldsockremotesource.cc:59
 hldsockremotesource.cc:60
 hldsockremotesource.cc:61
 hldsockremotesource.cc:62
 hldsockremotesource.cc:63
 hldsockremotesource.cc:64
 hldsockremotesource.cc:65
 hldsockremotesource.cc:66
 hldsockremotesource.cc:67
 hldsockremotesource.cc:68
 hldsockremotesource.cc:69
 hldsockremotesource.cc:70
 hldsockremotesource.cc:71
 hldsockremotesource.cc:72
 hldsockremotesource.cc:73
 hldsockremotesource.cc:74
 hldsockremotesource.cc:75
 hldsockremotesource.cc:76
 hldsockremotesource.cc:77
 hldsockremotesource.cc:78
 hldsockremotesource.cc:79
 hldsockremotesource.cc:80
 hldsockremotesource.cc:81
 hldsockremotesource.cc:82
 hldsockremotesource.cc:83
 hldsockremotesource.cc:84
 hldsockremotesource.cc:85
 hldsockremotesource.cc:86
 hldsockremotesource.cc:87
 hldsockremotesource.cc:88
 hldsockremotesource.cc:89
 hldsockremotesource.cc:90
 hldsockremotesource.cc:91
 hldsockremotesource.cc:92
 hldsockremotesource.cc:93
 hldsockremotesource.cc:94