Gaudi Framework, version v21r8

Home   Generated: 17 Mar 2010

PartitionSwitchAlg Class Reference

Small algorith, which switches the partition of a configurable multi-service. More...

Inheritance diagram for PartitionSwitchAlg:

Inheritance graph
[legend]
Collaboration diagram for PartitionSwitchAlg:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 PartitionSwitchAlg (CSTR name, ISvcLocator *pSvcLocator)
 Standard algorithm constructor.
virtual ~PartitionSwitchAlg ()
 Standard Destructor.
virtual STATUS initialize ()
 Initialize.
virtual STATUS finalize ()
 Finalize.
virtual STATUS execute ()
 Execute procedure.
void _check (STATUS sc, CSTR msg) const
virtual STATUS create (CSTR nam, CSTR typ)
 Create a partition object. The name identifies the partition uniquely.
virtual STATUS create (CSTR nam, CSTR typ, IInterface *&pPartition)
 Create a partition object. The name identifies the partition uniquely.
virtual STATUS drop (CSTR nam)
 Drop a partition object. The name identifies the partition uniquely.
virtual STATUS drop (IInterface *pPartition)
 Drop a partition object. The name identifies the partition uniquely.
virtual STATUS activate (CSTR nam)
 Activate a partition object. The name identifies the partition uniquely.
virtual STATUS activate (IInterface *pPartition)
 Activate a partition object.
virtual STATUS get (CSTR nam, IInterface *&pPartition) const
 Access a partition object. The name identifies the partition uniquely.
virtual STATUS activePartition (std::string &nam, IInterface *&pPartition) const
 Access the active partition object.

Private Types

typedef StatusCode STATUS
typedef const std::stringCSTR

Private Attributes

std::string m_partName
 Job option to set the requested partition name.
std::string m_toolType
 Job option to set the tool manipulating the multi-service name.
IPartitionControlm_actor
 reference to Partition Controller


Detailed Description

Small algorith, which switches the partition of a configurable multi-service.

The algorithm can be part of a sequence, which allows for e.g. buffer tampering.

Author:
: M.Frank
Version:
: 1.0

Definition at line 26 of file PartitionSwitchAlg.cpp.


Member Typedef Documentation

Definition at line 28 of file PartitionSwitchAlg.cpp.

typedef const std::string& PartitionSwitchAlg::CSTR [private]

Definition at line 29 of file PartitionSwitchAlg.cpp.


Constructor & Destructor Documentation

PartitionSwitchAlg::PartitionSwitchAlg ( CSTR  name,
ISvcLocator pSvcLocator 
) [inline]

Standard algorithm constructor.

Definition at line 43 of file PartitionSwitchAlg.cpp.

00044   : base_class(name, pSvcLocator), m_actor(0)
00045   {
00046     declareProperty("Partition",  m_partName);
00047     declareProperty("Tool",       m_toolType="PartitionSwitchTool");
00048   }

virtual PartitionSwitchAlg::~PartitionSwitchAlg (  )  [inline, virtual]

Standard Destructor.

Definition at line 50 of file PartitionSwitchAlg.cpp.

00050                                     {
00051   }


Member Function Documentation

virtual STATUS PartitionSwitchAlg::initialize (  )  [inline, virtual]

Initialize.

Release old tool

Now check if the partition is present. If not: try to create it

Reimplemented from Algorithm.

Definition at line 54 of file PartitionSwitchAlg.cpp.

00054                                 {
00055     MsgStream log(msgSvc(), name());
00056     SmartIF<IAlgTool> tool(m_actor);
00057     STATUS sc = toolSvc()->retrieveTool(m_toolType,m_actor,this);
00058     if ( sc.isFailure() ) {
00059       log << MSG::ERROR << "Unable to load PartitionSwitchTool "
00060           << m_toolType << endmsg;
00061       return sc;
00062     }
00064     if ( tool ) toolSvc()->releaseTool(tool);
00066     IInterface* partititon = 0;
00067     sc = m_actor->get(m_partName, partititon);
00068     if ( !sc.isSuccess() )  {
00069       log << MSG::ERROR << "Cannot access partition \""
00070           << m_partName << "\"" << endmsg;
00071     }
00072     return sc;
00073   }

virtual STATUS PartitionSwitchAlg::finalize ( void   )  [inline, virtual]

Finalize.

Reimplemented from Algorithm.

Definition at line 76 of file PartitionSwitchAlg.cpp.

00076                             {
00077     SmartIF<IAlgTool> tool(m_actor);
00078     if ( tool ) toolSvc()->releaseTool(tool);
00079     m_actor = 0;
00080     return STATUS::SUCCESS;
00081   }

virtual STATUS PartitionSwitchAlg::execute (  )  [inline, virtual]

Execute procedure.

Definition at line 84 of file PartitionSwitchAlg.cpp.

