ROOT logo
#ifndef ALIRAWREADERMEMORY_H
#define ALIRAWREADERMEMORY_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
///
/// This is a class for reading raw data memory.
///
///////////////////////////////////////////////////////////////////////////////

#include "AliRawReader.h"
#ifdef __CINT__
class fstream;
#else
#include <Riostream.h>
#endif
#include <vector>

using std::vector;

class AliRawReaderMemory: public AliRawReader {
  public :
    AliRawReaderMemory();
    AliRawReaderMemory(UChar_t* memory, UInt_t size);
    virtual ~AliRawReaderMemory();

    virtual void     RequireHeader(Bool_t required);

    virtual UInt_t   GetType() const {return 0;};
    virtual UInt_t   GetRunNumber() const {return 0;};
    virtual const UInt_t* GetEventId() const {return 0;};
    virtual const UInt_t* GetTriggerPattern() const {return 0;};
    virtual const UInt_t* GetDetectorPattern() const {return 0;};
    virtual const UInt_t* GetAttributes() const {return 0;};
    virtual const UInt_t* GetSubEventAttributes() const {return 0;};
    virtual UInt_t   GetLDCId() const {return 0;};
    virtual UInt_t   GetGDCId() const {return 0;};
    virtual UInt_t   GetTimestamp() const {return 0;};

    virtual Int_t    GetEquipmentSize() const;
    virtual Int_t    GetEquipmentType() const {return 0;};
    virtual Int_t    GetEquipmentId() const;
    virtual const UInt_t* GetEquipmentAttributes() const {return NULL;};
    virtual Int_t    GetEquipmentElementSize() const {return 0;};
    virtual Int_t    GetEquipmentHeaderSize() const {return 0;};

    virtual Bool_t   ReadHeader();
    virtual Bool_t   ReadNextData(UChar_t*& data);
    virtual Bool_t   ReadNext(UChar_t* data, Int_t size);

    virtual Bool_t   Reset();

    virtual Bool_t   NextEvent();
    virtual Bool_t   RewindEvents();

    virtual Bool_t   SetMemory( UChar_t* memory, ULong_t size );

    void             SetEquipmentID(Int_t id);

    Bool_t AddBuffer(UChar_t* memory, ULong_t size, Int_t equipmentId );
    void ClearBuffers();

  protected :

  private:
    class AliRRMBuffer {
    public:
      AliRRMBuffer();
      AliRRMBuffer(UChar_t* pBuffer, UInt_t bufferSize, Int_t equipmentId);
      ~AliRRMBuffer();
      AliRRMBuffer(const AliRRMBuffer& src);
      AliRRMBuffer& operator=(const AliRRMBuffer& src);

      UChar_t* GetBuffer() const {return fBuffer;}
      UInt_t GetBufferSize() const {return fBufferSize;}
      Int_t GetEquipmentId() const {return fEquipmentId;}
      void SetEquipmentId(Int_t equipmentId) {fEquipmentId=equipmentId;}
    private:
      UChar_t*         fBuffer;       //! buffer for payload
      UInt_t           fBufferSize;   //! size of fBuffer in bytes
      Int_t            fEquipmentId;  //! Equipment id
    };

    AliRawReaderMemory(const AliRawReaderMemory& rawReader);
    AliRawReaderMemory& operator = (const AliRawReaderMemory& rawReader);

    Bool_t OpenNextBuffer();

    UInt_t                          fPosition;      //! Current position in current buffer
    vector<AliRRMBuffer>            fBuffers;       //! Current buffer descriptor
    UInt_t                          fCurrent;       //! Current buffer index

    ClassDef(AliRawReaderMemory, 0) // class for reading raw digits from a memory block
};

#endif

 AliRawReaderMemory.h:1
 AliRawReaderMemory.h:2
 AliRawReaderMemory.h:3
 AliRawReaderMemory.h:4
 AliRawReaderMemory.h:5
 AliRawReaderMemory.h:6
 AliRawReaderMemory.h:7
 AliRawReaderMemory.h:8
 AliRawReaderMemory.h:9
 AliRawReaderMemory.h:10
 AliRawReaderMemory.h:11
 AliRawReaderMemory.h:12
 AliRawReaderMemory.h:13
 AliRawReaderMemory.h:14
 AliRawReaderMemory.h:15
 AliRawReaderMemory.h:16
 AliRawReaderMemory.h:17
 AliRawReaderMemory.h:18
 AliRawReaderMemory.h:19
 AliRawReaderMemory.h:20
 AliRawReaderMemory.h:21
 AliRawReaderMemory.h:22
 AliRawReaderMemory.h:23
 AliRawReaderMemory.h:24
 AliRawReaderMemory.h:25
 AliRawReaderMemory.h:26
 AliRawReaderMemory.h:27
 AliRawReaderMemory.h:28
 AliRawReaderMemory.h:29
 AliRawReaderMemory.h:30
 AliRawReaderMemory.h:31
 AliRawReaderMemory.h:32
 AliRawReaderMemory.h:33
 AliRawReaderMemory.h:34
 AliRawReaderMemory.h:35
 AliRawReaderMemory.h:36
 AliRawReaderMemory.h:37
 AliRawReaderMemory.h:38
 AliRawReaderMemory.h:39
 AliRawReaderMemory.h:40
 AliRawReaderMemory.h:41
 AliRawReaderMemory.h:42
 AliRawReaderMemory.h:43
 AliRawReaderMemory.h:44
 AliRawReaderMemory.h:45
 AliRawReaderMemory.h:46
 AliRawReaderMemory.h:47
 AliRawReaderMemory.h:48
 AliRawReaderMemory.h:49
 AliRawReaderMemory.h:50
 AliRawReaderMemory.h:51
 AliRawReaderMemory.h:52
 AliRawReaderMemory.h:53
 AliRawReaderMemory.h:54
 AliRawReaderMemory.h:55
 AliRawReaderMemory.h:56
 AliRawReaderMemory.h:57
 AliRawReaderMemory.h:58
 AliRawReaderMemory.h:59
 AliRawReaderMemory.h:60
 AliRawReaderMemory.h:61
 AliRawReaderMemory.h:62
 AliRawReaderMemory.h:63
 AliRawReaderMemory.h:64
 AliRawReaderMemory.h:65
 AliRawReaderMemory.h:66
 AliRawReaderMemory.h:67
 AliRawReaderMemory.h:68
 AliRawReaderMemory.h:69
 AliRawReaderMemory.h:70
 AliRawReaderMemory.h:71
 AliRawReaderMemory.h:72
 AliRawReaderMemory.h:73
 AliRawReaderMemory.h:74
 AliRawReaderMemory.h:75
 AliRawReaderMemory.h:76
 AliRawReaderMemory.h:77
 AliRawReaderMemory.h:78
 AliRawReaderMemory.h:79
 AliRawReaderMemory.h:80
 AliRawReaderMemory.h:81
 AliRawReaderMemory.h:82
 AliRawReaderMemory.h:83
 AliRawReaderMemory.h:84
 AliRawReaderMemory.h:85
 AliRawReaderMemory.h:86
 AliRawReaderMemory.h:87
 AliRawReaderMemory.h:88
 AliRawReaderMemory.h:89
 AliRawReaderMemory.h:90
 AliRawReaderMemory.h:91
 AliRawReaderMemory.h:92
 AliRawReaderMemory.h:93
 AliRawReaderMemory.h:94
 AliRawReaderMemory.h:95
 AliRawReaderMemory.h:96
 AliRawReaderMemory.h:97
 AliRawReaderMemory.h:98
 AliRawReaderMemory.h:99
 AliRawReaderMemory.h:100