GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
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
19class TMutex;
20class TList;
21
26class 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
static Int_t DecodeValueBuffer(TBuffer *buf)
Extract value from buffer that was created by CreateValueBuffer method.
TList * fxBufferList
List of preallocated buffer TBuffers which are used when TBuffer added to queue should be "cloned".
static TBuffer * CreateValueBuffer(UInt_t val)
Create a root buffer that contains a single value val.
TBuffer * NewEntry()
Create dummy buffer for queue.
void Clear(Option_t *opt="") override
Empty the queue and give free buffers back.
TBuffer * WaitBuffer()
Wait for buffer object from queue.
void InitBuffers()
Initialization of internal queue buffer.
Int_t fiMaxBuffers
Number of preallocated buffer TBuffers (maximum entries in fxBufferList).
void AddBuffer(TBuffer *buffer, Bool_t clone=kFALSE)
Add buffer pointer to queue.
void AddBufferFromObject(TObject *object)
Reconstruct a TObject queue entry from a given TBuffer pointer.
void Realloc(TBuffer *buffer, Int_t oldsize, Int_t newsize)
Reallocate buffer of TBuffer to newsize.
virtual ~TGo4BufferQueue()
TList * fxFreeList
List of buffers which are free for the next add.
TObject * WaitObjectFromBuffer()
Wait for buffer object from queue.
void FreeBuffer(TBuffer *buffer)
Free internal buffer to be re-used by the AddBuffer as clone method.
TGo4Queue(const char *name=nullptr)
Definition TGo4Queue.cxx:23