3 #ifndef ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
4 #define ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
8 /** @file AliHLT_C_Component_WrapperInterface.h
9 @author Matthias Richter, Timm Steinbeck
11 @brief Pure C interface to the AliRoot HLT component handler
12 @note Utilized by the HLT Online (PubSub) framework
16 * @defgroup alihlt_wrapper_interface The HLT wrapper interface
17 * The wrapper interface is a pure C interface which allows to use the
18 * analysis components in external applications. The interface is utilized
19 * to bind the analysis code to the PubSub framework.
21 * \image html PubSub_WrapperComponent.png "Wrapper interface"
23 * CDB handling: The interface initializes the CDB from the path found
24 * in the environment variable ALIHLT_HCDBDIR. Default path is
25 * <tt>$ALICE_ROOT</tt>.
28 #include <AliHLTDataTypes.h>
30 * The names have been changed for Aliroot's coding conventions sake
31 * The old names are defined for backward compatibility with the
32 * PublisherSubscriber framework
34 typedef AliHLTComponentLogSeverity AliHLTComponent_LogSeverity;
35 typedef AliHLTComponentEventData AliHLTComponent_EventData;
36 typedef AliHLTComponentShmData AliHLTComponent_ShmData;
37 typedef AliHLTComponentDataType AliHLTComponent_DataType;
38 typedef AliHLTComponentBlockData AliHLTComponent_BlockData;
39 typedef AliHLTComponentTriggerData AliHLTComponent_TriggerData;
40 typedef AliHLTComponentEventDoneData AliHLTComponent_EventDoneData;
41 const AliHLTUInt32_t gkAliHLTComponent_InvalidShmType = gkAliHLTComponentInvalidShmType;
42 const AliHLTUInt64_t gkAliHLTComponent_InvalidShmID = gkAliHLTComponentInvalidShmID;
50 * @ingroup alihlt_wrapper_interface
52 typedef void* AliHLTComponentHandle;
56 * @ingroup alihlt_wrapper_interface
58 const AliHLTComponentHandle kEmptyHLTComponentHandle = 0;
62 * @ingroup alihlt_wrapper_interface
64 int AliHLT_C_Component_InitSystem( AliHLTComponentEnvironment* environ );
68 * @ingroup alihlt_wrapper_interface
70 int AliHLT_C_Component_DeinitSystem();
74 * @ingroup alihlt_wrapper_interface
76 int AliHLT_C_Component_LoadLibrary( const char* libraryPath );
80 * @ingroup alihlt_wrapper_interface
82 int AliHLT_C_Component_UnloadLibrary( const char* libraryPath );
86 * @ingroup alihlt_wrapper_interface
88 int AliHLT_C_CreateComponent( const char* componentType, void* environ_param, int argc, const char** argv, AliHLTComponentHandle* handle );
92 * @ingroup alihlt_wrapper_interface
94 void AliHLT_C_DestroyComponent( AliHLTComponentHandle );
98 * @ingroup alihlt_wrapper_interface
100 int AliHLT_C_ProcessEvent( AliHLTComponentHandle handle, const AliHLTComponent_EventData* evtData, const AliHLTComponent_BlockData* blocks,
101 AliHLTComponent_TriggerData* trigData, AliHLTUInt8_t* outputPtr,
102 AliHLTUInt32_t* size, AliHLTUInt32_t* outputBlockCnt,
103 AliHLTComponent_BlockData** outputBlocks,
104 AliHLTComponent_EventDoneData** edd );
108 * @ingroup alihlt_wrapper_interface
110 int AliHLT_C_GetOutputDataType( AliHLTComponentHandle, AliHLTComponent_DataType* dataType );
114 * @ingroup alihlt_wrapper_interface
116 int AliHLT_C_GetOutputSize( AliHLTComponentHandle, unsigned long* constBase, double* inputMultiplier );
122 #endif //ALIHLT_C_COMPONENT_WARAPPERINTERFACE_H