| The Gaudi Framework v28r2-patches (bc4ad17a)

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

- File List
- File Members

ConversionSvc.cpp
Go to the documentation of this file.
1 #define GAUDIKERNEL_CONVERSIONSVC_CPP
2
3 #include "GaudiKernel/MsgStream.h"
4 #include "GaudiKernel/DataObject.h"
5 #include "GaudiKernel/System.h"
6 #include "GaudiKernel/IConverter.h"
7 #include "GaudiKernel/IDataProviderSvc.h"
8 #include "GaudiKernel/IOpaqueAddress.h"
9 #include "GaudiKernel/ConversionSvc.h"
10 #include "GaudiKernel/Converter.h"
11
12 enum CnvSvcAction {
13 CREATE_OBJ,
14 FILL_OBJ_REFS,
15 UPDATE_OBJ,
16 UPDATE_OBJ_REFS,
17 CREATE_REP,
18 FILL_REP_REFS,
19 UPDATE_REP,
20 UPDATE_REP_REFS
21 };
22
23 StatusCode ConversionSvc::makeCall(int typ,
24 bool ignore_add,
25 bool ignore_obj,
26 bool update,
27 IOpaqueAddress*& pAddress,
28 DataObject*& pObject) {
29 if ( pAddress || ignore_add ) {
30 if ( pObject || ignore_obj ) {
31 const CLID& obj_class =
32 ( pObject && !ignore_obj) ? pObject->clID()
33 : ( pAddress && !ignore_add)
34 ? pAddress->clID()
35 : CLID_NULL;
36 IConverter* cnv = converter(obj_class);
37 if ( !cnv && pObject ) {
38 //Give it a try to autoload the class (dictionary) for which the converter is needed
39 loadConverter( pObject);
40 cnv = converter(obj_class);
41 }
42
43 StatusCode status(StatusCode::FAILURE,true);
44 if ( cnv ) {
45 switch(typ) {
46 case CREATE_OBJ:
47 pObject = nullptr;
48 status = cnv->createObj(pAddress, pObject);
49 break;
50 case FILL_OBJ_REFS:
51 status = cnv->fillObjRefs(pAddress, pObject);
52 break;
53 case UPDATE_OBJ:
54 status = cnv->updateObj(pAddress, pObject);
55 break;
56 case UPDATE_OBJ_REFS:
57 status = cnv->updateObjRefs(pAddress, pObject);
58 break;
59 case CREATE_REP:
60 pAddress = nullptr;
61 status = cnv->createRep(pObject, pAddress);
62 break;
63 case FILL_REP_REFS:
64 status = cnv->fillRepRefs(pAddress, pObject);
65 break;
66 case UPDATE_REP:
67 status = cnv->updateRep(pAddress, pObject);
68 break;
69 case UPDATE_REP_REFS:
70 status = cnv->updateRepRefs(pAddress, pObject);
71 break;
72 default:
73 status = StatusCode::FAILURE;
74 break;
75 }
76 if ( status.isSuccess() && update ) {
77 status = updateServiceState(pAddress);
78 }
79 return status;
80 }
81 status.ignore();
82 info() << "No converter for object ";
83 if ( pObject ) {
84 msgStream() << System::typeinfoName(typeid(*pObject));
85 }
86 msgStream() << " CLID= " << obj_class << endmsg;
87 return NO_CONVERTER;
88 }
89 return INVALID_OBJECT;
90 }
91 return INVALID_ADDRESS;
92 }
93
94 void ConversionSvc::loadConverter(DataObject*) {
95
96 }
97
98 StatusCode ConversionSvc::updateServiceState(IOpaqueAddress* /*pAddress */) {
99 return StatusCode::SUCCESS;
100 }
101
103 StatusCode ConversionSvc::createObj(IOpaqueAddress* pAddress, DataObject*& refpObj) {
104 return makeCall(CREATE_OBJ, false, true, false, pAddress, refpObj);
105 }
106
108 StatusCode ConversionSvc::fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObj) {
109 return makeCall(FILL_OBJ_REFS, false, true, true, pAddress, pObj);
110 }
111
113 StatusCode ConversionSvc::updateObj(IOpaqueAddress* pAddress, DataObject* pObj) {
114 return makeCall(UPDATE_OBJ, false, true, false, pAddress, pObj);
115 }
116
118 StatusCode ConversionSvc::updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObj) {
119 return makeCall(UPDATE_OBJ_REFS, false, true, true, pAddress, pObj);
120 }
121
123 StatusCode ConversionSvc::createRep(DataObject* pObj, IOpaqueAddress*& refpAddress) {
124 return makeCall(CREATE_REP, true, false, false, refpAddress, pObj);
125 }
126
128 StatusCode ConversionSvc::fillRepRefs(IOpaqueAddress* pAddress, DataObject* pObj) {
129 return makeCall(FILL_REP_REFS, true, false, false, pAddress, pObj);
130 }
131
133 StatusCode ConversionSvc::updateRep(IOpaqueAddress* pAddress, DataObject* pObj) {
134 return makeCall(UPDATE_REP, true, false, false, pAddress, pObj);
135 }
136
138 StatusCode ConversionSvc::updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObj) {
139 return makeCall(UPDATE_REP_REFS, true, false, false, pAddress, pObj);
140 }
141
143 IConverter* ConversionSvc::converter(const CLID& clid) {
144 IConverter* cnv = nullptr;
145 auto i = std::find_if(m_workers.begin(),m_workers.end(),CnvTest(clid));
146 if ( i != m_workers.end() ) {
147 cnv = i->converter();
148 }
149 if ( !cnv ) {
150 StatusCode status = addConverter(clid);
151 if ( status.isSuccess() ) {
152 i = std::find_if(m_workers.begin(),m_workers.end(),CnvTest(clid));
153 if ( i != m_workers.end() ) {
154 cnv = i->converter();
155 }
156 }
157 }
158 return cnv;
159 }
160
162 StatusCode ConversionSvc::setDataProvider(IDataProviderSvc* pDataSvc) {
163 if ( !pDataSvc ) return StatusCode::SUCCESS; //Atlas does not use DataSvc
164 m_dataSvc = pDataSvc;
165 for(auto& i : m_workers ) {
166 IConverter* cnv = i.converter();
167 if ( cnv && cnv->setDataProvider(m_dataSvc).isFailure()) {
168 error() << "setting Data Provider" << endmsg;
169 }
170 }
171 return StatusCode::SUCCESS;
172 }
173
175 SmartIF<IDataProviderSvc>& ConversionSvc::dataProvider() const {
176 return m_dataSvc;
177 }
178
180 StatusCode ConversionSvc::setAddressCreator(IAddressCreator* creator) {
181 m_addressCreator = creator;
182 for(auto& i : m_workers ) {
183 auto* cnv = i.converter();
184 if ( cnv ) {
185 if (cnv->setAddressCreator(m_addressCreator).isFailure()) {
186 error() << "setting Address Creator" << endmsg;
187 }
188 }
189 }
190 return StatusCode::SUCCESS;
191 }
192
194 SmartIF<IAddressCreator>& ConversionSvc::addressCreator() const {
195 return m_addressCreator;
196 }
197
199 StatusCode ConversionSvc::setConversionSvc(IConversionSvc* /* svc */) {
200 return StatusCode::FAILURE;
201 }
202
204 SmartIF<IConversionSvc>& ConversionSvc::conversionSvc() const {
205 return m_cnvSvc;
206 }
207
209 StatusCode ConversionSvc::addConverter(const CLID& clid) {
210 // First look for the more specific converter
211 long typ = repSvcType();
212 IConverter* pConverter = createConverter(typ, clid, nullptr);
213 if ( pConverter ) {
214 StatusCode status = configureConverter( typ, clid, pConverter );
215 if ( status.isSuccess() ) {
216 status = initializeConverter( typ, clid, pConverter );
217 if ( status.isSuccess() ) {
218 status = activateConverter( typ, clid, pConverter );
219 if ( status.isSuccess() ) {
220 long conv_typ = pConverter->repSvcType();
221 const CLID& conv_clid = pConverter->objType();
222 typ = (typ<0xFF) ? typ : typ&0xFFFFFF00;
223 conv_typ = (conv_typ<0xFF) ? conv_typ : conv_typ&0xFFFFFF00;
224 if ( conv_typ == typ && conv_clid == clid ) {
225 return addConverter(pConverter);
226 }
227 }
228 }
229 }
230 pConverter->release();
231 }
232 return NO_CONVERTER;
233 }
234
236 StatusCode ConversionSvc::addConverter(IConverter* pConverter) {
237 if ( pConverter ) {
238 const CLID& clid = pConverter->objType();
239 removeConverter(clid).ignore();
240 m_workers.emplace_back(clid, pConverter);
241 pConverter->addRef();
242 return StatusCode::SUCCESS;
243 }
244 return NO_CONVERTER;
245 }
246
248 StatusCode ConversionSvc::removeConverter(const CLID& clid) {
249
250 auto i = std::partition( std::begin(m_workers), std::end(m_workers),
251 std::not1( CnvTest{clid} ) );
252 if ( i == std::end(m_workers) ) return NO_CONVERTER;
253 std::for_each( i, std::end(m_workers), []( WorkerEntry& w ) {
254 w.converter()->finalize().ignore();
255 w.converter()->release();
256 });
257 m_workers.erase( i, std::end(m_workers) );
258 return StatusCode::SUCCESS;
259 }
260
262 StatusCode ConversionSvc::initialize() {
263 StatusCode status = Service::initialize();
264 return status;
265 }
266
268 StatusCode ConversionSvc::finalize() {
269 // Release all workers.
270 for ( auto& i : m_workers ) {
271 if ( i.converter()->finalize().isFailure() ) {
272 error() << "finalizing worker" << endmsg;
273 }
274 i.converter()->release();
275 }
276 m_workers.clear();
277 // release interfaces
278 m_addressCreator = nullptr;
279 m_dataSvc = nullptr;
280 m_cnvSvc = nullptr;
281 return Service::finalize();
282 }
283
284
286 IConverter* ConversionSvc::createConverter(long typ,
287 const CLID& clid,
288 const ICnvFactory* /*fac*/) {
289 IConverter* pConverter = Converter::Factory::create(ConverterID(typ,clid), serviceLocator().get());
290 if ( !pConverter ) {
291 typ = (typ<0xFF) ? typ : typ&0xFFFFFF00;
292 pConverter = Converter::Factory::create(ConverterID(typ,clid), serviceLocator().get());
293 }
294 return pConverter;
295 }
296
298 StatusCode ConversionSvc::configureConverter(long /* typ */,
299 const CLID& /* clid */,
300 IConverter* pConverter) {
301 if ( !pConverter ) return NO_CONVERTER;
302 pConverter->setConversionSvc(this).ignore();
303 pConverter->setAddressCreator(m_addressCreator).ignore();
304 pConverter->setDataProvider(m_dataSvc).ignore();
305 return StatusCode::SUCCESS;
306 }
307
309 StatusCode ConversionSvc::initializeConverter(long /* typ */,
310 const CLID& /* clid */,
311 IConverter* pConverter) {
312 return pConverter ? pConverter->initialize()
313 : NO_CONVERTER;
314 }
315
317 StatusCode ConversionSvc::activateConverter(long /* typ */,
318 const CLID& /* clid */,
319 IConverter* pConverter) {
320 return pConverter ? StatusCode{StatusCode::SUCCESS}
321 : NO_CONVERTER;
322 }
323
325 const CLID& ConversionSvc::objType() const {
326 return CLID_NULL;
327 }
328
330 long ConversionSvc::repSvcType() const {
331 return m_type;
332 }
333
335 StatusCode ConversionSvc::connectOutput(const std::string& outputFile,
336 const std::string& /* openMode */) {
337 return connectOutput(outputFile);
338 }
339
341 StatusCode ConversionSvc::connectOutput(const std::string& /* outputFile */) {
342 return StatusCode::SUCCESS;
343 }
344
346 StatusCode ConversionSvc::commitOutput(const std::string& , bool ) {
347 return StatusCode::SUCCESS;
348 }
349
351 StatusCode ConversionSvc::createAddress(long /* svc_type */,
352 const CLID& /* clid */,
353 const std::string* /* par */,
354 const unsigned long* /* ip */,
355 IOpaqueAddress*& refpAddress) {
356 refpAddress = nullptr;
357 return StatusCode::FAILURE;
358 }
359
361 StatusCode ConversionSvc::convertAddress( const IOpaqueAddress* /* pAddress */,
362 std::string& refAddress)
363 {
364 refAddress.clear();
365 return StatusCode::FAILURE;
366 }
367
369 StatusCode ConversionSvc::createAddress( long /* svc_type */,
370 const CLID& /* clid */,
371 const std::string& /* refAddress */,
372 IOpaqueAddress*& refpAddress)
373 {
374 refpAddress = nullptr;
375 return StatusCode::FAILURE;
376 }
377
379 ConversionSvc::ConversionSvc(const std::string& name, ISvcLocator* svc, long type)
380 : base_class(name, svc),
381 m_cnvSvc(static_cast<IConversionSvc*>(this))
382 {
383 m_type = type;
384 m_dataSvc = nullptr;
385 setAddressCreator(this).ignore();
386 }
387
389 ConversionSvc::~ConversionSvc() {
390 // Release all workers.
391 for ( auto & i : m_workers ) i.converter()->release();
392 }
ConversionSvc::WorkerEntry::converter
IConverter * converter()
Definition: ConversionSvc.h:67
System.h
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
ConversionSvc::addressCreator
SmartIF< IAddressCreator > & addressCreator() const override
Retrieve address creator facility.
Definition: ConversionSvc.cpp:194
StatusCode::SUCCESS
Definition: StatusCode.h:30
CREATE_REP
Definition: ConversionSvc.cpp:17
SmartIF< IDataProviderSvc >
ConversionSvc::configureConverter
virtual StatusCode configureConverter(long typ, const CLID &clid, IConverter *cnv)
Configure the new converter before initialize is called.
Definition: ConversionSvc.cpp:298
ConversionSvc::makeCall
StatusCode makeCall(int typ, bool ignore_add, bool ignore_obj, bool update, IOpaqueAddress *&pAddress, DataObject *&pObject)
Definition: ConversionSvc.cpp:23
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
IOpaqueAddress::clID
virtual const CLID & clID() const =0
Retrieve class information from link.
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
IConverter::createObj
virtual StatusCode createObj(IOpaqueAddress *pAddress, DataObject *&refpObject)=0
Create the transient representation of an object.
ConversionSvc::CnvTest
Definition: ConversionSvc.h:75
StatusCode::FAILURE
Definition: StatusCode.h:29
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:174
IConversionSvc
Definition: IConversionSvc.h:37
ConversionSvc::updateObjRefs
StatusCode updateObjRefs(IOpaqueAddress *pAddress, DataObject *pObject) override
Implementation of IConverter: Update the references of an updated transient object.
Definition: ConversionSvc.cpp:118
MsgStream.h
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
IConverter::objType
virtual const CLID & objType() const =0
Retrieve the class type of objects the converter produces.
ConversionSvc::updateRep
StatusCode updateRep(IOpaqueAddress *pAddress, DataObject *pObject) override
Implementation of IConverter: Update the converted representation of a transient object.
Definition: ConversionSvc.cpp:133
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
FILL_REP_REFS
Definition: ConversionSvc.cpp:18
ConversionSvc.h
ConversionSvc::ConversionSvc
ConversionSvc(const std::string &name, ISvcLocator *svc, long type)
Standard Constructor.
Definition: ConversionSvc.cpp:379
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
ConversionSvc::createRep
StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress) override
Implementation of IConverter: Convert the transient object to the requested representation.
Definition: ConversionSvc.cpp:123
IAddressCreator
IAddressCreator interface definition.
Definition: IAddressCreator.h:28
IConverter::setDataProvider
virtual StatusCode setDataProvider(IDataProviderSvc *pService)=0
Set Data provider service.
ConversionSvc::WorkerEntry
Definition: ConversionSvc.h:51
CREATE_OBJ
Definition: ConversionSvc.cpp:13
ConversionSvc::updateRepRefs
StatusCode updateRepRefs(IOpaqueAddress *pAddress, DataObject *pObject) override
Implementation of IConverter: Update the references of an already converted object.
Definition: ConversionSvc.cpp:138
std::end
T end(T...args)
ConversionSvc::m_addressCreator
SmartIF< IAddressCreator > m_addressCreator
Pointer to the address creation service interface.
Definition: ConversionSvc.h:225
ConversionSvc::~ConversionSvc
virtual ~ConversionSvc()
Standard Destructor.
Definition: ConversionSvc.cpp:389
IConverter::createRep
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:45
IConverter::updateRepRefs
virtual StatusCode updateRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the references of an already converted object.
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
ConversionSvc::loadConverter
virtual void loadConverter(DataObject *pObject)
Load converter or dictionary needed by the converter.
Definition: ConversionSvc.cpp:94
std::partition
T partition(T...args)
IConverter::updateObj
virtual StatusCode updateObj(IOpaqueAddress *pAddress, DataObject *refpObject)=0
Update the transient object from the other representation.
UPDATE_OBJ
Definition: ConversionSvc.cpp:15
std::string
STL class.
IConverter::setConversionSvc
virtual StatusCode setConversionSvc(IConversionSvc *pService)=0
Set conversion service the converter is connected to.
FILL_OBJ_REFS
Definition: ConversionSvc.cpp:14
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
ConversionSvc::converter
IConverter * converter(const CLID &wanted) override
Retrieve converter from list.
Definition: ConversionSvc.cpp:143
IDataProviderSvc.h
DataObject::clID
virtual const CLID & clID() const
Retrieve reference to class definition structure.
Definition: DataObject.cpp:68
ConversionSvc::removeConverter
StatusCode removeConverter(const CLID &clid) override
Remove converter object from conversion service (if present).
Definition: ConversionSvc.cpp:248
ConversionSvc::setAddressCreator
StatusCode setAddressCreator(IAddressCreator *creator) override
Set address creator facility.
Definition: ConversionSvc.cpp:180
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
MsgStream::clear
void clear(STATE_TYPE _i=std::ios_base::failbit)
Definition: MsgStream.h:222
gaudirun.type
type
Definition: gaudirun.py:125
ConversionSvc::dataProvider
SmartIF< IDataProviderSvc > & dataProvider() const override
Implementation of IConverter: Get Data provider service.
Definition: ConversionSvc.cpp:175
UPDATE_REP_REFS
Definition: ConversionSvc.cpp:20
IConverter::updateObjRefs
virtual StatusCode updateObjRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the references of an updated transient object.
ConversionSvc::fillRepRefs
StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject) override
Implementation of IConverter: Resolve the references of the converted object.
Definition: ConversionSvc.cpp:128
CnvSvcAction
CnvSvcAction
Definition: PersistencySvc.cpp:45
IConverter::updateRep
virtual StatusCode updateRep(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the converted representation of a transient object.
ConversionSvc::createAddress
StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress) override
Create a Generic address using explicit arguments to identify a single object.
Definition: ConversionSvc.cpp:351
CLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
std::string::clear
T clear(T...args)
IConverter::initialize
virtual StatusCode initialize()=0
Initialize the converter.
ConversionSvc::convertAddress
StatusCode convertAddress(const IOpaqueAddress *pAddress, std::string &refAddress) override
Convert an address to string form.
Definition: ConversionSvc.cpp:361
ConversionSvc::updateServiceState
virtual StatusCode updateServiceState(IOpaqueAddress *pAddress)
Update state of the service.
Definition: ConversionSvc.cpp:98
ConversionSvc::m_dataSvc
SmartIF< IDataProviderSvc > m_dataSvc
Pointer to data provider service.
Definition: ConversionSvc.h:223
IOpaqueAddress.h
ConversionSvc::createObj
StatusCode createObj(IOpaqueAddress *pAddress, DataObject *&refpObject) override
Implementation of IConverter: Create the transient representation of an object.
Definition: ConversionSvc.cpp:103
IConverter::setAddressCreator
virtual StatusCode setAddressCreator(IAddressCreator *creator)=0
Set address creator facility.
UPDATE_OBJ_REFS
Definition: ConversionSvc.cpp:16
ConversionSvc::fillObjRefs
StatusCode fillObjRefs(IOpaqueAddress *pAddress, DataObject *pObject) override
Implementation of IConverter: Resolve the references of the created transient object.
Definition: ConversionSvc.cpp:108
std::find_if
T find_if(T...args)
ConversionSvc::initializeConverter
virtual StatusCode initializeConverter(long typ, const CLID &clid, IConverter *cnv)
Initialize the new converter.
Definition: ConversionSvc.cpp:309
IConverter::fillObjRefs
virtual StatusCode fillObjRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the created transient object.
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
IConverter::repSvcType
virtual long repSvcType() const =0
Retrieve the class type of the data store the converter uses.
std::begin
T begin(T...args)
ConversionSvc::m_cnvSvc
SmartIF< IConversionSvc > m_cnvSvc
Pointer to the IConversionSvc interface of this.
Definition: ConversionSvc.h:227
ConversionSvc::updateObj
StatusCode updateObj(IOpaqueAddress *pAddress, DataObject *refpObject) override
Implementation of IConverter: Update the transient object from the other representation.
Definition: ConversionSvc.cpp:113
ConversionSvc::setDataProvider
StatusCode setDataProvider(IDataProviderSvc *pService) override
Implementation of IConverter: Set Data provider service.
Definition: ConversionSvc.cpp:162
ConversionSvc::m_type
long m_type
Conversion service type.
Definition: ConversionSvc.h:229
std::not1
T not1(T...args)
CommonMessagingBase::msgStream
MsgStream & msgStream() const
Return an uninitialized MsgStream.
Definition: CommonMessaging.h:88
ConversionSvc::repSvcType
long repSvcType() const override
Retrieve the class type of the data store the converter uses.
Definition: ConversionSvc.cpp:330
ConversionSvc::commitOutput
StatusCode commitOutput(const std::string &output, bool do_commit) override
Commit pending output.
Definition: ConversionSvc.cpp:346
CommonMessaging
Definition: CommonMessaging.h:55
IInterface::addRef
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
ConversionSvc::createConverter
virtual IConverter * createConverter(long typ, const CLID &clid, const ICnvFactory *fac)
Create new Converter using factory.
Definition: ConversionSvc.cpp:286
Converter.h
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
ConversionSvc::addConverter
StatusCode addConverter(const CLID &clid) override
Add converter object to conversion service.
Definition: ConversionSvc.cpp:209
std::for_each
T for_each(T...args)
ConversionSvc::m_workers
std::vector< WorkerEntry > m_workers
List of conversion workers.
Definition: ConversionSvc.h:231
ConversionSvc::setConversionSvc
StatusCode setConversionSvc(IConversionSvc *svc) override
Implementation of IConverter: Set conversion service the converter is connected to.
Definition: ConversionSvc.cpp:199
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
IConverter.h
ConversionSvc::finalize
StatusCode finalize() override
stop the service.
Definition: ConversionSvc.cpp:268
IConverter::fillRepRefs
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
ConversionSvc::activateConverter
virtual StatusCode activateConverter(long typ, const CLID &clid, IConverter *cnv)
Activate the new converter after initialization.
Definition: ConversionSvc.cpp:317
ConversionSvc::objType
const CLID & objType() const override
Implementation of IConverter: dummy call.
Definition: ConversionSvc.cpp:325
ConversionSvc::initialize
StatusCode initialize() override
Initialize the service.
Definition: ConversionSvc.cpp:262
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
GaudiPython.Pythonizations.update
update
Definition: Pythonizations.py:94
ConversionSvc::connectOutput
StatusCode connectOutput(const std::string &outputFile, const std::string &openMode) override
Connect the output file to the service with open mode.
Definition: ConversionSvc.cpp:335
ConverterID
Definition: Converter.h:151
IConverter::finalize
virtual StatusCode finalize()=0
Terminate the converter.
DataObject.h
UPDATE_REP
Definition: ConversionSvc.cpp:19
ConversionSvc::conversionSvc
SmartIF< IConversionSvc > & conversionSvc() const override
Implementation of IConverter: Get conversion service the converter is connected to.
Definition: ConversionSvc.cpp:204