Converter.cpp
Go to the documentation of this file.00001
00002
00003
00004 #include "GaudiKernel/Converter.h"
00005 #include "GaudiKernel/ISvcLocator.h"
00006 #include "GaudiKernel/IMessageSvc.h"
00007 #include "GaudiKernel/IDataManagerSvc.h"
00008 #include "GaudiKernel/IDataProviderSvc.h"
00009 #include "GaudiKernel/GaudiException.h"
00010 #include "GaudiKernel/ServiceLocatorHelper.h"
00011 #include "GaudiKernel/ThreadGaudi.h"
00012 #include "GaudiKernel/ConversionSvc.h"
00013
00015 const CLID& Converter::objType() const {
00016 return m_classType;
00017 }
00018
00020 long Converter::i_repSvcType() const {
00021 return m_storageType;
00022 }
00023
00025 StatusCode Converter::createObj(IOpaqueAddress*, DataObject*&) {
00026 return StatusCode::SUCCESS;
00027 }
00028
00029
00031 StatusCode Converter::fillObjRefs(IOpaqueAddress*, DataObject*) {
00032 return StatusCode::SUCCESS;
00033 }
00034
00036 StatusCode Converter::updateObj(IOpaqueAddress*, DataObject*) {
00037 return StatusCode::SUCCESS;
00038 }
00039
00041 StatusCode Converter::updateObjRefs(IOpaqueAddress*, DataObject*) {
00042 return StatusCode::SUCCESS;
00043 }
00044
00046 StatusCode Converter::createRep(DataObject*, IOpaqueAddress*&) {
00047 return StatusCode::SUCCESS;
00048 }
00049
00051 StatusCode Converter::fillRepRefs(IOpaqueAddress*, DataObject*) {
00052 return StatusCode::SUCCESS;
00053 }
00054
00056 StatusCode Converter::updateRep(IOpaqueAddress*, DataObject*) {
00057 return StatusCode::SUCCESS;
00058 }
00059
00061 StatusCode Converter::updateRepRefs(IOpaqueAddress*, DataObject*) {
00062 return StatusCode::SUCCESS;
00063 }
00064
00066 StatusCode Converter::initialize() {
00067
00068 if ( !msgSvc().isValid() ) {
00069 return StatusCode::FAILURE;
00070 }
00071 return StatusCode::SUCCESS;
00072 }
00073
00075 StatusCode Converter::finalize() {
00076
00077 m_messageSvc = 0;
00078 m_dataManager = 0;
00079 m_dataProvider = 0;
00080 m_conversionSvc = 0;
00081 m_addressCreator = 0;
00082 return StatusCode::SUCCESS;
00083 }
00084
00086 StatusCode Converter::setDataProvider(IDataProviderSvc* svc) {
00087 m_dataProvider = svc;
00088 m_dataManager = svc;
00089 return StatusCode::SUCCESS;
00090 }
00091
00093 SmartIF<IDataProviderSvc>& Converter::dataProvider() const {
00094 return m_dataProvider;
00095 }
00096
00098 SmartIF<IDataManagerSvc>& Converter::dataManager() const {
00099 return m_dataManager;
00100 }
00101
00103 StatusCode Converter::setConversionSvc(IConversionSvc* svc) {
00104 m_conversionSvc = svc;
00105 return StatusCode::SUCCESS;
00106 }
00107
00109 SmartIF<IConversionSvc>& Converter::conversionSvc() const {
00110 return m_conversionSvc;
00111 }
00112
00114 StatusCode Converter::setAddressCreator(IAddressCreator* creator) {
00115 m_addressCreator = creator;
00116 return StatusCode::SUCCESS;
00117 }
00118
00120 SmartIF<IAddressCreator>& Converter::addressCreator() const {
00121 return m_addressCreator;
00122 }
00123
00125 SmartIF<ISvcLocator>& Converter::serviceLocator() const {
00126 return m_svcLocator;
00127 }
00128
00130 SmartIF<IMessageSvc>& Converter::msgSvc() const {
00131 if ( !m_messageSvc.isValid() ) {
00132 m_messageSvc = serviceLocator();
00133 if( !m_messageSvc.isValid() ) {
00134 throw GaudiException("Service [MessageSvc] not found", "Converter", StatusCode::FAILURE);
00135 }
00136 }
00137 return m_messageSvc;
00138 }
00139
00140
00141 SmartIF<IMessageSvc>& Converter::messageService() const {
00142 return msgSvc();
00143 }
00144
00146 Converter::Converter(long storage_type, const CLID& class_type, ISvcLocator* svc) :
00147 m_storageType(storage_type),
00148 m_classType(class_type),
00149 m_svcLocator(svc)
00150 {
00151 }
00152
00154 Converter::~Converter() {
00155 }
00156
00157 StatusCode
00158 Converter::service_i(const std::string& svcName, bool createIf,
00159 const InterfaceID& iid, void** ppSvc) const {
00160
00161 SmartIF<IService> cnvsvc(conversionSvc());
00162 if (cnvsvc.isValid()) {
00163 const ServiceLocatorHelper helper(*serviceLocator(), "Converter", cnvsvc->name());
00164 return helper.getService(svcName, createIf, iid, ppSvc);
00165 }
00166 return StatusCode::FAILURE;
00167 }
00168
00169 StatusCode
00170 Converter::service_i(const std::string& svcType, const std::string& svcName,
00171 const InterfaceID& iid, void** ppSvc) const {
00172
00173 SmartIF<IService> cnvsvc(conversionSvc());
00174 if (cnvsvc.isValid()) {
00175 const ServiceLocatorHelper helper(*serviceLocator(), "Converter", cnvsvc->name());
00176 return helper.createService(svcType, svcName, iid, ppSvc);
00177 }
00178 return StatusCode::FAILURE;
00179 }
00180
00181 SmartIF<IService> Converter::service(const std::string& name, const bool createIf) const {
00182 SmartIF<IService> cnvsvc(conversionSvc());
00183 SmartIF<IService> svc;
00184 if (cnvsvc.isValid()) {
00185 const ServiceLocatorHelper helper(*serviceLocator(), "Converter", cnvsvc->name());
00186 svc = helper.service(name, false, createIf);
00187 }
00188 return svc;
00189 }