7 #ifndef _QITYPE_MANAGEABLE_HPP_
8 #define _QITYPE_MANAGEABLE_HPP_
12 #include <boost/function.hpp>
23 # pragma warning( push )
24 # pragma warning( disable: 4251 ) // dll interface
29 class ManageablePrivate;
30 class ExecutionContext;
60 : _id(id), _kind(kind), _slotId(slotId), _arguments(arguments),
66 const unsigned int&
id()
const {
return _id;}
69 const unsigned int&
slotId()
const {
return _slotId;}
88 unsigned int _callerContext;
89 unsigned int _calleeContext;
95 (
"minValue", minValue),
96 (
"maxValue", maxValue),
97 (
"cumulatedValue", cumulatedValue));
109 (
"arguments", arguments),
110 (
"timestamp", timestamp),
111 (
"userUsTime", userUsTime),
112 (
"systemUsTime", systemUsTime),
113 (
"callerContext", callerContext),
114 (
"calleeContext", calleeContext));
133 boost::mutex& initMutex();
136 void forceExecutionContext(boost::shared_ptr<ExecutionContext> eventLoop);
138 boost::shared_ptr<ExecutionContext> executionContext()
const;
144 bool isStatsEnabled()
const;
147 void enableStats(
bool enable);
149 void pushStats(
int slotId,
float wallTime,
float userTime,
float systemTime);
158 bool isTraceEnabled()
const;
169 void enableTrace(
bool enable);
176 using MethodMap = std::map<unsigned int, std::pair<AnyFunction, MetaCallType>>;
183 static MethodMap& manageableMmethodMap();
186 static void _build();
190 std::unique_ptr<ManageablePrivate> _p;
196 # pragma warning( pop )
200 #endif // _QITYPE_MANAGEABLE_HPP_
Stores min, max and sum of values fed to it.
Store statistics about method calls.
const unsigned int & calleeContext() const
const unsigned int & id() const
const qi::int64_t & userUsTime() const
QI_TYPE_STRUCT_AGREGATE_CONSTRUCTOR(qi::MinMaxSum,("minValue", minValue),("maxValue", maxValue),("cumulatedValue", cumulatedValue))
const qi::os::timeval & timestamp() const
EventTrace(unsigned int id, EventKind kind, unsigned int slotId, const AnyValue &arguments, const qi::os::timeval timestamp, qi::int64_t userUsTime=0, qi::int64_t systemUsTime=0, unsigned int callerContext=0, unsigned int calleeContext=0, qi::os::timeval postTimestamp=qi::os::timeval())
std::map< unsigned int, MethodStatistics > ObjectStatistics
const AnyValue & arguments() const
const EventKind & kind() const
std::map< unsigned int, SignalGetter > SignalMap
Signal< EventTrace > traceObject
Emitted each time a call starts and finishes, and for each signal trigger.
const qi::int64_t & systemUsTime() const
dll import/export and compiler message
QI_TYPE_STRUCT(qi::os::timeval, tv_sec, tv_usec)
Object is thread safe, multiple calls can occur in different threads in parallel. ...
QI_TYPE_ENUM(qi::EventTrace::EventKind)
boost::function< SignalBase *(void *)> SignalGetter
const qi::os::timeval & postTimestamp() const
struct similar to POSIX timeval
const unsigned int & callerContext() const
const unsigned int & slotId() const
Object is not thread safe, all method calls must occur in the same thread.
int system(const char *command)
Execute a shell command.
ObjectThreadingModel
Possible thread models for an object.
std::map< unsigned int, std::pair< AnyFunction, MetaCallType >> MethodMap