ATLAS Offline Software
Loading...
Searching...
No Matches
python.FilePeekerLib.FilePeekerSvc Class Reference
Inheritance diagram for python.FilePeekerLib.FilePeekerSvc:
Collaboration diagram for python.FilePeekerLib.FilePeekerSvc:

Public Member Functions

 __init__ (self, name='FilePeekerSvc', **kw)
 initialize (self)
 finalize (self)
 handle (self, incident)
virtual StatusCode reinitialize () override
virtual StatusCode start () override
virtual StatusCode stop () override
virtual StatusCode sysInitialize () override
const char * typeName () const override
 return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part
virtual PyObjectself () override
 return associated python object.

Protected Member Functions

virtual bool setPyAttr (PyObject *pyobj) override
 attach the C++ component to its python cousin

Protected Attributes

PyObjectm_self
 Pointer to self (from the python world)

Detailed Description

a service to spy for file meta-data and store this collected data into
the pool file, in a python-pickle friendly format

Definition at line 675 of file FilePeekerLib.py.

Constructor & Destructor Documentation

◆ __init__()

python.FilePeekerLib.FilePeekerSvc.__init__ ( self,
name = 'FilePeekerSvc',
** kw )

Definition at line 680 of file FilePeekerLib.py.

680 def __init__(self, name='FilePeekerSvc', **kw):
681 kw['name'] = name
682 super(FilePeekerSvc, self).__init__(**kw)
683
684

Member Function Documentation

◆ finalize()

python.FilePeekerLib.FilePeekerSvc.finalize ( self)

Definition at line 699 of file FilePeekerLib.py.

699 def finalize(self):
700 return StatusCode.Success
701

◆ handle()

python.FilePeekerLib.FilePeekerSvc.handle ( self,
incident )

Definition at line 702 of file FilePeekerLib.py.

702 def handle(self, incident):
703 tp = incident.type()
704 if tp == 'EndEvent':
705 pass
706 elif tp == 'BeginInputFile':
707 self.msg.info('input file name: [%s]', incident.fileName())
708 pass
709 else:
710 pass
711 return
712

◆ initialize()

python.FilePeekerLib.FilePeekerSvc.initialize ( self)

Definition at line 685 of file FilePeekerLib.py.

685 def initialize(self):
686 # register with the incident svc
687 svc = PyAthena.py_svc('IncidentSvc', iface='IIncidentSvc')
688 if not svc:
689 self.msg.error('unable to get the incident svc')
690 return StatusCode.Failure
691
692 for incident in ('EndEvent',
693 'BeginInputFile',):
694 svc.addListener(self, incident)
695 pass
696
697 return StatusCode.Success
698
void initialize()

◆ reinitialize()

StatusCode PyAthena::Svc::reinitialize ( )
overridevirtualinherited

Definition at line 64 of file PyAthenaSvc.cxx.

65{
66 ATH_MSG_INFO("Re-Initializing " << name() << "...");
67 return PyAthena::callPyMethod( m_self, "sysReinitialize" );
68}
#define ATH_MSG_INFO(x)
PyObject * m_self
Pointer to self (from the python world)
Definition PyAthenaSvc.h:89

◆ self()

virtual PyObject * PyAthena::Svc::self ( )
inlineoverridevirtualinherited

return associated python object.

BORROWED reference.

Definition at line 68 of file PyAthenaSvc.h.

68{ return m_self; }

◆ setPyAttr()

bool PyAthena::Svc::setPyAttr ( PyObject * pyobj)
overrideprotectedvirtualinherited

attach the C++ component to its python cousin

Definition at line 154 of file PyAthenaSvc.cxx.

155{
156 // now we tell the PyObject which C++ object it is the cousin of.
157 RootUtils::PyGILStateEnsure ensure;
158 PyObject* pyobj = TPython::CPPInstance_FromVoidPtr
159 ( (void*)this, this->typeName() );
160 if ( !pyobj ) {
161 PyErr_Clear();
162 // try PyAthena::Svc
163 pyobj = TPython::CPPInstance_FromVoidPtr ((void*)this, "PyAthena::Svc");
165 ("could not dyncast component [" << name() << "] to a python "
166 << "object of type [" << this->typeName() << "] (probably a missing "
167 << "dictionary)" << endmsg
168 << "fallback to [PyAthena::Svc]...");
169 }
170 if ( !pyobj ) {
171 PyErr_Clear();
173 ("Could not dyncast component [" << name() << "] to a pyobject of type ["
174 << this->typeName() << "]");
175 } else {
176 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", pyobj) ) {
177 PyErr_Clear();
179 ("Could not attach C++ handle [" << name() << "] to its python "
180 << "cousin !");
181 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", Py_None) ) {
182 PyErr_Clear();
184 ("could not attach a dummy C++ handle [" << name() << "] to its "
185 << "python cousin !");
186 }
187 } else {
188 return true;
189 }
190 }
191 return false;
192}
#define endmsg
#define ATH_MSG_WARNING(x)
_object PyObject
const char * typeName() const override
return the std::type_info name of the underlying py-component This is used by concrete implementation...

◆ start()

StatusCode PyAthena::Svc::start ( )
overridevirtualinherited

Definition at line 78 of file PyAthenaSvc.cxx.

79{
80 return PyAthena::callPyMethod( m_self, "sysStart" );
81}

◆ stop()

StatusCode PyAthena::Svc::stop ( )
overridevirtualinherited

Definition at line 84 of file PyAthenaSvc.cxx.

85{
86 return PyAthena::callPyMethod( m_self, "sysStop" );
87}

◆ sysInitialize()

StatusCode PyAthena::Svc::sysInitialize ( )
overridevirtualinherited

Definition at line 90 of file PyAthenaSvc.cxx.

91{
92 ServiceHandle<IPyComponentMgr> pyMgr
93 ( "PyAthena::PyComponentMgr/PyComponentMgr", name() );
94 if ( !pyMgr.retrieve().isSuccess() ) {
96 ("Could not retrieve service [" << pyMgr.typeAndName() << "] !!");
97 return StatusCode::FAILURE;
98 }
99
100 // first retrieve our python object cousin...
101 m_self = pyMgr->pyObject( this );
102
103 if ( m_self == Py_None ) {
104 ATH_MSG_ERROR("Wrapped PyObject is NONE !");
105 return StatusCode::FAILURE;
106 }
107
108 // re-route to usual sysInit...
109 return SvcBase_t::sysInitialize();
110}
#define ATH_MSG_ERROR(x)

◆ typeName()

const char * PyAthena::Svc::typeName ( ) const
overrideinherited

return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part

Definition at line 114 of file PyAthenaSvc.cxx.

115{
116 static const std::string tname = System::typeinfoName(typeid(*this));
117 return tname.c_str();
118}

Member Data Documentation

◆ m_self

PyObject* PyAthena::Svc::m_self
protectedinherited

Pointer to self (from the python world)

Definition at line 89 of file PyAthenaSvc.h.


The documentation for this class was generated from the following file: