00001 /* This was taken from ATLAS CVS by bv@bnl.gov 2008/7/16. Any bugs, 00002 * blame me, not them! */ 00003 #include <iostream> 00004 using std::cerr; 00005 using std::endl; 00006 #include "GaudiKernel/Bootstrap.h" 00007 #include "GaudiKernel/IMessageSvc.h" 00008 #include "GaudiKernel/ISvcLocator.h" 00009 #include "DybKernel/getMessageSvc.h" 00010 00011 using namespace Dyb; 00012 00013 IMessageSvc* Dyb::getMessageSvc( ) { return getMessageSvc( Options::Lazy ); } 00014 IMessageSvc* Dyb::getMessageSvc( const Options::CreateOptions opt ) { 00015 IMessageSvc* pSvc(0); 00016 const bool createIf( opt == Dyb::Options::Eager ); 00017 if (!(Gaudi::svcLocator()->service("MessageSvc", pSvc, createIf)).isSuccess()) 00018 cerr << "Dyb::getMessageSvc: WARNING MessageSvc not found, will use std::cerr" << endl; 00019 return pSvc; 00020 } 00021 00022 IMessageSvcHolder::IMessageSvcHolder(IMessageSvc *ims) : m_ims(ims) { 00023 assert(m_ims); 00024 m_ims->addRef(); //take ownership till we go out of scope 00025 } 00026 00027 IMessageSvcHolder::IMessageSvcHolder(const IMessageSvcHolder& rhs) : 00028 m_ims(rhs.m_ims) 00029 { 00030 if (m_ims) m_ims->addRef(); //take ownership till we go out of scope 00031 } 00032 00033 IMessageSvcHolder& 00034 IMessageSvcHolder::operator=(const IMessageSvcHolder& rhs) { 00035 if (this != & rhs && m_ims != rhs.m_ims) { 00036 if (m_ims) m_ims->release(); //give up our IMessageSvc* 00037 m_ims = rhs.m_ims; 00038 if (m_ims) m_ims->addRef(); //take ownership till we go out of scope 00039 } 00040 return *this; 00041 } 00042 00043 IMessageSvcHolder::IMessageSvcHolder( const Options::CreateOptions opt ) : 00044 m_ims(0) 00045 { 00046 if (opt == Dyb::Options::Eager) m_ims = getMessageSvc(opt); 00047 } 00048 00049 IMessageSvcHolder::~IMessageSvcHolder() { 00050 if (m_ims) m_ims->release(); 00051 } 00052 00053 IMessageSvc* 00054 IMessageSvcHolder::get() const { 00055 if (!m_ims) m_ims = getMessageSvc(); 00056 return m_ims; 00057 } 00058