ROOT logo
//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTDUMPTASK_H
#define ALIHLTDUMPTASK_H
//* This file is property of and copyright by the ALICE HLT Project        * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//* See cxx source for full Copyright notice                               *

/** @file   AliHLTDumpTask.h
    @author Matthias Richter
    @date   
    @brief  Base class for data sinks with direct buffer access.
*/

#include "AliHLTOUT.h"
#include "AliHLTTask.h"

/**
 * @class AliHLTDumpTask
 * A base class for data sinks without a processing component. Tasks of this
 * type can be added at the end of the processing chain and allow direct
 * access to the data blocks produced by the last components of the chain.
 * 
 * The constructor takes the chains as a blank separated list of chain ids.
 *
 * @ingroup alihlt_system
 */
class AliHLTDumpTask : public AliHLTTask {
 public:
  /** constructor */
  AliHLTDumpTask(const char* chains=NULL);
  /** standard destructor */
  virtual ~AliHLTDumpTask();

  /**
   * Set the parent reconstruction chains this task is going to subscribe to.
   * @param chains    blank separated list of chain ids
   */
  int SetChains(const char* chains);

  /**
   * Get string of the source chains.
   */
  const char* GetSourceChains() const;

  /**
   * Get the list of data blocks.
   * Subscribe to the publishers if not yet done and return pointer
   * to block list.
   */
  const AliHLTComponentBlockDataList& GetDataBlocks();

  /**
   * Explicitly release data blocks.
   */
  int ReleaseDataBlocks();

 protected:

 private:
  /** copy constructor prohibited */
  AliHLTDumpTask(const AliHLTDumpTask&);
  /** assignment operator prohibited */
  AliHLTDumpTask& operator=(const AliHLTDumpTask&);

  /**
   * Custom initialization for child tasks.
   * Create and init the dummy task.
   */
  int CustomInit(AliHLTComponentHandler* pCH);

  /**
   * Custom clean up for child tasks.
   */
  int CustomCleanup();

  /** a dummy task to pretend existence of a consumer */
  AliHLTTask* fpDummyTask; //!transient

  /** the configuration for the dummy task */
  AliHLTConfiguration* fpDummyConfiguration; //!transient

  /** list of block descriptors of the output */
  AliHLTComponentBlockDataList fBlocks;

  ClassDef(AliHLTDumpTask, 0)
};
#endif
 AliHLTDumpTask.h:1
 AliHLTDumpTask.h:2
 AliHLTDumpTask.h:3
 AliHLTDumpTask.h:4
 AliHLTDumpTask.h:5
 AliHLTDumpTask.h:6
 AliHLTDumpTask.h:7
 AliHLTDumpTask.h:8
 AliHLTDumpTask.h:9
 AliHLTDumpTask.h:10
 AliHLTDumpTask.h:11
 AliHLTDumpTask.h:12
 AliHLTDumpTask.h:13
 AliHLTDumpTask.h:14
 AliHLTDumpTask.h:15
 AliHLTDumpTask.h:16
 AliHLTDumpTask.h:17
 AliHLTDumpTask.h:18
 AliHLTDumpTask.h:19
 AliHLTDumpTask.h:20
 AliHLTDumpTask.h:21
 AliHLTDumpTask.h:22
 AliHLTDumpTask.h:23
 AliHLTDumpTask.h:24
 AliHLTDumpTask.h:25
 AliHLTDumpTask.h:26
 AliHLTDumpTask.h:27
 AliHLTDumpTask.h:28
 AliHLTDumpTask.h:29
 AliHLTDumpTask.h:30
 AliHLTDumpTask.h:31
 AliHLTDumpTask.h:32
 AliHLTDumpTask.h:33
 AliHLTDumpTask.h:34
 AliHLTDumpTask.h:35
 AliHLTDumpTask.h:36
 AliHLTDumpTask.h:37
 AliHLTDumpTask.h:38
 AliHLTDumpTask.h:39
 AliHLTDumpTask.h:40
 AliHLTDumpTask.h:41
 AliHLTDumpTask.h:42
 AliHLTDumpTask.h:43
 AliHLTDumpTask.h:44
 AliHLTDumpTask.h:45
 AliHLTDumpTask.h:46
 AliHLTDumpTask.h:47
 AliHLTDumpTask.h:48
 AliHLTDumpTask.h:49
 AliHLTDumpTask.h:50
 AliHLTDumpTask.h:51
 AliHLTDumpTask.h:52
 AliHLTDumpTask.h:53
 AliHLTDumpTask.h:54
 AliHLTDumpTask.h:55
 AliHLTDumpTask.h:56
 AliHLTDumpTask.h:57
 AliHLTDumpTask.h:58
 AliHLTDumpTask.h:59
 AliHLTDumpTask.h:60
 AliHLTDumpTask.h:61
 AliHLTDumpTask.h:62
 AliHLTDumpTask.h:63
 AliHLTDumpTask.h:64
 AliHLTDumpTask.h:65
 AliHLTDumpTask.h:66
 AliHLTDumpTask.h:67
 AliHLTDumpTask.h:68
 AliHLTDumpTask.h:69
 AliHLTDumpTask.h:70
 AliHLTDumpTask.h:71
 AliHLTDumpTask.h:72
 AliHLTDumpTask.h:73
 AliHLTDumpTask.h:74
 AliHLTDumpTask.h:75
 AliHLTDumpTask.h:76
 AliHLTDumpTask.h:77
 AliHLTDumpTask.h:78
 AliHLTDumpTask.h:79
 AliHLTDumpTask.h:80
 AliHLTDumpTask.h:81
 AliHLTDumpTask.h:82
 AliHLTDumpTask.h:83
 AliHLTDumpTask.h:84
 AliHLTDumpTask.h:85
 AliHLTDumpTask.h:86
 AliHLTDumpTask.h:87
 AliHLTDumpTask.h:88