00001
00002
00003
00004 #include "GaudiKernel/Converter.h"
00005 #include "GaudiKernel/ISvcLocator.h"
00006 #include "GaudiKernel/IMessageSvc.h"
00007 #include "GaudiKernel/IDataProviderSvc.h"
00008
00009
00010 unsigned long Converter::addRef() {
00011 m_refCount++;
00012 return m_refCount;
00013 }
00014
00015
00016 unsigned long Converter::release() {
00017 unsigned long count = --m_refCount;
00018 if( count <= 0) {
00019 delete this;
00020 }
00021 return count;
00022 }
00023
00024
00025 StatusCode Converter::queryInterface(const IID& riid, void** ppvInterface) {
00026 if ( IID_IInterface.versionMatch(riid) ) {
00027 *ppvInterface = (IInterface*)this;
00028 }
00029 else if ( IID_IConverter.versionMatch(riid) ) {
00030 *ppvInterface = (IConverter*)this;
00031 }
00032 else {
00033 return NO_INTERFACE;
00034 }
00035 addRef();
00036 return StatusCode::SUCCESS;
00037 }
00038
00040 const CLID& Converter::objType() const {
00041 return m_classType;
00042 }
00043
00045 unsigned char Converter::repSvcType() const {
00046 return m_storageType;
00047 }
00048
00050 StatusCode Converter::createObj(IOpaqueAddress*, DataObject*&) {
00051 return StatusCode::SUCCESS;
00052 }
00053
00054
00056 StatusCode Converter::fillObjRefs(IOpaqueAddress*, DataObject*) {
00057 return StatusCode::SUCCESS;
00058 }
00059
00061 StatusCode Converter::updateObj(IOpaqueAddress*, DataObject*) {
00062 return StatusCode::SUCCESS;
00063 }
00064
00066 StatusCode Converter::updateObjRefs(IOpaqueAddress*, DataObject*) {
00067 return StatusCode::SUCCESS;
00068 }
00069
00071 StatusCode Converter::createRep(DataObject*, IOpaqueAddress*&) {
00072 return StatusCode::SUCCESS;
00073 }
00074
00076 StatusCode Converter::fillRepRefs(IOpaqueAddress*, DataObject*) {
00077 return StatusCode::SUCCESS;
00078 }
00079
00081 StatusCode Converter::updateRep(IOpaqueAddress*, DataObject*) {
00082 return StatusCode::SUCCESS;
00083 }
00084
00086 StatusCode Converter::updateRepRefs(IOpaqueAddress*, DataObject*) {
00087 return StatusCode::SUCCESS;
00088 }
00089
00091 StatusCode Converter::initialize() {
00092 StatusCode status = StatusCode::SUCCESS;
00093 if ( 0 != serviceLocator() ) {
00094
00095 status = serviceLocator()->getService("MessageSvc",
00096 IID_IMessageSvc,
00097 (IInterface*&)m_messageSvc);
00098 if ( status.isFailure() ) {
00099 return status;
00100 }
00101
00102 status = serviceLocator()->getService("EventDataSvc",
00103 IID_IDataProviderSvc,
00104 (IInterface*&)m_dataProvider);
00105 if ( status.isFailure() ) {
00106 return status;
00107 }
00108 }
00109 return status;
00110 }
00111
00113 StatusCode Converter::finalize() {
00114 return StatusCode::SUCCESS;
00115 }
00116
00118 StatusCode Converter::setDataProvider(IDataProviderSvc* svc) {
00119 m_dataProvider = svc;
00120 return StatusCode::SUCCESS;
00121 }
00122
00124 IDataProviderSvc* Converter::dataProvider() {
00125 return m_dataProvider;
00126 }
00127
00128
00129 ISvcLocator* Converter::serviceLocator() {
00130 return m_svcLocator;
00131 }
00132
00133
00134 IMessageSvc* Converter::msgSvc() {
00135 return m_messageSvc;
00136 }
00137
00138 IMessageSvc* Converter::messageService() {
00139 return m_messageSvc;
00140 }
00141
00143 Converter::Converter(unsigned char storage_type, const CLID& class_type, ISvcLocator* svc=0) :
00144 m_refCount(0),
00145 m_storageType(storage_type),
00146 m_classType(class_type),
00147 m_dataProvider(0),
00148 m_svcLocator(svc),
00149 m_messageSvc(0)
00150 {
00151 if ( 0 != serviceLocator() ) serviceLocator()->addRef();
00152 }
00153
00155 Converter::~Converter() {
00156 if ( 0 != serviceLocator() ) serviceLocator()->release();
00157
00158 }
00159