]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTMessage.h
Residual Pileup estimation additions
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTMessage.h
index 6561b9c14f6533c3cd8979e45af95228e2755526..9934e2ba22194f9938644a8dc6b178208a65ccd5 100644 (file)
@@ -9,6 +9,14 @@
 // modifications, original revision:
 // root/net: v5-14-00 $: TMessage.h,v 1.9 2005/12/09 15:12:19 rdm
 // Author: Fons Rademakers   19/12/96
+//
+// 2009-09-01 updating to revision
+// @(#)root/net:$Id$
+// Streaming problems have been encountered, especially when streaming
+// TObjArrays. As long as there was just one member, the streaming was
+// fine. With several members, internal variables of the objects have
+// been interchanged/mixed. This bug only effected the serialization
+// part, not the restoration of the object.
 
 /*************************************************************************
  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
@@ -41,6 +49,9 @@
 #ifndef ROOT_MessageTypes
 #include "MessageTypes.h"
 #endif
+#ifndef ROOT_TBits
+#include "TBits.h"
+#endif
 
 #include "AliHLTLogging.h"
 /**
@@ -113,19 +124,30 @@ public:
 
    void SetLength() const;
 
+   void     ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force);
    void     Forward();
-   TClass  *GetClass() const { return fClass; }
+   TClass  *GetClass() const { return fClass;}
+   void     IncrementLevel(TVirtualStreamerInfo* info);
    void     Reset();
    void     Reset(UInt_t what) { SetWhat(what); Reset(); }
    UInt_t   What() const { return fWhat; }
    void     SetWhat(UInt_t what);
 
+   void     EnableSchemaEvolution(Bool_t enable = kTRUE) { fEvolution = enable; }
+   Bool_t   UsesSchemaEvolution() const { return fEvolution; }
    void     SetCompressionLevel(Int_t level = 1);
    Int_t    GetCompressionLevel() const { return fCompress; }
    Int_t    Compress();
    Int_t    Uncompress();
    char    *CompBuffer() const { return fBufComp; }
    Int_t    CompLength() const { return (Int_t)(fBufCompCur - fBufComp); }
+   void     WriteObject(const TObject *obj);
+   UShort_t WriteProcessID(TProcessID *pid);
+
+   static void   EnableSchemaEvolutionForAll(Bool_t enable = kTRUE);
+   static Bool_t UsesSchemaEvolutionForAll();
+
+   const TList* GetStreamerInfos() const {return fInfos;}
 
    /**
     * Helper function to stream an object into an AliHLTMessage
@@ -139,6 +161,12 @@ public:
     */
    static TObject* Extract(const void* pBuffer, unsigned bufferSize, unsigned verbosity=0);
 
+   /**
+    * Helper function to extract an object from  a file containing the streamed object.
+    * The returned object must be cleaned by the caller
+    */
+   static TObject* Extract(const char* filename, unsigned verbosity=0);
+
 private:
    UInt_t   fWhat;        //!Message type
    TClass  *fClass;       //!If message is kMESS_OBJECT pointer to object's class
@@ -147,6 +175,11 @@ private:
    char    *fBufCompCur;  //!Current position in compressed buffer
    char    *fCompPos;     //!Position of fBufCur when message was compressed
    char    *fBufUncompressed; //!Uncompressed buffer
+   TBits    fBitsPIDs;    //Array of bits to mark the TProcessIDs uids written to the message
+   TList   *fInfos;       //Array of TStreamerInfo used in WriteObject
+   Bool_t   fEvolution;   //True if support for schema evolution required
+
+   static Bool_t fgEvolution;  //True if global support for schema evolution required
 
    // AliHLTMessage objects cannot be copied or assigned
    AliHLTMessage(const AliHLTMessage &);           // not implemented
@@ -158,7 +191,7 @@ private:
    /** a default buffer describing an empty message */
    static UInt_t fgkDefaultBuffer[2]; //!transient
 
-   ClassDef(AliHLTMessage,1)  // Message buffer class
+   ClassDef(AliHLTMessage,2)  // Message buffer class
 };
 
 #endif // ALIHLTMESSAGE_H