Line data Source code
1 : // -*- Mode: C++ -*-
2 : // $Id$
3 :
4 : #ifndef ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
5 : #define ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
6 : //* This file is property of and copyright by the ALICE HLT Project *
7 : //* ALICE Experiment at CERN, All rights reserved. *
8 : //* See cxx source for full Copyright notice *
9 :
10 : /// @file AliHLTObjectCompressionComponent.h
11 : /// @author Matthias Richter
12 : /// @date 2010-11-09
13 : /// @brief
14 : ///
15 :
16 : #include "AliHLTProcessor.h"
17 :
18 : /**
19 : * @class AliHLTObjectCompressionComponent
20 : * Component for compression of TObjects with a different compression level.
21 : * The level is adjusted by the common AliHLTComponent @ref alihlt_component_arguments.
22 : *
23 : * <h2>General properties:</h2>
24 : *
25 : * Component ID: \b TObjectCompressor <br>
26 : * Library: \b libAliHLTUtil.so <br>
27 : * Input Data Types: kAliHLTAnyDataType <br>
28 : * Output Data Types: according to input blocks <br>
29 : *
30 : * <h2>Mandatory arguments:</h2>
31 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
32 : *
33 : * <h2>Optional arguments:</h2>
34 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
35 : * \li -object-compression=level <br>
36 : *
37 : *
38 : * <h2>Configuration:</h2>
39 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40 : * Configuration by component arguments.
41 : *
42 : * <h2>Default CDB entries:</h2>
43 : * The component loads no CDB entries.
44 : *
45 : * <h2>Performance:</h2>
46 : * Low profile: input objects are unpacked and binary copied, no streaming
47 : * of obejcts.
48 : *
49 : * <h2>Memory consnumption:</h2>
50 : * The component allocates memory of the maximum size for every input
51 : * object.
52 : *
53 : * <h2>Output size:</h2>
54 : *
55 : * @ingroup alihlt_util_components
56 : */
57 : class AliHLTObjectCompressionComponent : public AliHLTProcessor
58 : {
59 : public:
60 : /// standard constructor
61 : AliHLTObjectCompressionComponent();
62 : /// destructor
63 : virtual ~AliHLTObjectCompressionComponent();
64 :
65 : /// inherited from AliHLTComponent, get component id
66 576 : virtual const char* GetComponentID() {return "TObjectCompressor";};
67 :
68 : /// inherited from AliHLTComponent, get the input data type
69 : void GetInputDataTypes( AliHLTComponentDataTypeList& );
70 :
71 : /// inherited from AliHLTComponent, get the output data type
72 : AliHLTComponentDataType GetOutputDataType();
73 :
74 : /// inherited from AliHLTComponent, get the output data size estimator
75 : void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
76 :
77 : /// inherited from AliHLTComponent, create a component
78 0 : virtual AliHLTComponent* Spawn() {return new AliHLTObjectCompressionComponent;}
79 :
80 : protected:
81 :
82 : /// inherited from AliHLTProcessor, data processing
83 : int DoEvent( const AliHLTComponentEventData& evtData,
84 : AliHLTComponentTriggerData& trigData );
85 :
86 : using AliHLTProcessor::DoEvent;
87 :
88 : /// inherited from AliHLTComponent, component initialisation
89 : int DoInit( int argc, const char** argv );
90 :
91 : /// inherited from AliHLTComponent, scan argument
92 : int ScanConfigurationArgument(int argc, const char** argv);
93 :
94 : /// inherited from AliHLTComponent, component cleanup.
95 : int DoDeinit();
96 :
97 : private:
98 : /// copy constructor prohibited
99 : AliHLTObjectCompressionComponent(const AliHLTObjectCompressionComponent&);
100 : /// assignment operator prohibited
101 : AliHLTObjectCompressionComponent& operator=(const AliHLTObjectCompressionComponent&);
102 :
103 8 : ClassDef(AliHLTObjectCompressionComponent, 0)
104 : };
105 : #endif
|