]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTDataSource.h
implementation of SOR and EOR events (not yet enabled), bugfix in DataBuffer: data...
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTDataSource.h
index 2c7ff5c50430f6f258d64cd6c29355ea53c34300..3dc2ae26102b0e2a19f5ec06559a4171ff73c3e8 100644 (file)
@@ -73,7 +73,25 @@ class AliHLTDataSource : public AliHLTComponent {
    */
   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
 
- protected:
+  /**
+   * @class AliSpecialEventGuard
+   * Guard structure to set the data sources into 'special event publishing'
+   * mode. The SOR and EOR events are generated by all the data sources and
+   * perculated through the chain as normal events. The AliSpecialEventGuard
+   * is a back-door mechansim to trigger publishing of the special event
+   * described by the run descriptor instead of the publishing of real data.
+   *
+   * The descriptor has to be valid throughout the lifetime of the guard.
+   */
+  class AliSpecialEventGuard {
+  public:
+    /** constructor, set run descriptor */
+    AliSpecialEventGuard(AliHLTRunDesc* pDesc, AliHLTComponentDataType dt, AliHLTUInt32_t spec);
+    /** destructor, reset run descriptor */
+    ~AliSpecialEventGuard();
+  };
+
+protected:
 
   /**
    * The low-level data processing method for the component.
@@ -103,6 +121,16 @@ class AliHLTDataSource : public AliHLTComponent {
    */
   virtual int GetEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
 
-  ClassDef(AliHLTDataSource, 1)
+private:
+  /** pointer to the special event going to be published */
+  static void* fgpSpecialEvent; //! transient
+  /** data size of the special event going to be published */
+  static int fgSpecialEventSize; //! transient
+  /** data type of the special event going to be published */
+  static AliHLTComponentDataType fgSpecialEventDataType; //! transient
+  /** data specification of the special event going to be published */
+  static AliHLTUInt32_t fgSpecialEventSpecification; //! transient
+
+  ClassDef(AliHLTDataSource, 2)
 };
 #endif