18 #define DATASVC_MULTISTORESVC_CPP
42 typedef const std::string
CSTR;
54 Partition() : dataProvider(0), dataManager(0)
57 Partition(
const Partition& entry)
58 : dataProvider(entry.dataProvider),
59 dataManager(entry.dataManager),
63 Partition& operator=(
const Partition& entry) {
64 dataProvider = entry.dataProvider;
65 dataManager = entry.dataManager;
132 #define _CALL(P,F,ARGS) \
133 P ? P->F ARGS : IDataProviderSvc::INVALID_ROOT
185 Partitions::iterator
i;
187 (*i).second.dataManager->clearStore().ignore();
261 Partitions::iterator
i;
262 if ( 0 != pDataLoader ) pDataLoader->
addRef();
264 if ( 0 != pDataLoader ) {
269 (*i).second.dataManager->setDataLoader(
m_dataLoader).ignore();
445 return create(nam, typ, pPartition);
452 Gaudi::Utils::TypeNameString
item(typ);
461 p.dataManager = dataMgr;
462 p.dataProvider = dataProv;
463 p.dataManager->addRef();
464 p.dataProvider->addRef();
478 return PARTITION_EXISTS;
485 if ( (*i).second.dataManager ==
m_current.dataManager ) {
488 (*i).second.dataManager->clearStore().ignore();
489 (*i).second.dataProvider->release();
490 (*i).second.dataManager->release();
494 return PARTITION_NOT_PRESENT;
501 Partitions::iterator
i;
503 if ( (*i).second.dataProvider == provider ) {
504 (*i).second.dataManager->clearStore().ignore();
505 (*i).second.dataProvider->release();
506 (*i).second.dataManager->release();
511 return PARTITION_NOT_PRESENT;
524 return PARTITION_NOT_PRESENT;
532 Partitions::iterator
i;
534 if ( (*i).second.dataProvider == provider ) {
539 return PARTITION_NOT_PRESENT;
548 pPartition = (*i).second.dataProvider;
552 return PARTITION_NOT_PRESENT;
564 return NO_ACTIVE_PARTITION;
573 <<
"Failed to retrieve data loader "
581 log <<
MSG::ERROR <<
"Failed to retrieve data loader "
588 log <<
MSG::ERROR <<
"Failed to set data loader "
613 log <<
MSG::ERROR <<
"Failed to connect to all store partitions." <<
endmsg;
624 log <<
MSG::ERROR <<
"Enable to reinitialize base class"
693 sc = (*i).second.dataManager->setRoot(
m_root.
path, pAdd);
701 sc = (*i).second.dataManager->setRoot(
m_root.
path, pObj);
718 Partitions::iterator
i;
720 (*i).second.dataManager->clearStore().ignore();
721 (*i).second.dataProvider->release();
722 (*i).second.dataManager->release();
730 std::string typ, nam;
731 PartitionDefs::iterator j;
735 Tokenizer::Items::iterator
i;
736 tok.
analyse(*j,
" ",
"",
"",
"=",
"'",
"'");
737 for(i = tok.
items().begin(); i != tok.
items().end(); i++ ) {
738 CSTR& t = (*i).tag();
739 CSTR& v = (*i).value();