All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ConversionSvc.h
Go to the documentation of this file.
1 // $Header: /tmp/svngaudi/tmp.jEpFh25751/Gaudi/GaudiKernel/GaudiKernel/ConversionSvc.h,v 1.15 2007/06/01 17:24:21 marcocle Exp $
2 #ifndef GAUDIKERNEL_CONVERSIONSVC_H
3 #define GAUDIKERNEL_CONVERSIONSVC_H 1
4 
5 // Include files
6 #include <vector>
7 #include <algorithm>
8 #include <functional>
9 #include "GaudiKernel/Kernel.h"
10 #include "GaudiKernel/Service.h"
14 
15 
47 class GAUDI_API ConversionSvc: public extends2<Service, IConversionSvc, IAddressCreator>
48 {
49 public:
50  class WorkerEntry {
51  private:
54  public:
55  WorkerEntry(const CLID& cl, IConverter* cnv)
56  : m_class(cl), m_converter(cnv) {
57  }
58  WorkerEntry(const WorkerEntry& copy)
59  : m_class(copy.m_class), m_converter(copy.m_converter) {
60  }
61  WorkerEntry& operator = (const WorkerEntry& copy) {
62  m_class = copy.m_class;
63  m_converter = copy.m_converter;
64  return *this;
65  }
66  virtual ~WorkerEntry() {
67  }
69  return m_converter;
70  }
71  const CLID& clID() const {
72  return m_class;
73  }
74  };
75  typedef std::vector<WorkerEntry> Workers;
76 
77  class CnvTest : public std::unary_function<WorkerEntry, bool> {
78  protected:
79  const CLID m_test;
80  public:
81  CnvTest(const CLID& test) : m_test(test) {
82  }
83  virtual ~CnvTest() {
84  }
85  bool operator()( const WorkerEntry& testee ) {
86  return (m_test == testee.clID()) ? true : false;
87  }
88  };
89 
90 public:
91 
93  virtual StatusCode initialize();
94 
96  virtual StatusCode finalize();
97 
99  virtual long repSvcType() const;
100 
102  const CLID& objType() const;
103 
108  virtual StatusCode setDataProvider(IDataProviderSvc* pService);
109 
113  virtual SmartIF<IDataProviderSvc>& dataProvider() const;
114 
116  virtual StatusCode setConversionSvc(IConversionSvc* svc);
117 
119  virtual SmartIF<IConversionSvc>& conversionSvc() const;
120 
122  virtual StatusCode setAddressCreator(IAddressCreator* creator);
123 
125  virtual SmartIF<IAddressCreator>& addressCreator() const;
126 
128  virtual StatusCode createObj(IOpaqueAddress* pAddress,DataObject*& refpObject);
129 
131  virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
132 
134  virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* refpObject);
135 
137  virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
138 
140  virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress);
141 
143  virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject);
144 
146  virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
147 
149  virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
150 
152  virtual StatusCode addConverter(const CLID& clid);
153 
155  virtual StatusCode addConverter(IConverter* pConverter);
156 
158  virtual StatusCode removeConverter(const CLID& clid);
159 
161  virtual IConverter* converter(const CLID& wanted);
162 
164  virtual StatusCode connectOutput(const std::string& outputFile,
165  const std::string& openMode);
166 
168  virtual StatusCode connectOutput(const std::string& output);
169 
171  virtual StatusCode commitOutput(const std::string& output, bool do_commit);
172 
174  virtual StatusCode createAddress( long svc_type,
175  const CLID& clid,
176  const std::string* par,
177  const unsigned long* ip,
178  IOpaqueAddress*& refpAddress);
179 
181  virtual StatusCode convertAddress( const IOpaqueAddress* pAddress,
182  std::string& refAddress);
183 
185  virtual StatusCode createAddress( long svc_type,
186  const CLID& clid,
187  const std::string& refAddress,
188  IOpaqueAddress*& refpAddress);
189 
191  virtual StatusCode updateServiceState(IOpaqueAddress* pAddress);
192 
194  ConversionSvc(const std::string& name, ISvcLocator* svc, long type);
195 
196 protected:
198  virtual ~ConversionSvc();
199 
201  virtual IConverter* createConverter(long typ, const CLID& clid, const ICnvFactory* fac);
202 
204  virtual StatusCode configureConverter(long typ, const CLID& clid, IConverter* cnv);
205 
207  virtual StatusCode initializeConverter(long typ, const CLID& clid, IConverter* cnv);
208 
210  virtual StatusCode activateConverter(long typ, const CLID& clid, IConverter* cnv);
211 
213  virtual void loadConverter(DataObject* pObject);
214 
217  return m_addressCreator;
218  }
219 
220 protected:
221  StatusCode makeCall( int typ,
222  bool ignore_add,
223  bool ignore_obj,
224  bool update,
225  IOpaqueAddress*& pAddress,
226  DataObject*& pObject);
227 
235  long m_type;
238 
239 private:
243  ConversionSvc& operator= (const ConversionSvc&);
244 };
245 #endif // GAUDIKERNEL_CONVERSIONSVC_H
IConverter * converter()
Definition: ConversionSvc.h:68
bool operator()(const WorkerEntry &testee)
Definition: ConversionSvc.h:85
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:26
The data converters are responsible to translate data from one representation into another...
Definition: IConverter.h:57
Workers * m_workers
List of conversion workers.
IAddressCreator interface definition.
const CLID & clID() const
Definition: ConversionSvc.h:71
Definition: ConversionSvc.h:50
SmartIF< IAddressCreator > m_addressCreator
Pointer to the address creation service interface.
Base class used to extend a class implementing other interfaces.
Definition: extends.h:75
Data provider interface definition.
CLID m_class
Definition: ConversionSvc.h:52
string type
Definition: gaudirun.py:126
WorkerEntry(const WorkerEntry &copy)
Definition: ConversionSvc.h:58
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
WorkerEntry(const CLID &cl, IConverter *cnv)
Definition: ConversionSvc.h:55
virtual ~WorkerEntry()
Definition: ConversionSvc.h:66
unsigned int CLID
Class ID definition.
Definition: ClassID.h:9
CnvTest(const CLID &test)
Definition: ConversionSvc.h:81
SmartIF< IDataProviderSvc > m_dataSvc
Pointer to data provider service.
def update
Definition: install.py:213
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:47
#define GAUDI_API
Definition: Kernel.h:108
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:31
IConverter * m_converter
Definition: ConversionSvc.h:53
std::vector< WorkerEntry > Workers
Definition: ConversionSvc.h:75