]>
Commit | Line | Data |
---|---|---|
4de7334f | 1 | //-*- Mode: C++ -*- |
2 | // @(#) $Id$ | |
3 | ||
4 | #ifndef ALIHLTOUTHOMERBUFFER_H | |
5 | #define ALIHLTOUTHOMERBUFFER_H | |
6 | /* This file is property of and copyright by the ALICE HLT Project * | |
7 | * ALICE Experiment at CERN, All rights reserved. * | |
8 | * See cxx source for full Copyright notice */ | |
9 | ||
10 | /** @file AliHLTOUTHomerBuffer.h | |
11 | @author Matthias Richter | |
12 | @date | |
13 | @brief HLTOUT data wrapper for a data buffer. | |
14 | ||
15 | // see below for class documentation | |
16 | // or | |
17 | // refer to README to build package | |
18 | // or | |
19 | // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt | |
20 | */ | |
21 | #include "AliHLTOUT.h" | |
22 | ||
049b43b2 | 23 | class AliHLTHOMERReader; |
24 | class AliHLTHOMERLibManager; | |
4de7334f | 25 | |
26 | /** | |
27 | * @class AliHLTOUTHomerBuffer | |
28 | * Handler of HLTOUT data for buffer input. | |
29 | */ | |
30 | class AliHLTOUTHomerBuffer : public AliHLTOUT { | |
31 | public: | |
32 | /** constructor */ | |
049b43b2 | 33 | AliHLTOUTHomerBuffer(const AliHLTUInt8_t* pBuffer, int size); |
4de7334f | 34 | /** destructor */ |
35 | virtual ~AliHLTOUTHomerBuffer(); | |
36 | ||
37 | protected: | |
049b43b2 | 38 | /** |
39 | * Step trough data blocks of a HOMER reader and generate index. | |
40 | */ | |
41 | int ScanReader(AliHLTHOMERReader* pReader, AliHLTUInt32_t majorIndex=0); | |
42 | ||
43 | /** dynamic loader manager for HOMER library */ | |
44 | AliHLTHOMERLibManager* fpManager; //!transient | |
4de7334f | 45 | |
46 | private: | |
47 | /** standard constructor prohibited */ | |
48 | AliHLTOUTHomerBuffer(); | |
49 | /** copy constructor prohibited */ | |
50 | AliHLTOUTHomerBuffer(const AliHLTOUTHomerBuffer&); | |
51 | /** assignment operator prohibited */ | |
52 | AliHLTOUTHomerBuffer& operator=(const AliHLTOUTHomerBuffer&); | |
53 | ||
54 | /** | |
55 | * Generate the index of the HLTOUT data from the data buffer. | |
56 | */ | |
57 | virtual int GenerateIndex(); | |
58 | ||
59 | /** | |
60 | * Get the data buffer | |
61 | * @param index [in] index of the block | |
62 | * @param pBuffer [out] buffer of the selected data block | |
63 | * @param size [out] size of the selected data block | |
64 | */ | |
65 | virtual int GetDataBuffer(AliHLTUInt32_t index, const AliHLTUInt8_t* &pBuffer, | |
66 | AliHLTUInt32_t& size); | |
67 | ||
049b43b2 | 68 | /** |
69 | * Check byte order of data block | |
70 | */ | |
71 | virtual AliHLTOUTByteOrder_t CheckBlockByteOrder(AliHLTUInt32_t index); | |
72 | ||
73 | /** | |
74 | * Check alignment of data block | |
75 | */ | |
76 | virtual int CheckBlockAlignment(AliHLTUInt32_t index, AliHLTOUT::AliHLTOUTDataType_t type); | |
77 | ||
4de7334f | 78 | /** data buffer */ |
79 | const AliHLTUInt8_t* fpBuffer; //! transient | |
80 | ||
049b43b2 | 81 | /** size of data buffer */ |
82 | int fSize; //! transient | |
83 | ||
4de7334f | 84 | /** instance of the HOMER reader */ |
049b43b2 | 85 | AliHLTHOMERReader* fpReader; //!transient |
4de7334f | 86 | |
87 | ClassDef(AliHLTOUTHomerBuffer, 0) | |
88 | }; | |
89 | #endif |