ROOT logo
// $Id$

//**************************************************************************
//* This file is property of and copyright by the                          * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
//*                  for The ALICE HLT Project.                            *
//*                                                                        *
//* Permission to use, copy, modify and distribute this software and its   *
//* documentation strictly for non-commercial purposes is hereby granted   *
//* without fee, provided that the above copyright notice appears in all   *
//* copies and that both the copyright notice and this permission notice   *
//* appear in the supporting documentation. The authors make no claims     *
//* about the suitability of this software for any purpose. It is          *
//* provided "as is" without express or implied warranty.                  *
//**************************************************************************

/// @file   AliHLTDataSource.cxx
/// @author Matthias Richter
/// @date   
/// @brief  Base class implementation for HLT data source components.
///

#include "AliHLTDataSource.h"

/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTDataSource)

AliHLTDataSource::AliHLTDataSource()
{
  // Base class of HLT data source components.
  // The class provides a common interface for the implementation of HLT data
  // source components.
  // Source components do not consume any input consequently the processing
  // function is called 'GetEvent'.
}

AliHLTDataSource::~AliHLTDataSource()
{ 
  // destructor
}

void AliHLTDataSource::GetInputDataTypes( AliHLTComponentDataTypeList& list)
{
  // default method as source components do not consume input
  list.clear(); // there are no input data types
}


int AliHLTDataSource::DoProcessing( const AliHLTComponentEventData& evtData,
				    const AliHLTComponentBlockData* blocks, 
				    AliHLTComponentTriggerData& trigData,
				    AliHLTUInt8_t* outputPtr, 
				    AliHLTUInt32_t& size,
				    AliHLTComponentBlockDataList& outputBlocks,
				    AliHLTComponentEventDoneData*& edd )
{
  // Processing method, calls child's GetEvent
  int iResult=0;
  if (evtData.fBlockCnt > 0) {
    int unknown=-1;
    for (unsigned int block=0; block<evtData.fBlockCnt; block++) {
      if (blocks[block].fDataType==kAliHLTDataTypeSOR ||
	  blocks[block].fDataType==kAliHLTDataTypeEOR ||
	  blocks[block].fDataType==kAliHLTDataTypeEvent ||
	  blocks[block].fDataType==kAliHLTDataTypeRunType ||
	  blocks[block].fDataType==kAliHLTDataTypeComponentStatistics ||
	  blocks[block].fDataType==kAliHLTDataTypeComponentTable ||
	  blocks[block].fDataType==kAliHLTDataTypeECSParam) {
	continue;
      }
      unknown=block;
      break;
    }
    static int warningCount=0;
    if (unknown>=0 && warningCount++<5) {
      HLTWarning("Data source component skips input data blocks: first unknown block %s",
		 DataType2Text(blocks[unknown].fDataType).c_str());
    }
  }
  iResult=GetEvent(evtData, trigData, outputPtr, size, outputBlocks);
  HLTDebug("component %s (%p) GetEvent finished (%d)", GetComponentID(), this, iResult);
  edd = NULL;
  return iResult;
}

int AliHLTDataSource::GetEvent( const AliHLTComponentEventData& evtData,
				AliHLTComponentTriggerData& trigData,
				AliHLTUInt8_t* /*outputPtr*/, 
				AliHLTUInt32_t& size,
				AliHLTComponentBlockDataList& /*outputBlocks*/ )
{
  // we just forward to the high level method, all other parameters already
  // have been stored internally
  size=0;
  return GetEvent(evtData, trigData);
}

