18 #define DATASVC_RECORDDATASVC_CPP 46 m_cnvSvc = service( m_persSvcName,
true );
48 error() <<
"Failed to access RecordPersistencySvc." <<
endmsg;
55 sc = setDataLoader( m_cnvSvc.get() );
57 error() <<
"Failed to attach dataloader RecordPersistencySvc." <<
endmsg;
63 warning() <<
"Error declaring Record root DataObject" <<
endmsg;
67 if ( !m_incidentSvc ) {
68 fatal() <<
"IncidentSvc is invalid--base class failed." <<
endmsg;
76 m_incidentSvc->addListener(
this,
"FILE_OPEN_READ" );
77 m_incidentSvc->addListener(
this, m_saveIncidentName );
83 if ( m_incidentSvc ) m_incidentSvc->removeListener(
this );
91 if ( incident.
type() ==
"FILE_OPEN_READ" ) {
93 auto inc =
dynamic_cast<const Ctxt*
>( &incident );
95 always() <<
"Received invalid incident of type:" << incident.
type() <<
endmsg;
97 registerRecord( inc->source(), inc->tag() );
98 if ( !m_incidentName.empty() ) {
99 auto incidents = m_incidents;
101 for (
const auto& i : incidents ) m_incidentSvc->fireIncident(
Incident{i, m_incidentName} );
104 }
else if ( incident.
type() == m_saveIncidentName ) {
105 always() <<
"Saving records not implemented." <<
endmsg;
112 error() <<
"Failed to load records object" <<
endmsg;
119 debug() <<
"Loaded records object: " << id0 <<
endmsg;
120 sc = objectLeaves( pObj, leaves );
122 for (
const auto& i : leaves ) loadRecords( i );
130 if ( !data.
empty() && pAddr ) {
132 debug() <<
"Request to load record for file " << fid <<
endmsg;
133 StatusCode sc = registerAddress( m_root.get(), fid, pAddr );
135 warning() <<
"Failed to register record for:" << fid <<
endmsg;
139 if ( m_autoLoad ) { loadRecords( pAddr->
registry() ); }
141 }
else if ( !data.
empty() && !pAddr ) {
142 info() <<
"Failed to register record for:" << data <<
" [Invalid Address]" <<
endmsg;
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.
constexpr static const auto SUCCESS
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.
StatusCode initialize() override
Service initialization.
const StatusCode & ignore() const
Ignore/check StatusCode.
Base class for all Incidents (computing events).
constexpr static const auto FAILURE
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.