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 extends2<Service, IConversionSvc, IAddressCreator>
47 {
48 public:
49  class WorkerEntry final {
50  private:
53  public:
54  WorkerEntry(const CLID& cl, IConverter* cnv)
55  : m_class(cl), m_converter(cnv) {
56  }
57  WorkerEntry(const WorkerEntry& copy)
58  : m_class(copy.m_class), m_converter(copy.m_converter) {
59  }
60  WorkerEntry& operator = (const WorkerEntry& copy) {
61  m_class = copy.m_class;
62  m_converter = copy.m_converter;
63  return *this;
64  }
66  return m_converter;
67  }
68  const CLID& clID() const {
69  return m_class;
70  }
71  };
72 
73  class CnvTest : public std::unary_function<WorkerEntry, bool> {
74  private:
75  const CLID m_test;
76  public:
77  CnvTest(const CLID& test) : m_test(test) {
78  }
79  bool operator()( const WorkerEntry& testee ) const {
80  return m_test == testee.clID();
81  }
82  };
83 
84 public:
85 
87  virtual StatusCode initialize();
88 
90  virtual StatusCode finalize();
91 
93  virtual long repSvcType() const;
94 
96  const CLID& objType() const;
97 
102  virtual StatusCode setDataProvider(IDataProviderSvc* pService);
103 
107  virtual SmartIF<IDataProviderSvc>& dataProvider() const;
108 
110  virtual StatusCode setConversionSvc(IConversionSvc* svc);
111 
113  virtual SmartIF<IConversionSvc>& conversionSvc() const;
114 
116  virtual StatusCode setAddressCreator(IAddressCreator* creator);
117 
119  virtual SmartIF<IAddressCreator>& addressCreator() const;
120 
122  virtual StatusCode createObj(IOpaqueAddress* pAddress,DataObject*& refpObject);
123 
125  virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
126 
128  virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* refpObject);
129 
131  virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
132 
134  virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress);
135 
137  virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject);
138 
140  virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
141 
143  virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
144 
146  virtual StatusCode addConverter(const CLID& clid);
147 
149  virtual StatusCode addConverter(IConverter* pConverter);
150 
152  virtual StatusCode removeConverter(const CLID& clid);
153 
155  virtual IConverter* converter(const CLID& wanted);
156 
158  virtual StatusCode connectOutput(const std::string& outputFile,
159  const std::string& openMode);
160 
162  virtual StatusCode connectOutput(const std::string& output);
163 
165  virtual StatusCode commitOutput(const std::string& output, bool do_commit);
166 
168  virtual StatusCode createAddress( long svc_type,
169  const CLID& clid,
170  const std::string* par,
171  const unsigned long* ip,
172  IOpaqueAddress*& refpAddress);
173 
175  virtual StatusCode convertAddress( const IOpaqueAddress* pAddress,
176  std::string& refAddress);
177 
179  virtual StatusCode createAddress( long svc_type,
180  const CLID& clid,
181  const std::string& refAddress,
182  IOpaqueAddress*& refpAddress);
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;
231  std::vector<WorkerEntry> m_workers;
232 
233 private:
237  ConversionSvc& operator= (const ConversionSvc&);
238 };
239 #endif // GAUDIKERNEL_CONVERSIONSVC_H
IConverter * converter()
Definition: ConversionSvc.h:65
virtual SmartIF< IAddressCreator > & addressCreator()
Retrieve address creation interface.
def initialize()
Definition: AnalysisTest.py:12
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
#define GAUDI_API
Definition: Kernel.h:107
IAddressCreator interface definition.
const CLID & clID() const
Definition: ConversionSvc.h:68
Definition: ConversionSvc.h:49
Data provider interface definition.
std::vector< WorkerEntry > m_workers
List of conversion workers.
CLID m_class
Definition: ConversionSvc.h:51
WorkerEntry(const WorkerEntry &copy)
Definition: ConversionSvc.h:57
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
bool operator()(const WorkerEntry &testee) const
Definition: ConversionSvc.h:79
SmartIF< IConversionSvc > m_cnvSvc
Pointer to the IConversionSvc interface of this.
WorkerEntry(const CLID &cl, IConverter *cnv)
Definition: ConversionSvc.h:54
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
CnvTest(const CLID &test)
Definition: ConversionSvc.h:77
def update
Definition: install.py:213
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
long m_type
Conversion service type.
SmartIF< IAddressCreator > m_addressCreator
Pointer to the address creation service interface.
Opaque address interface definition.
Base class for all conversion services.
Definition: ConversionSvc.h:46
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
SmartIF< IDataProviderSvc > m_dataSvc
Pointer to data provider service.
IConverter * m_converter
Definition: ConversionSvc.h:52
string type
Definition: gaudirun.py:151