int AliHLTDataSource::GetEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/)
{
  // default method: one of GetEvent methods must be implemented
  HLTFatal("no processing method implemented");
  return -ENOSYS;
}
 AliHLTDataSource.cxx:1
 AliHLTDataSource.cxx:2
 AliHLTDataSource.cxx:3
 AliHLTDataSource.cxx:4
 AliHLTDataSource.cxx:5
 AliHLTDataSource.cxx:6
 AliHLTDataSource.cxx:7
 AliHLTDataSource.cxx:8
 AliHLTDataSource.cxx:9
 AliHLTDataSource.cxx:10
 AliHLTDataSource.cxx:11
 AliHLTDataSource.cxx:12
 AliHLTDataSource.cxx:13
 AliHLTDataSource.cxx:14
 AliHLTDataSource.cxx:15
 AliHLTDataSource.cxx:16
 AliHLTDataSource.cxx:17
 AliHLTDataSource.cxx:18
 AliHLTDataSource.cxx:19
 AliHLTDataSource.cxx:20
 AliHLTDataSource.cxx:21
 AliHLTDataSource.cxx:22
 AliHLTDataSource.cxx:23
 AliHLTDataSource.cxx:24
 AliHLTDataSource.cxx:25
 AliHLTDataSource.cxx:26
 AliHLTDataSource.cxx:27
 AliHLTDataSource.cxx:28
 AliHLTDataSource.cxx:29
 AliHLTDataSource.cxx:30
 AliHLTDataSource.cxx:31
 AliHLTDataSource.cxx:32
 AliHLTDataSource.cxx:33
 AliHLTDataSource.cxx:34
 AliHLTDataSource.cxx:35
 AliHLTDataSource.cxx:36
 AliHLTDataSource.cxx:37
 AliHLTDataSource.cxx:38
 AliHLTDataSource.cxx:39
 AliHLTDataSource.cxx:40
 AliHLTDataSource.cxx:41
 AliHLTDataSource.cxx:42
 AliHLTDataSource.cxx:43
 AliHLTDataSource.cxx:44
 AliHLTDataSource.cxx:45
 AliHLTDataSource.cxx:46
 AliHLTDataSource.cxx:47
 AliHLTDataSource.cxx:48
 AliHLTDataSource.cxx:49
 AliHLTDataSource.cxx:50
 AliHLTDataSource.cxx:51
 AliHLTDataSource.cxx:52
 AliHLTDataSource.cxx:53
 AliHLTDataSource.cxx:54
 AliHLTDataSource.cxx:55
 AliHLTDataSource.cxx:56
 AliHLTDataSource.cxx:57
 AliHLTDataSource.cxx:58
 AliHLTDataSource.cxx:59
 AliHLTDataSource.cxx:60
 AliHLTDataSource.cxx:61
 AliHLTDataSource.cxx:62
 AliHLTDataSource.cxx:63
 AliHLTDataSource.cxx:64
 AliHLTDataSource.cxx:65
 AliHLTDataSource.cxx:66
 AliHLTDataSource.cxx:67
 AliHLTDataSource.cxx:68
 AliHLTDataSource.cxx:69
 AliHLTDataSource.cxx:70
 AliHLTDataSource.cxx:71
 AliHLTDataSource.cxx:72
 AliHLTDataSource.cxx:73
 AliHLTDataSource.cxx:74
 AliHLTDataSource.cxx:75
 AliHLTDataSource.cxx:76
 AliHLTDataSource.cxx:77
 AliHLTDataSource.cxx:78
 AliHLTDataSource.cxx:79
 AliHLTDataSource.cxx:80
 AliHLTDataSource.cxx:81
 AliHLTDataSource.cxx:82
 AliHLTDataSource.cxx:83
 AliHLTDataSource.cxx:84
 AliHLTDataSource.cxx:85
 AliHLTDataSource.cxx:86
 AliHLTDataSource.cxx:87
 AliHLTDataSource.cxx:88
 AliHLTDataSource.cxx:89
 AliHLTDataSource.cxx:90
 AliHLTDataSource.cxx:91
 AliHLTDataSource.cxx:92
 AliHLTDataSource.cxx:93
 AliHLTDataSource.cxx:94
 AliHLTDataSource.cxx:95
 AliHLTDataSource.cxx:96
 AliHLTDataSource.cxx:97
 AliHLTDataSource.cxx:98
 AliHLTDataSource.cxx:99
 AliHLTDataSource.cxx:100
 AliHLTDataSource.cxx:101
 AliHLTDataSource.cxx:102
 AliHLTDataSource.cxx:103
 AliHLTDataSource.cxx:104
 AliHLTDataSource.cxx:105