Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v28r2p1 (f1a77ff4)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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"
13 
14 
46 class GAUDI_API ConversionSvc: public extends<Service,
47  IConversionSvc,
48  IAddressCreator>
49 {
50 public:
51  class WorkerEntry final {
52  private:
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  }
63  m_class = copy.m_class;
64  m_converter = copy.m_converter;
65  return *this;
66  }
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  StatusCode initialize() override;
90 
92  StatusCode finalize() override;
93 
95  long repSvcType() const override;
96 
98  const CLID& objType() const override;
99 
104  StatusCode setDataProvider(IDataProviderSvc* pService) override;
105 
109  SmartIF<IDataProviderSvc>& dataProvider() const override;
110 
112  StatusCode setConversionSvc(IConversionSvc* svc) override;
113 
115  SmartIF<IConversionSvc>& conversionSvc() const override;
116 
118  StatusCode setAddressCreator(IAddressCreator* creator) override;
119 
121  SmartIF<IAddressCreator>& addressCreator() const override;
122 
124  StatusCode createObj(IOpaqueAddress* pAddress,DataObject*& refpObject) override;
125 
127  StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject) override;
128 
130  StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* refpObject) override;
131 
133  StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject) override;
134 
136  StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress) override;
137 
139  StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject) override;
140 
142  StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject) override;
143 
145  StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject) override;
146 
148  StatusCode addConverter(const CLID& clid) override;
149 
151  StatusCode addConverter(IConverter* pConverter) override;
152 
154  StatusCode removeConverter(const CLID& clid) override;
155 
157  IConverter* converter(const CLID& wanted) override;
158 
160  StatusCode connectOutput(const std::string& outputFile, const std::string& openMode) override;
161 
163  StatusCode connectOutput(const std::string& output) override;
164 
166  StatusCode commitOutput(const std::string& output, bool do_commit) override;
167 
169  StatusCode createAddress( long svc_type,
170  const CLID& clid,
171  const std::string* par,
172  const unsigned long* ip,
173  IOpaqueAddress*& refpAddress) override;
174 
176  StatusCode convertAddress( const IOpaqueAddress* pAddress, std::string& refAddress) override;
177 
179  StatusCode createAddress( long svc_type,
180  const CLID& clid,
181  const std::string& refAddress,
182  IOpaqueAddress*& refpAddress) override;
183 
185  virtual StatusCode updateServiceState(IOpaqueAddress* pAddress);
186 
188  ConversionSvc(const std::string& name, ISvcLocator* svc, long type);
189 
190 protected:
192  virtual ~ConversionSvc();
193 
195  virtual IConverter* createConverter(long typ, const CLID& clid, const ICnvFactory* fac);
196 
198  virtual StatusCode configureConverter(long typ, const CLID& clid, IConverter* cnv);
199 
201  virtual StatusCode initializeConverter(long typ, const CLID& clid, IConverter* cnv);
202 
204  virtual StatusCode activateConverter(long typ, const CLID& clid, IConverter* cnv);
205 
207  virtual void loadConverter(DataObject* pObject);
208 
211  return m_addressCreator;
212  }
213 
214 protected:
215  StatusCode makeCall( int typ,
216  bool ignore_add,
217  bool ignore_obj,
218  bool update,
219  IOpaqueAddress*& pAddress,
220  DataObject*& pObject);
221 
229  long m_type;
232 
233 private:
238 };
239 #endif // GAUDIKERNEL_CONVERSIONSVC_H
IConverter * converter()
Definition: ConversionSvc.h:67
virtual SmartIF< IAddressCreator > & addressCreator()
Retrieve address creation interface.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
The data converters are responsible to translate data from one representation into another...
Definition: IConverter.h:57
IAddressCreator interface definition.
const CLID & clID() const
Definition: ConversionSvc.h:70
Definition: ConversionSvc.h:51
SmartIF< IAddressCreator > m_addressCreator
Pointer to the address creation service interface.
Data provider interface definition.
PropertyMgr & operator=(const PropertyMgr &)=delete
STL class.
CLID m_class
Definition: ConversionSvc.h:53
WorkerEntry(const WorkerEntry &copy)
Definition: ConversionSvc.h:59
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
bool operator()(const WorkerEntry &testee) const
Definition: ConversionSvc.h:81
WorkerEntry(const CLID &cl, IConverter *cnv)
Definition: ConversionSvc.h:56
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
CnvTest(const CLID &test)
Definition: ConversionSvc.h:79
SmartIF< IDataProviderSvc > m_dataSvc
Pointer to data provider service.
STL class.
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
SmartIF< IConversionSvc > m_cnvSvc
Pointer to the IConversionSvc interface of this.
long m_type
Conversion service type.
Opaque address interface definition.
Base class for all conversion services.
Definition: ConversionSvc.h:46
std::vector< WorkerEntry > m_workers
List of conversion workers.
#define GAUDI_API
Definition: Kernel.h:107
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
IConverter * m_converter
Definition: ConversionSvc.h:54