| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

getMessageSvc.cc

Go to the documentation of this file.
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 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:09:25 2011 for DybKernel by doxygen 1.4.7