28 #define DATASVC_RECORDDATASVC_CPP 56 m_cnvSvc = service( m_persSvcName,
true );
58 error() <<
"Failed to access RecordPersistencySvc." <<
endmsg;
65 sc = setDataLoader( m_cnvSvc.get() );
67 error() <<
"Failed to attach dataloader RecordPersistencySvc." <<
endmsg;
73 warning() <<
"Error declaring Record root DataObject" <<
endmsg;
77 if ( !m_incidentSvc ) {
78 fatal() <<
"IncidentSvc is invalid--base class failed." <<
endmsg;
86 m_incidentSvc->addListener(
this,
"FILE_OPEN_READ" );
87 m_incidentSvc->addListener(
this, m_saveIncidentName );
93 if ( m_incidentSvc ) m_incidentSvc->removeListener(
this );
101 if ( incident.
type() ==
"FILE_OPEN_READ" ) {
103 auto inc = dynamic_cast<const Ctxt*>( &incident );
105 always() <<
"Received invalid incident of type:" << incident.
type() <<
endmsg;
107 registerRecord( inc->source(), inc->tag() );
108 if ( !m_incidentName.empty() ) {
109 auto incidents = m_incidents;
111 for (
const auto& i : incidents ) m_incidentSvc->fireIncident(
Incident{i, m_incidentName} );
114 }
else if ( incident.
type() == m_saveIncidentName ) {
115 always() <<
"Saving records not implemented." <<
endmsg;
122 error() <<
"Failed to load records object" <<
endmsg;
129 debug() <<
"Loaded records object: " << id0 <<
endmsg;
130 sc = objectLeaves( pObj, leaves );
132 for (
const auto& i : leaves ) loadRecords( i );
140 if ( !data.
empty() && pAddr ) {
142 debug() <<
"Request to load record for file " << fid <<
endmsg;
143 StatusCode sc = registerAddress( m_root.get(), fid, pAddr );
145 warning() <<
"Failed to register record for:" << fid <<
endmsg;
149 if ( m_autoLoad ) { loadRecords( pAddr->
registry() ); }
151 }
else if ( !data.
empty() && !pAddr ) {
152 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
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 IRegistry * registry() const =0
Update branch name.
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.
const StatusCode & ignore() const
Ignore/check StatusCode.
StatusCode initialize() override
Service initialization.
Base class for all Incidents (computing events).
constexpr static const auto FAILURE
RecordDataSvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
virtual const id_type & identifier() const =0
Full identifier (or key)
void handle(const Incident &incident) override
IIncidentListener override: Inform that a new incident has occured.
StatusCode initialize() override
Service initialisation.
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.