GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
TGo4BufferQueue.h
Go to the documentation of this file.
1 // $Id$
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef TGO4BUFFERQUEUE_H
15 #define TGO4BUFFERQUEUE_H
16 
17 #include "TGo4Queue.h"
18 
19 class TMutex;
20 class TList;
21 
26 class TGo4BufferQueue : public TGo4Queue {
27 
28  public:
29 
31 
32  TGo4BufferQueue(const char *name);
33 
34  virtual ~TGo4BufferQueue();
35 
41  void AddBufferFromObject(TObject *object);
42 
48  void AddBuffer(TBuffer *buffer, Bool_t clone=kFALSE);
49 
57  void FreeBuffer(TBuffer *buffer);
58 
60  void Clear(Option_t *opt = "") override;
61 
66  TBuffer *WaitBuffer();
67 
73  TObject *WaitObjectFromBuffer();
74 
82  static TBuffer *CreateValueBuffer(UInt_t val);
83 
91  static Int_t DecodeValueBuffer(TBuffer *buf);
92 
93  private:
97  void InitBuffers();
98 
102  void Realloc(TBuffer *buffer, Int_t oldsize, Int_t newsize);
103 
107  TBuffer *NewEntry();
108 
120  TList *fxBufferList{nullptr};
121 
123  TList *fxFreeList{nullptr};
124  TMutex *fxBufferMutex{nullptr};
125 
130  Int_t fiMaxBuffers{0};
131 
132 };
133 
134 #endif //TGO4BUFFERQUEUE_H
TMutex * fxBufferMutex
TObject * WaitObjectFromBuffer()
void Clear(Option_t *opt="") override
TBuffer * WaitBuffer()
void Realloc(TBuffer *buffer, Int_t oldsize, Int_t newsize)
TBuffer * NewEntry()
void AddBuffer(TBuffer *buffer, Bool_t clone=kFALSE)
static Int_t DecodeValueBuffer(TBuffer *buf)
static TBuffer * CreateValueBuffer(UInt_t val)
void FreeBuffer(TBuffer *buffer)
void AddBufferFromObject(TObject *object)
virtual ~TGo4BufferQueue()