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

In This Package:

ToolUsingTool Class Reference

#include <ToolUsingTool.h>

Inheritance diagram for ToolUsingTool:

[legend]
Collaboration diagram for ToolUsingTool:
[legend]
List of all members.

Public Types

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status
 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status

Public Member Functions

 ToolUsingTool (const std::string &, const std::string &, const IInterface *)
StatusCode queryInterface (const InterfaceID &riid, void **ppvIf)
StatusCode initialize ()
StatusCode finalize ()
virtual StatusCode doSomething (double &result)
virtual const std::string & type () const =0
virtual const IInterfaceparent () const =0
virtual StatusCode configure ()=0
virtual StatusCode start ()=0
virtual StatusCode stop ()=0
virtual StatusCode terminate ()=0
virtual StatusCode reinitialize ()=0
virtual StatusCode restart ()=0
virtual Gaudi::StateMachine::State FSMState () const =0
virtual StatusCode sysInitialize ()=0
virtual StatusCode sysStart ()=0
virtual StatusCode sysStop ()=0
virtual StatusCode sysFinalize ()=0
virtual StatusCode sysReinitialize ()=0
virtual StatusCode sysRestart ()=0
virtual unsigned long refCount () const =0
virtual const std::string & name () const =0
virtual unsigned long addRef ()=0
virtual unsigned long release ()=0
virtual unsigned long addRef ()
virtual unsigned long release ()
virtual const std::string & name () const
virtual const std::string & type () const
virtual const IInterfaceparent () const
virtual StatusCode configure ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode terminate ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual StatusCode sysInitialize ()
virtual StatusCode sysStart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
PropertyMgrgetPropertyMgr ()
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
IMessageSvcmsgSvc () const
IToolSvctoolSvc () const
StatusCode setProperties ()
StatusCode service (const std::string &name, T *&svc, bool createIf=true) const
StatusCode service (const std::string &type, const std::string &name, T *&svc) const
void declInterface (const InterfaceID &, void *)
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IAuditorSvcauditorSvc () const
IMonitorSvcmonitorSvc () const
void declareInfo (const std::string &name, const T &var, const std::string &desc) const
void declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const

Static Public Member Functions

static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Member Functions

int outputLevel () const
virtual unsigned long refCount () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Private Attributes

MsgStream m_log
double m_factor
ToolHandle< IVirtualToolm_pubTool
ToolHandle< IVirtualToolm_privTool
ToolHandleArray< IVirtualToolm_toolArray

Detailed Description

Definition at line 15 of file ToolUsingTool.h.


Constructor & Destructor Documentation

ToolUsingTool::ToolUsingTool ( const std::string &  ,
const std::string &  ,
const IInterface  
)

Definition at line 6 of file ToolUsingTool.cc.

00008    : AlgTool( type, name, parent ), m_log( msgSvc(), name ),
00009      m_pubTool( "ConcreteTool/PublicConcreteTool" ),         // no parent, making it public
00010      m_privTool( "ConcreteTool", this ), m_toolArray( this ) // adding 'this' makes it private
00011 {
00012 
00013 // declare any properties here
00014 
00015    declareProperty( "Factor", m_factor = 1., "multiplicative factor to perform task" );
00016 
00017    declareProperty( "TheToolPubTool",   m_pubTool,   "global helper to offload tasks to" );
00018    declareProperty( "TheToolTool",      m_privTool,  "helper to offload some tasks to" );
00019    declareProperty( "TheToolToolArray", m_toolArray, "list of helpers to offload some tasks to" );
00020    
00021    // set default toolArray
00022    m_toolArray.push_back( "ConcreteTool/CxxDefaultTool" );
00023 }


Member Function Documentation

StatusCode ToolUsingTool::queryInterface ( const InterfaceID riid,
void **  ppvIf 
) [virtual]

Reimplemented from AlgTool.

Definition at line 27 of file ToolUsingTool.cc.

00028 {
00029    if ( riid == IVirtualTool::interfaceID() )  {
00030       *ppvIf = (IVirtualTool*)this;
00031       addRef();
00032       return StatusCode::SUCCESS;
00033    }
00034 
00035    return AlgTool::queryInterface( riid, ppvIf );
00036 }

StatusCode ToolUsingTool::initialize (  )  [virtual]

Reimplemented from AlgTool.

