Line data Source code
1 : #ifndef ALIRAWREADERMEMORY_H
2 : #define ALIRAWREADERMEMORY_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id$ */
7 :
8 : ///////////////////////////////////////////////////////////////////////////////
9 : ///
10 : /// This is a class for reading raw data memory.
11 : ///
12 : ///////////////////////////////////////////////////////////////////////////////
13 :
14 : #include "AliRawReader.h"
15 : #include <vector>
16 :
17 : using std::vector;
18 :
19 : class AliRawReaderMemory: public AliRawReader {
20 : public :
21 : AliRawReaderMemory();
22 : AliRawReaderMemory(UChar_t* memory, UInt_t size);
23 : virtual ~AliRawReaderMemory();
24 :
25 : virtual void RequireHeader(Bool_t required);
26 :
27 0 : virtual UInt_t GetType() const {return 0;};
28 0 : virtual UInt_t GetRunNumber() const {return 0;};
29 0 : virtual const UInt_t* GetEventId() const {return 0;};
30 0 : virtual const UInt_t* GetTriggerPattern() const {return 0;};
31 0 : virtual const UInt_t* GetDetectorPattern() const {return 0;};
32 0 : virtual const UInt_t* GetAttributes() const {return 0;};
33 0 : virtual const UInt_t* GetSubEventAttributes() const {return 0;};
34 0 : virtual UInt_t GetLDCId() const {return 0;};
35 0 : virtual UInt_t GetGDCId() const {return 0;};
36 0 : virtual UInt_t GetTimestamp() const {return 0;};
37 :
38 : virtual Int_t GetEquipmentSize() const;
39 0 : virtual Int_t GetEquipmentType() const {return 0;};
40 : virtual Int_t GetEquipmentId() const;
41 0 : virtual const UInt_t* GetEquipmentAttributes() const {return NULL;};
42 0 : virtual Int_t GetEquipmentElementSize() const {return 0;};
43 0 : virtual Int_t GetEquipmentHeaderSize() const {return 0;};
44 :
45 : virtual Bool_t ReadHeader();
46 : virtual Bool_t ReadNextData(UChar_t*& data);
47 : virtual Bool_t ReadNext(UChar_t* data, Int_t size);
48 :
49 : virtual Bool_t Reset();
50 :
51 : virtual Bool_t NextEvent();
52 : virtual Bool_t RewindEvents();
53 :
54 : virtual Bool_t SetMemory( UChar_t* memory, ULong_t size );
55 :
56 : void SetEquipmentID(Int_t id);
57 :
58 : Bool_t AddBuffer(UChar_t* memory, ULong_t size, Int_t equipmentId );
59 : void ClearBuffers();
60 :
61 : protected :
62 :
63 : private:
64 : class AliRRMBuffer {
65 : public:
66 : AliRRMBuffer();
67 : AliRRMBuffer(UChar_t* pBuffer, UInt_t bufferSize, Int_t equipmentId);
68 : ~AliRRMBuffer();
69 : AliRRMBuffer(const AliRRMBuffer& src);
70 : AliRRMBuffer& operator=(const AliRRMBuffer& src);
71 :
72 0 : UChar_t* GetBuffer() const {return fBuffer;}
73 0 : UInt_t GetBufferSize() const {return fBufferSize;}
74 0 : Int_t GetEquipmentId() const {return fEquipmentId;}
75 0 : void SetEquipmentId(Int_t equipmentId) {fEquipmentId=equipmentId;}
76 : private:
77 : UChar_t* fBuffer; //! buffer for payload
78 : UInt_t fBufferSize; //! size of fBuffer in bytes
79 : Int_t fEquipmentId; //! Equipment id
80 : };
81 :
82 : AliRawReaderMemory(const AliRawReaderMemory& rawReader);
83 : AliRawReaderMemory& operator = (const AliRawReaderMemory& rawReader);
84 :
85 : Bool_t OpenNextBuffer();
86 :
87 : UInt_t fPosition; //! Current position in current buffer
88 : vector<AliRRMBuffer> fBuffers; //! Current buffer descriptor
89 : UInt_t fCurrent; //! Current buffer index
90 :
91 128 : ClassDef(AliRawReaderMemory, 0) // class for reading raw digits from a memory block
92 : };
93 :
94 : #endif
95 :
|