00084                               {
00085     if ( m_actor )  {
00086       STATUS sc = m_actor->activate(m_partName);
00087       if ( !sc.isSuccess() )  {
00088         MsgStream log(msgSvc(), name());
00089         log << MSG::ERROR << "Cannot activate partition \""
00090             << m_partName << "\"!" << endmsg;
00091       }
00092       return sc;
00093     }
00094     MsgStream log(msgSvc(), name());
00095     log << MSG::ERROR << "The partition control tool \"" << name()
00096         << "." << m_toolType << "\" cannot be accessed!" << endmsg;
00097     return STATUS::FAILURE;
00098   }

void PartitionSwitchAlg::_check ( STATUS  sc,
CSTR  msg 
) const [inline]

Definition at line 100 of file PartitionSwitchAlg.cpp.

00100                                           {
00101     MsgStream log(msgSvc(), name());
00102     log << MSG::ERROR << msg << " Status=" << sc.getCode() << endmsg;
00103   }

virtual STATUS PartitionSwitchAlg::create ( CSTR  nam,
CSTR  typ 
) [inline, virtual]

Create a partition object. The name identifies the partition uniquely.

Definition at line 107 of file PartitionSwitchAlg.cpp.

00107                                              {
00108     STATUS sc = m_actor ? m_actor->create(nam,typ) : NO_INTERFACE;
00109     CHECK(sc, "Cannot create partition: "+nam+" of type "+typ);
00110   }

virtual STATUS PartitionSwitchAlg::create ( CSTR  nam,
CSTR  typ,
IInterface *&  pPartition 
) [inline, virtual]

Create a partition object. The name identifies the partition uniquely.

Definition at line 112 of file PartitionSwitchAlg.cpp.

00112                                                                       {
00113     STATUS sc = m_actor ? m_actor->create(nam,typ,pPartition) : NO_INTERFACE;
00114     CHECK(sc, "Cannot create partition: "+nam+" of type "+typ);
00115   }

virtual STATUS PartitionSwitchAlg::drop ( CSTR  nam  )  [inline, virtual]

Drop a partition object. The name identifies the partition uniquely.

Definition at line 117 of file PartitionSwitchAlg.cpp.

00117                                  {
00118     STATUS sc = m_actor ? m_actor->drop(nam) : NO_INTERFACE;
00119     CHECK(sc, "Cannot drop partition: "+nam);
00120   }

virtual STATUS PartitionSwitchAlg::drop ( IInterface pPartition  )  [inline, virtual]

Drop a partition object. The name identifies the partition uniquely.

Implements IPartitionControl.

Definition at line 122 of file PartitionSwitchAlg.cpp.

00122                                                {
00123     STATUS sc = m_actor ? m_actor->drop(pPartition) : NO_INTERFACE;
00124     CHECK(sc, "Cannot drop partition by Interface.");
00125   }

virtual STATUS PartitionSwitchAlg::activate ( CSTR  nam  )  [inline, virtual]

Activate a partition object. The name identifies the partition uniquely.

Definition at line 127 of file PartitionSwitchAlg.cpp.

00127                                      {
00128     STATUS sc = m_actor ? m_actor->activate(nam) : NO_INTERFACE;
00129     CHECK(sc, "Cannot activate partition: "+nam);
00130   }

virtual STATUS PartitionSwitchAlg::activate ( IInterface pPartition  )  [inline, virtual]

Activate a partition object.

Implements IPartitionControl.

Definition at line 132 of file PartitionSwitchAlg.cpp.

00132                                                    {
00133     STATUS sc = m_actor ? m_actor->activate(pPartition) : NO_INTERFACE;
00134     CHECK(sc, "Cannot activate partition by Interface.");
00135   }

virtual STATUS PartitionSwitchAlg::get ( CSTR  nam,
IInterface *&  pPartition 
) const [inline, virtual]

Access a partition object. The name identifies the partition uniquely.

Definition at line 137 of file PartitionSwitchAlg.cpp.

00137                                                                {
00138     STATUS sc = m_actor ? m_actor->get(nam, pPartition) : NO_INTERFACE;
00139     CHECK(sc, "Cannot get partition "+nam);
00140   }

virtual STATUS PartitionSwitchAlg::activePartition ( std::string nam,
IInterface *&  pPartition 
) const [inline, virtual]

Access the active partition object.

Implements IPartitionControl.

Definition at line 142 of file PartitionSwitchAlg.cpp.

00142                                                                                  {
00143     STATUS sc = m_actor ? m_actor->activePartition(nam, pPartition) : NO_INTERFACE;
00144     CHECK(sc, "Cannot determine active partition.");
00145   }


Member Data Documentation

Job option to set the requested partition name.

Definition at line 34 of file PartitionSwitchAlg.cpp.

Job option to set the tool manipulating the multi-service name.

Definition at line 36 of file PartitionSwitchAlg.cpp.

reference to Partition Controller

Definition at line 38 of file PartitionSwitchAlg.cpp.


The documentation for this class was generated from the following file:

Generated at Wed Mar 17 18:18:46 2010 for Gaudi Framework, version v21r8 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004