24 boost::posix_time::time_duration timeout,
bool stackTrace =
false,
long maxCount = 0,
25 bool autostart =
false )
28 , m_maxCount( maxCount )
29 , m_stackTrace( stackTrace ) {}
39 bool m_stackTrace =
false;
44 << IncidentType::BeginEvent <<
endmsg;
49 <<
"Current memory usage is" 53 ", resident set size = " 55 if ( m_stackTrace && gSystem ) {
58 gSystem->StackTrace();
61 if ( m_maxCount > 0 && m_counter >= m_maxCount ) {
93 static const std::string serviceName =
"IncidentSvc";
96 error() <<
"Cannot retrieve " << serviceName <<
endmsg;
102 warning() <<
"StalledEventMonitor/" <<
name() <<
" instantiated with 0 time-out: no monitoring performed" <<
endmsg;
132 return base_class::finalize();
Definition of the MsgStream class used to transmit messages.
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
StatusCode stop() override
Stop the watchdog thread (after the event loop).
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
void start()
Start the watchdog thread.
virtual void onStop()
User implemented function that will be called when stopping.
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Gaudi::Property< unsigned int > m_eventTimeout
std::unique_ptr< WatchdogThread > m_watchdog
Pointer to the watchdog thread that checks for the event timeout.
void handle(const Incident &) override
Notify the watchdog thread for a new event.
Gaudi::Property< bool > m_stackTrace
constexpr static const auto SUCCESS
StatusCode start() override
Start the watchdog thread (before entering the event loop).
void ping()
Function to call to notify the watchdog thread that we are still alive.
#define DECLARE_COMPONENT(type)
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
const std::string & name() const override
Retrieve name of the service.
Service that monitor the time taken by processing of single events using a separate thread.
SmartIF< IIncidentSvc > m_incidentSvc
Pointer to the incident service.
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
This class is used for returning status codes from appropriate routines.
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
virtual void onPing()
User implemented function that will be called when ping is called.
StatusCode initialize() override
Initialization of the service.
Simple class for asynchronous check of time-out.
void stop()
Signal the watchdog thread to stop and wait for it.
Base class for all Incidents (computing events).
virtual void addListener(IIncidentListener *lis, const std::string &type="", long priority=0, bool rethrow=false, bool singleShot=false)=0
Add listener.
constexpr static const auto FAILURE
GAUDI_API long virtualMemory(MemoryUnit unit=kByte, InfoType fetch=Memory, long pid=-1)
Basic Process Information: priority boost.
StatusCode finalize() override
Finalization of the service.
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
virtual void removeListener(IIncidentListener *lis, const std::string &type="")=0
Remove listener.
virtual void action()
User implemented function that will be called if the time-out is reached.
GAUDI_API long pagedMemory(MemoryUnit unit=kByte, InfoType fetch=Memory, long pid=-1)
Basic Process Information: Amount of paged memory currently occupied by the process 'pid'.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
boost::posix_time::time_duration getTimeout() const
Get the current time-out value.
Gaudi::Property< int > m_maxTimeoutCount