18 #define DATASVC_RECORDDATASVC_CPP 47 m_cnvSvc = service( m_persSvcName,
true );
49 error() <<
"Failed to access RecordPersistencySvc." <<
endmsg;
56 sc = setDataLoader( m_cnvSvc.get() );
58 error() <<
"Failed to attach dataloader RecordPersistencySvc." <<
endmsg;
64 warning() <<
"Error declaring Record root DataObject" <<
endmsg;
68 if ( !m_incidentSvc ) {
69 fatal() <<
"IncidentSvc is invalid--base class failed." <<
endmsg;
77 m_incidentSvc->addListener(
this,
"FILE_OPEN_READ" );
78 m_incidentSvc->addListener(
this, m_saveIncidentName );
85 if ( m_incidentSvc ) m_incidentSvc->removeListener(
this );
94 if ( incident.
type() ==
"FILE_OPEN_READ" ) {
96 auto inc =
dynamic_cast<const Ctxt*
>( &incident );
98 always() <<
"Received invalid incident of type:" << incident.
type() <<
endmsg;
100 registerRecord( inc->source(), inc->tag() );
101 if ( !m_incidentName.empty() ) {
102 auto incidents = m_incidents;
104 for (
const auto& i : incidents ) m_incidentSvc->fireIncident(
Incident{i, m_incidentName} );
107 }
else if ( incident.
type() == m_saveIncidentName ) {
108 always() <<
"Saving records not implemented." <<
endmsg;
116 error() <<
"Failed to load records object: " << pObj->
identifier() <<
endmsg;
123 debug() <<
"Loaded records object: " << id0 <<
endmsg;
124 sc = objectLeaves( pObj, leaves );
126 for (
const auto& i : leaves ) loadRecords( i );
135 if ( !data.
empty() && pAddr ) {
137 debug() <<
"Request to load record for file " << fid <<
endmsg;
138 StatusCode sc = registerAddress( m_root, fid, pAddr );
140 warning() <<
"Failed to register record for:" << fid <<
endmsg;
148 }
else if ( !data.
empty() && !pAddr ) {
149 info() <<
"Failed to register record for:" << data <<
" [Invalid Address]" <<
endmsg;
constexpr static const auto FAILURE
StatusCode finalize() override
Service finalization.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
const std::string & type() const
Access to the incident type.
Gaudi::Property< std::string > m_rootName
virtual IRegistry * registry() const =0
Update branch name.
virtual unsigned long release()=0
release reference to object
A RecordDataSvc is the base class for event services.
#define DECLARE_COMPONENT(type)
virtual const id_type & identifier() const =0
Full identifier (or key)
This class is used for returning status codes from appropriate routines.
void clear(STATE_TYPE _i=std::ios_base::failbit)
The IRegistry represents the entry door to the environment any data object residing in a transient da...
StatusCode finalize() override
Service initialization.
constexpr static const auto SUCCESS
StatusCode initialize() override
Service initialization.
const StatusCode & ignore() const
Ignore/check StatusCode.
Base class for all Incidents (computing events).
RecordDataSvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
void handle(const Incident &incident) override
IIncidentListener override: Inform that a new incident has occured.
void registerRecord(const std::string &data, IOpaqueAddress *pAddr)
Load new record into the data store if necessary.
Opaque address interface definition.
The IProperty is the basic interface for all components which have properties that can be set or get...
A DataObject is the base class of any identifiable object on any data store.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
void loadRecords(IRegistry *pReg)
Load dependent records into memory.