ROOT logo
//////////////////////////////////////////////////////////////////////
// Copyright:
//   GSI, Gesellschaft fuer Schwerionenforschung mbH
//   Planckstr. 1
//   D-64291 Darmstadt
//   Germany
//////////////////////////////////////////////////////////////////////
// HRevBuffer.h
// description of class HRevBuffer
// client package for multithreaded Hades remote event server
// created 14. 5.1999 by Horst Goeringer
//////////////////////////////////////////////////////////////////////

#ifndef HRevBuffer_H
#define HRevBuffer_H

#include <iostream>
#include "TObject.h"
#include "TSocket.h"

class HRevBuffer : public TObject
{
   private:
      TSocket *pTSocket;     // ptr socket of channel to event server
      Int_t  iSocket;        // socket id of channel to event server
      Int_t  iDebug;         // verbosity level (test)
      Int_t  iBufNo1;        // first buffer no. received (test)
      Int_t  iBufNo2;        // last buffer no. received (test)
      Int_t  iSwap;          // > 0: swap event data

      Int_t  iBufSizeAlloc;  // allocated buffer size
      Int_t  iBufSize;       // size current buffer
      Int_t  iBufNo;         // current buffer no.
      Int_t  iHeadPar;       // no. of (4 byte) parms buffer header
      Int_t  iEvtMax;        // no. of events requested
      Int_t  iEvtNo;         // last event no. handled (absolute)
      Int_t  iEvtRel;        // last event no. handled (in cur. buffer)
      Int_t  iEvtBuf;        // no. of events in current buffer
      Int_t  iEvtPar;        // no. of parameters in event (incl header)
      Int_t  *piBuf;         // ptr event buffer
      Int_t  *piNextEvt;     // ptr first element next event

   public:
      HRevBuffer( Int_t iMode); // constructor
      ~HRevBuffer();            // destructor

      TSocket *RevOpen(const Char_t *pNode, Int_t iPort, Int_t iEvent);
          // input: node name and port number server, req. no. of events
          // returns Socket ptr of server connection

      UInt_t *RevGet( TSocket *pSocket, Int_t iFlush);
          // get next event (pointer) from buffer, input:
          // Socket ptr, 
          // iFlush = 1: skip current buffer (not impl)

      Int_t RevBufsize();
          // get size of current buffer (byte)

      void RevBufWait(Int_t iWait);
          // wait for iWait seconds

      void  RevClose( TSocket *pSocket );           // input Socket ptr 

   ClassDef(HRevBuffer, 0)        // prototype for remote event buffer
};

#endif     // !HRevBuffer_H 
 hrevbuffer.h:1
 hrevbuffer.h:2
 hrevbuffer.h:3
 hrevbuffer.h:4
 hrevbuffer.h:5
 hrevbuffer.h:6
 hrevbuffer.h:7
 hrevbuffer.h:8
 hrevbuffer.h:9
 hrevbuffer.h:10
 hrevbuffer.h:11
 hrevbuffer.h:12
 hrevbuffer.h:13
 hrevbuffer.h:14
 hrevbuffer.h:15
 hrevbuffer.h:16
 hrevbuffer.h:17
 hrevbuffer.h:18
 hrevbuffer.h:19
 hrevbuffer.h:20
 hrevbuffer.h:21
 hrevbuffer.h:22
 hrevbuffer.h:23
 hrevbuffer.h:24
 hrevbuffer.h:25
 hrevbuffer.h:26
 hrevbuffer.h:27
 hrevbuffer.h:28
 hrevbuffer.h:29
 hrevbuffer.h:30
 hrevbuffer.h:31
 hrevbuffer.h:32
 hrevbuffer.h:33
 hrevbuffer.h:34
 hrevbuffer.h:35
 hrevbuffer.h:36
 hrevbuffer.h:37
 hrevbuffer.h:38
 hrevbuffer.h:39
 hrevbuffer.h:40
 hrevbuffer.h:41
 hrevbuffer.h:42
 hrevbuffer.h:43
 hrevbuffer.h:44
 hrevbuffer.h:45
 hrevbuffer.h:46
 hrevbuffer.h:47
 hrevbuffer.h:48
 hrevbuffer.h:49
 hrevbuffer.h:50
 hrevbuffer.h:51
 hrevbuffer.h:52
 hrevbuffer.h:53
 hrevbuffer.h:54
 hrevbuffer.h:55
 hrevbuffer.h:56
 hrevbuffer.h:57
 hrevbuffer.h:58
 hrevbuffer.h:59
 hrevbuffer.h:60
 hrevbuffer.h:61
 hrevbuffer.h:62
 hrevbuffer.h:63
 hrevbuffer.h:64
 hrevbuffer.h:65
 hrevbuffer.h:66
 hrevbuffer.h:67