]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/AliHLTConsumerDescriptor.h
Air with increased transport cuts close to qb28.
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTConsumerDescriptor.h
1 // @(#) $Id$
2
3 #ifndef ALIHLTCONSUMERDESCRIPTOR_H
4 #define ALIHLTCONSUMERDESCRIPTOR_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 /** @file   AliHLTConsumerDescriptor.h
9     @author Matthias Richter
10     @date   
11     @brief  Helper class to describe a consumer component.
12     @note   The class is used in Offline (AliRoot) context
13 */
14
15 #include "AliHLTDataBuffer.h"
16
17 /**
18  * @class AliHLTConsumerDescriptor
19  * @brief Helper class to describe a consumer component.
20  *
21  * There is unfortunately no unique determination of the data type from the
22  * component itself possible, thats why both component and data type have to
23  * be initialized and are stored in a compound. The class is intended to make
24  * bookkeeping easier.
25  *
26  * @note This class is only used for the @ref alihlt_system.
27  *
28  * @ingroup alihlt_system
29  */
30 class AliHLTConsumerDescriptor : public TObject, public AliHLTLogging {
31  public:
32   /** standard constructur */
33   AliHLTConsumerDescriptor();
34   /** constructur 
35    * @param pConsumer pointer to the consumer component
36    */
37   AliHLTConsumerDescriptor(AliHLTComponent* pConsumer);
38   /** not a valid copy constructor, defined according to effective C++ style */
39   AliHLTConsumerDescriptor(const AliHLTConsumerDescriptor&);
40   /** not a valid assignment op, but defined according to effective C++ style */
41   AliHLTConsumerDescriptor& operator=(const AliHLTConsumerDescriptor&);
42   /** destructor */
43   ~AliHLTConsumerDescriptor();
44
45   /**
46    * Get the component of this descriptor.
47    * @return pointer to the component
48    */
49   AliHLTComponent* GetComponent() {return fpConsumer;}
50
51   /**
52    * Set an active data segment.
53    * the pointer will be handled in a container, no allocation, copy or
54    * cleanup.
55    * @param offset  offset of the segment in the buffer
56    * @param size    size of the segment in the buffer
57    * @return >=0 if succeeded
58    */
59   int SetActiveDataSegment(AliHLTUInt32_t offset, AliHLTUInt32_t size);
60
61   /**
62    * Check whether there is an active data segment of certain size with
63    * certain offset.
64    * @param offset  offset of the data segment in the data buffer
65    * @param size    size of the data segment in the data buffer
66    * @return > if existend, 0 if not
67    */
68   int CheckActiveDataSegment(AliHLTUInt32_t offset, AliHLTUInt32_t size);
69
70   /** find an active data segment of certain size with certain offset
71    * will see if this is necessary
72    * @param offset  offset of the data segment in the data buffer
73    * @param size    size of the data segment in the data buffer
74    * @return offset of the data segment
75    */
76   //AliHLTUInt32_t FindActiveDataSegment(AliHLTUInt32_t offset, AliHLTUInt32_t size);
77
78   /** get the number of active segments for this consumer
79    * @return number of active segments
80    */
81   int GetNofActiveSegments() {return fSegments.size();};
82
83   /**
84    */
85   int ReleaseActiveDataSegment(AliHLTUInt32_t offset, AliHLTUInt32_t size);
86
87  private:
88   /** consumer object */
89   AliHLTComponent* fpConsumer;                                     //! transient
90
91   /** list of data segments */
92   vector<AliHLTDataBuffer::AliHLTDataSegment> fSegments;           // see above
93
94   ClassDef(AliHLTConsumerDescriptor, 0)
95 };
96
97 #endif // ALIHLTDATABUFFER_H