]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLTConsumerDescriptor.h
Adding an abstract interface which provides OCDB functionality within the libHLTbase
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTConsumerDescriptor.h
CommitLineData
6235cd38 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 */
30class 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);
6235cd38 38 /** destructor */
39 ~AliHLTConsumerDescriptor();
40
41 /**
42 * Get the component of this descriptor.
43 * @return pointer to the component
44 */
45 AliHLTComponent* GetComponent() {return fpConsumer;}
46
47 /**
48 * Set an active data segment.
49 * the pointer will be handled in a container, no allocation, copy or
50 * cleanup.
b46ca65e 51 * @param segment segment descriptor
6235cd38 52 * @return >=0 if succeeded
53 */
b46ca65e 54 int SetActiveDataSegment(AliHLTDataBuffer::AliHLTDataSegment segment);
6235cd38 55
56 /**
57 * Check whether there is an active data segment of certain size with
58 * certain offset.
b46ca65e 59 * @param segment segment descriptor
6235cd38 60 * @return > if existend, 0 if not
61 */
b46ca65e 62 int CheckActiveDataSegment(AliHLTDataBuffer::AliHLTDataSegment segment);
6235cd38 63
64 /** find an active data segment of certain size with certain offset
65 * will see if this is necessary
66 * @param offset offset of the data segment in the data buffer
67 * @param size size of the data segment in the data buffer
68 * @return offset of the data segment
69 */
70 //AliHLTUInt32_t FindActiveDataSegment(AliHLTUInt32_t offset, AliHLTUInt32_t size);
71
72 /** get the number of active segments for this consumer
73 * @return number of active segments
74 */
75 int GetNofActiveSegments() {return fSegments.size();};
76
77 /**
b46ca65e 78 * @param segment segment descriptor
6235cd38 79 */
b46ca65e 80 int ReleaseActiveDataSegment(AliHLTDataBuffer::AliHLTDataSegment segment);
6235cd38 81
82 private:
b426991e 83 /** copy constructor prohibited */
84 AliHLTConsumerDescriptor(const AliHLTConsumerDescriptor&);
85 /** assignment operator prohibited */
86 AliHLTConsumerDescriptor& operator=(const AliHLTConsumerDescriptor&);
87
6235cd38 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