Definition at line 39 of file ToolUsingTool.cc.

00040 {
00041 
00042 // perform necessary one-off initialization
00043 
00044 // needed if OutputLevel property was modified
00045    m_log.setLevel( outputLevel() );
00046 
00047 // verify that our tool handle is pointing to an accessible tool
00048    if ( m_pubTool.retrieve().isFailure() ) {
00049       m_log << MSG::FATAL << "Failed to retrieve " << m_pubTool << endreq;
00050       return StatusCode::FAILURE;
00051    } else {
00052       m_log << MSG::INFO << "Retrieved " << m_pubTool << endreq;
00053    }
00054 
00055    if ( m_privTool.retrieve().isFailure() ) {
00056       m_log << MSG::FATAL << "Failed to retrieve " << m_privTool << endreq;
00057       return StatusCode::FAILURE;
00058    } else {
00059       m_log << MSG::INFO << "Retrieved " << m_privTool << endreq;
00060    }
00061    
00062    if ( m_toolArray.retrieve().isFailure() ) {
00063      m_log << MSG::ERROR << "Failed to retreive " << m_toolArray << endreq;
00064       return StatusCode::FAILURE;
00065    } else {
00066      m_log << MSG::INFO << "Retrieved " << m_toolArray << endreq;
00067    }
00068 
00069    return StatusCode::SUCCESS;
00070 }

StatusCode ToolUsingTool::finalize (  )  [virtual]

Reimplemented from AlgTool.

Definition at line 73 of file ToolUsingTool.cc.

00074 {
00075 
00076 // perform work done at shutdown
00077 
00078    return StatusCode::SUCCESS;
00079 }

StatusCode ToolUsingTool::doSomething ( double &  result  )  [virtual]

Implements IVirtualTool.

Definition at line 82 of file ToolUsingTool.cc.

00083 {
00084 
00085 // do what needs to be done
00086    m_log << MSG::INFO << "performing task using tool (factor: " << m_factor << ") ..." << endreq;
00087 
00088    StatusCode sc = m_pubTool->doSomething( result );
00089    if ( sc.isFailure() ) {
00090       m_log << MSG::ERROR << "the global, public tool failed it's task ... stop!" << endreq;
00091       return sc;
00092    }
00093 
00094    sc = m_privTool->doSomething( result );
00095    if ( sc.isFailure() ) {
00096       m_log << MSG::ERROR << "my tool failed it's task ... stop!" << endreq;
00097       return sc;
00098    }
00099 
00100    m_log << MSG::INFO << "... task using tool is done";
00101    if ( m_log.level() <= MSG::DEBUG ) { m_log << ", result: " << result; }
00102    m_log << endreq;
00103 
00104 // make list of tools do their work
00105    double newvalue = 12345.0;
00106    ToolHandleArray< IVirtualTool >::iterator itPriv = m_toolArray.begin(),
00107      itPrivEnd = m_toolArray.end();
00108    for (  ; itPriv != itPrivEnd; ++itPriv ) {
00109      sc = (*itPriv)->doSomething( newvalue );
00110      if ( sc.isFailure() ) {
00111        m_log << MSG::ERROR << "tool " << (*itPriv).typeAndName() << " failed it's task ... stop!" << endreq;
00112        return sc;
00113      }
00114    }
00115  
00116    return StatusCode::SUCCESS;
00117 }

static const InterfaceID& ToolUsingTool::interfaceID (  )  [inline, static]

Reimplemented from AlgTool.

Definition at line 31 of file ToolUsingTool.h.

00031 { return IVirtualTool::interfaceID(); }


Member Data Documentation

MsgStream ToolUsingTool::m_log [private]

Definition at line 34 of file ToolUsingTool.h.

double ToolUsingTool::m_factor [private]

Definition at line 37 of file ToolUsingTool.h.

ToolHandle< IVirtualTool > ToolUsingTool::m_pubTool [private]

Definition at line 39 of file ToolUsingTool.h.

ToolHandle< IVirtualTool > ToolUsingTool::m_privTool [private]

Definition at line 40 of file ToolUsingTool.h.

ToolHandleArray< IVirtualTool > ToolUsingTool::m_toolArray [private]

Definition at line 41 of file ToolUsingTool.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:09:36 2011 for ConfigurableExample by doxygen 1.4.7