| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

ConversionSvc.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_CONVERSIONSVC_H
2 #define GAUDIKERNEL_CONVERSIONSVC_H 1
3
4 // Include files
5 #include <vector>
6 #include <algorithm>
7 #include <functional>
8 #include "GaudiKernel/Kernel.h"
9 #include "GaudiKernel/Service.h"
10 #include "GaudiKernel/IConversionSvc.h"
11 #include "GaudiKernel/IAddressCreator.h"
12 #include "GaudiKernel/IDataProviderSvc.h"
13
14
46 class GAUDI_API ConversionSvc: public extends<Service,
47 IConversionSvc,
48 IAddressCreator>
49 {
50 public:
51 class WorkerEntry final {
52 private:
53 CLID m_class;
54 IConverter* m_converter;
55 public:
56 WorkerEntry(const CLID& cl, IConverter* cnv)
57 : m_class(cl), m_converter(cnv) {
58 }
59 WorkerEntry(const WorkerEntry& copy)
60 : m_class(copy.m_class), m_converter(copy.m_converter) {
61 }
62 WorkerEntry& operator = (const WorkerEntry& copy) {
63 m_class = copy.m_class;
64 m_converter = copy.m_converter;
65 return *this;
66 }
67 IConverter* converter() {
68 return m_converter;
69 }
70 const CLID& clID() const {
71 return m_class;
72 }
73 };
74
75 class CnvTest : public std::unary_function<WorkerEntry, bool> {
76 private:
77 const CLID m_test;
78 public:
79 CnvTest(const CLID& test) : m_test(test) {
80 }
81 bool operator()( const WorkerEntry& testee ) const {
82 return m_test == testee.clID();
83 }
84 };
85
86 public:
87
89 virtual StatusCode initialize();
90
92 virtual StatusCode finalize();
93
95 virtual long repSvcType() const;
96
98 const CLID& objType() const;
99
104 virtual StatusCode setDataProvider(IDataProviderSvc* pService);
105
109 virtual SmartIF<IDataProviderSvc>& dataProvider() const;
110
112 virtual StatusCode setConversionSvc(IConversionSvc* svc);
113
115 virtual SmartIF<IConversionSvc>& conversionSvc() const;
116
118 virtual StatusCode setAddressCreator(IAddressCreator* creator);
119
121 virtual SmartIF<IAddressCreator>& addressCreator() const;
122
124 virtual StatusCode createObj(IOpaqueAddress* pAddress,DataObject*& refpObject);
125
127 virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
128
130 virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* refpObject);
131
133 virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
134
136 virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress);
137
139 virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject);
140
142 virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
143
145 virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
146
148 virtual StatusCode addConverter(const CLID& clid);
149
151 virtual StatusCode addConverter(IConverter* pConverter);
152
154 virtual StatusCode removeConverter(const CLID& clid);
155
157 virtual IConverter* converter(const CLID& wanted);
158
160 virtual StatusCode connectOutput(const std::string& outputFile,
161 const std::string& openMode);
162
164 virtual StatusCode connectOutput(const std::string& output);
165
167 virtual StatusCode commitOutput(const std::string& output, bool do_commit);
168
170 virtual StatusCode createAddress( long svc_type,
171 const CLID& clid,
172 const std::string* par,
173 const unsigned long* ip,
174 IOpaqueAddress*& refpAddress);
175
177 virtual StatusCode convertAddress( const IOpaqueAddress* pAddress,
178 std::string& refAddress);
179
181 virtual StatusCode createAddress( long svc_type,
182 const CLID& clid,
183 const std::string& refAddress,
184 IOpaqueAddress*& refpAddress);
185
187 virtual StatusCode updateServiceState(IOpaqueAddress* pAddress);
188
190 ConversionSvc(const std::string& name, ISvcLocator* svc, long type);
191
192 protected:
194 virtual ~ConversionSvc();
195
197 virtual IConverter* createConverter(long typ, const CLID& clid, const ICnvFactory* fac);
198
200 virtual StatusCode configureConverter(long typ, const CLID& clid, IConverter* cnv);
201
203 virtual StatusCode initializeConverter(long typ, const CLID& clid, IConverter* cnv);
204
206 virtual StatusCode activateConverter(long typ, const CLID& clid, IConverter* cnv);
207
209 virtual void loadConverter(DataObject* pObject);
210
212 virtual SmartIF<IAddressCreator>& addressCreator() {
213 return m_addressCreator;
214 }
215
216 protected:
217 StatusCode makeCall( int typ,
218 bool ignore_add,
219 bool ignore_obj,
220 bool update,
221 IOpaqueAddress*& pAddress,
222 DataObject*& pObject);
223
225 mutable SmartIF<IDataProviderSvc> m_dataSvc;
227 mutable SmartIF<IAddressCreator> m_addressCreator;
229 mutable SmartIF<IConversionSvc> m_cnvSvc;
231 long m_type;
233 std::vector<WorkerEntry> m_workers;
234
235 private:
237 ConversionSvc(const ConversionSvc&);
239 ConversionSvc& operator= (const ConversionSvc&);
240 };
241 #endif // GAUDIKERNEL_CONVERSIONSVC_H
ConversionSvc::WorkerEntry::converter
IConverter * converter()
Definition: ConversionSvc.h:67
SmartIF< IDataProviderSvc >
Kernel.h
ConversionSvc::addressCreator
virtual SmartIF< IAddressCreator > & addressCreator()
Retrieve address creation interface.
Definition: ConversionSvc.h:212
AnalysisTest.initialize
def initialize()
Definition: AnalysisTest.py:12
ISvcLocator
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
IConverter
The data converters are responsible to translate data from one representation into another...
Definition: IConverter.h:57
ConversionSvc::CnvTest
Definition: ConversionSvc.h:75
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
IConversionSvc
Definition: IConversionSvc.h:37
IAddressCreator
IAddressCreator interface definition.
Definition: IAddressCreator.h:28
ConversionSvc::WorkerEntry::clID
const CLID & clID() const
Definition: ConversionSvc.h:70
ConversionSvc::WorkerEntry
Definition: ConversionSvc.h:51
ConversionSvc::m_addressCreator
SmartIF< IAddressCreator > m_addressCreator
Pointer to the address creation service interface.
Definition: ConversionSvc.h:227
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:45
std::string
STL class.
Service.h
ConversionSvc::WorkerEntry::m_class
CLID m_class
Definition: ConversionSvc.h:53
ConversionSvc::CnvTest::m_test
const CLID m_test
Definition: ConversionSvc.h:77
compareOutputFiles.par
string par
Definition: compareOutputFiles.py:386
IDataProviderSvc.h
gaudirun.type
string type
Definition: gaudirun.py:151
compareRootHistos.test
string test
Definition: compareRootHistos.py:15
ConversionSvc::WorkerEntry::WorkerEntry
WorkerEntry(const WorkerEntry &copy)
Definition: ConversionSvc.h:59
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
ConversionSvc::CnvTest::operator()
bool operator()(const WorkerEntry &testee) const
Definition: ConversionSvc.h:81
ConversionSvc::WorkerEntry::WorkerEntry
WorkerEntry(const CLID &cl, IConverter *cnv)
Definition: ConversionSvc.h:56
CLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
ConversionSvc::CnvTest::CnvTest
CnvTest(const CLID &test)
Definition: ConversionSvc.h:79
ConversionSvc::m_dataSvc
SmartIF< IDataProviderSvc > m_dataSvc
Pointer to data provider service.
Definition: ConversionSvc.h:225
install.update
def update
Definition: install.py:213
std::vector
STL class.
IAddressCreator.h
IConversionSvc.h
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
ConversionSvc::m_cnvSvc
SmartIF< IConversionSvc > m_cnvSvc
Pointer to the IConversionSvc interface of this.
Definition: ConversionSvc.h:229
ConversionSvc::m_type
long m_type
Conversion service type.
Definition: ConversionSvc.h:231
std::unary_function
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
ConversionSvc
Base class for all conversion services.
Definition: ConversionSvc.h:46
ConversionSvc::m_workers
std::vector< WorkerEntry > m_workers
List of conversion workers.
Definition: ConversionSvc.h:233
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:107
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
ConversionSvc::WorkerEntry::m_converter
IConverter * m_converter
Definition: ConversionSvc.h:54