00001 //------------------------------------------------------------- 00002 // Go4 Release Package v3.04-01 (build 30401) 00003 // 28-November-2008 00004 //--------------------------------------------------------------- 00005 // The GSI Online Offline Object Oriented (Go4) Project 00006 // Experiment Data Processing at EE department, GSI 00007 //--------------------------------------------------------------- 00008 // 00009 //Copyright (C) 2000- Gesellschaft f. Schwerionenforschung, GSI 00010 // Planckstr. 1, 64291 Darmstadt, Germany 00011 //Contact: http://go4.gsi.de 00012 //---------------------------------------------------------------- 00013 //This software can be used under the license agreements as stated 00014 //in Go4License.txt file which is part of the distribution. 00015 //---------------------------------------------------------------- 00016 #ifndef TGO4BUFFERQUEUE_H 00017 #define TGO4BUFFERQUEUE_H 00018 00019 #include "TGo4Queue.h" 00020 00021 class TMutex; 00022 class TIterator; 00023 class TList; 00024 00029 class TGo4BufferQueue : public TGo4Queue { 00030 00031 public: 00032 00033 TGo4BufferQueue() ; 00034 00035 TGo4BufferQueue(const char* name); 00036 00042 void AddBufferFromObject(TObject * object); 00043 00049 void AddBuffer(TBuffer * buffer, Bool_t clone=kFALSE); 00050 00058 void FreeBuffer(TBuffer * buffer); 00059 00061 virtual void Clear(Option_t* opt=""); 00062 00067 TBuffer * WaitBuffer(); 00068 00074 TObject * WaitObjectFromBuffer(); 00075 00076 virtual ~TGo4BufferQueue() ; 00077 00085 static TBuffer* CreateValueBuffer(UInt_t val); 00086 00094 static Int_t DecodeValueBuffer(TBuffer* buf); 00095 00096 00100 static const Int_t fgiISOWNER; 00101 00102 private: 00106 void InitBuffers(); 00107 00111 void Realloc(TBuffer* buffer, Int_t oldsize, Int_t newsize); 00112 00116 TBuffer* NewEntry(); 00117 00118 00119 00131 TList* fxBufferList; 00132 00134 TList* fxFreeList; 00135 TMutex * fxBufferMutex; 00136 Int_t fiOverflowcount; 00137 00139 TIterator * fxBufferIterator; 00140 00145 Int_t fiMaxBuffers; 00146 00147 }; 00148 00149 #endif //TGO4BUFFERQUEUE_H 00150 00151 //----------------------------END OF GO4 SOURCE FILE ---------------------