|
Gaudi Framework, version v22r1 |
| Home | Generated: Mon Feb 28 2011 |
Gaudi tag collection service definition. More...
#include <TagCollectionSvc.h>


Public Member Functions | |
| virtual StatusCode | initialize () |
| DataSvc overrides: Initialize the service. | |
| virtual StatusCode | finalize () |
| DataSvc overrides: stop the service. | |
| TagCollectionSvc (const std::string &name, ISvcLocator *svc) | |
| Standard Constructor. | |
| virtual | ~TagCollectionSvc () |
| Standard Destructor. | |
Protected Member Functions | |
| virtual StatusCode | connect (const std::string &ident, std::string &logname) |
| Add file to list I/O list. | |
| virtual StatusCode | createService (const std::string &nam, const std::string &typ, const std::vector< Prop > &props, IConversionSvc *&pSvc) |
| Create conversion service. | |
Friends | |
| class | SvcFactory< TagCollectionSvc > |
Gaudi tag collection service definition.
Description: See the base class definition files for more detailed documentation of the implementing class. The basic functionality of the implementation is enhanced to allow for more general N-tuples, which can be used also as event tag collections.
M.Frank 1.0
Definition at line 26 of file TagCollectionSvc.h.
| TagCollectionSvc::TagCollectionSvc | ( | const std::string & | name, |
| ISvcLocator * | svc | ||
| ) |
Standard Constructor.
Definition at line 47 of file TagCollectionSvc.cpp.
| TagCollectionSvc::~TagCollectionSvc | ( | ) | [virtual] |
| StatusCode TagCollectionSvc::connect | ( | const std::string & | ident, |
| std::string & | logname | ||
| ) | [protected, virtual] |
Add file to list I/O list.
Reimplemented from NTupleSvc.
Definition at line 69 of file TagCollectionSvc.cpp.
{
MsgStream log ( msgSvc(), name() );
DataObject* pO = 0;
StatusCode status = findObject(m_rootName, pO);
if ( status.isSuccess() ) {
status = INVALID_ROOT;
if ( 0 != pO->registry() ) {
char typ=0;
Tokenizer tok(true);
std::vector<Prop> props;
long loc = ident.find(" ");
std::string filename, auth, svc = "DbCnvSvc";
logname = ident.substr(0,loc);
tok.analyse(ident.substr(loc+1,ident.length()), " ", "", "", "=", "'", "'");
for ( Tokenizer::Items::iterator i = tok.items().begin(); i != tok.items().end(); i++) {
const std::string& tag = (*i).tag();
switch( ::toupper(tag[0]) ) {
case 'A':
props.push_back( Prop("Server", (*i).value()));
break;
case 'F': /* FILE='<file name>' */
case 'D': /* DATAFILE='<file name>' */
filename = (*i).value();
break;
case 'O': /* OPT='<NEW<CREATE,WRITE>, UPDATE, READ>' */
switch( ::toupper((*i).value()[0]) ) {
case 'C':
case 'N':
case 'W': typ = 'N'; break;
case 'U': typ = 'U'; break;
case 'O':
case 'R':
switch( ::toupper((*i).value()[2]) ) {
case 'C': /* RECREATE */ typ = 'R'; break;
case 'A': /* READ */
default: typ = 'O'; break;
}
break;
default: typ = 0; break;
}
break;
case 'S': // SVC='<service type>'
switch( ::toupper(tag[1]) ) {
case 'V': svc = (*i).value(); break;
case 'H':
switch(::toupper((*i).value()[0])) {
case 'Y':
props.push_back( Prop("ShareFiles", (*i).value()));
}
break;
}
break;
case 'T': // TYP='<HBOOK,ROOT,OBJY,...>'
switch(::toupper((*i).value()[0])) {
case 'H':
svc = "HbookCnv::ConvSvc";
break;
case 'P':
props.push_back( Prop("DbType", (*i).value()));
svc = "PoolDbCnvSvc";
break;
default:
props.push_back( Prop("DbType", (*i).value()));
svc = "DbCnvSvc";
break;
}
break;
default:
props.push_back( Prop((*i).tag(), (*i).value()));
break;
}
}
if ( 0 != typ ) {
IConversionSvc* pSvc = 0;
status = createService(name()+'.'+logname, svc, props, pSvc);
if ( status.isSuccess() ) {
status = attachTuple(filename,logname,typ,pSvc->repSvcType());
if ( status.isSuccess() ) {
m_connections.insert(Connections::value_type(m_rootName+'/'+logname,Connection(pSvc)));
return StatusCode::SUCCESS;
}
}
}
}
}
log << MSG::ERROR << "Cannot add " << ident << " invalid filename!" << endmsg;
return StatusCode::FAILURE;
}
| StatusCode TagCollectionSvc::createService | ( | const std::string & | nam, |
| const std::string & | typ, | ||
| const std::vector< Prop > & | props, | ||
| IConversionSvc *& | pSvc | ||
| ) | [protected, virtual] |
Create conversion service.
| nam | Name of the service to be created |
| svc | Service type if sepecified in the options |
| props |
Reimplemented from NTupleSvc.
Definition at line 159 of file TagCollectionSvc.cpp.
{
using Gaudi::Utils::TypeNameString;
SmartIF<ISvcManager> mgr(serviceLocator());
// TagCollectionSvc has to directly create a ConversionSvc to manage it directly.
StatusCode status = NO_INTERFACE;
if ( mgr.isValid() ) {
SmartIF<IService> &isvc = mgr->createService(TypeNameString(nam, typ));
if (isvc.isValid()) {
status = isvc->queryInterface(IConversionSvc::interfaceID(), (void**)&pSvc);
if ( status.isSuccess() ) {
SmartIF<IProperty> iprop(isvc);
status = NO_INTERFACE;
if ( iprop.isValid( ) ) {
for ( std::vector<Prop>::const_iterator j = props.begin(); j != props.end(); j++) {
iprop->setProperty(StringProperty((*j).first, (*j).second)).ignore();
}
// NTupleSvc has to directly create a ConversionSvc to manage it directly.
status = isvc->sysInitialize();
if ( status.isSuccess() ) {
status = pSvc->setDataProvider(this);
if ( status.isSuccess() ) {
return status;
}
}
}
pSvc->release();
}
}
}
pSvc = 0;
return status;
}
| StatusCode TagCollectionSvc::finalize | ( | ) | [virtual] |
DataSvc overrides: stop the service.
Finalize the service.
Reimplemented from NTupleSvc.
Definition at line 63 of file TagCollectionSvc.cpp.
{
StatusCode status = NTupleSvc::finalize();
return status;
}
| StatusCode TagCollectionSvc::initialize | ( | ) | [virtual] |
DataSvc overrides: Initialize the service.
Initialize the service.
Reimplemented from NTupleSvc.
Definition at line 57 of file TagCollectionSvc.cpp.
{
StatusCode status = NTupleSvc::initialize();
return status;
}
friend class SvcFactory< TagCollectionSvc > [friend] |
Definition at line 28 of file TagCollectionSvc.h.