7 #ifndef _QITYPE_MANAGEABLE_HPP_
8 #define _QITYPE_MANAGEABLE_HPP_
16 #include <boost/function.hpp>
20 # pragma warning( push )
21 # pragma warning( disable: 4251 ) // dll interface
26 class ManageablePrivate;
27 class ExecutionContext;
57 : _id(id), _kind(kind), _slotId(slotId), _arguments(arguments),
63 const unsigned int&
id()
const {
return _id;}
66 const unsigned int&
slotId()
const {
return _slotId;}
85 unsigned int _callerContext;
86 unsigned int _calleeContext;
92 (
"minValue", minValue),
93 (
"maxValue", maxValue),
94 (
"cumulatedValue", cumulatedValue));
106 (
"arguments", arguments),
107 (
"timestamp", timestamp),
108 (
"userUsTime", userUsTime),
109 (
"systemUsTime", systemUsTime),
110 (
"callerContext", callerContext),
111 (
"calleeContext", calleeContext));
128 boost::mutex& initMutex();
131 void forceExecutionContext(boost::shared_ptr<ExecutionContext> eventLoop);
133 boost::shared_ptr<ExecutionContext> executionContext()
const;
139 bool isStatsEnabled()
const;
142 void enableStats(
bool enable);
144 void pushStats(
int slotId,
float wallTime,
float userTime,
float systemTime);
153 bool isTraceEnabled()
const;
164 void enableTrace(
bool enable);
171 typedef std::map<
unsigned int,
172 std::pair<AnyFunction, MetaCallType>
180 static MethodMap& manageableMmethodMap();
183 static void _build();
185 boost::scoped_ptr<ManageablePrivate>
_p;
190 # pragma warning( pop )
194 #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())
const AnyValue & arguments() const
const EventKind & kind() const
Signal< EventTrace > traceObject
Emitted each time a call starts and finishes, and for each signal trigger.
const qi::int64_t & systemUsTime() const
QI_TYPE_ENUM_REGISTER(qi::EventTrace::EventKind)
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. ...
boost::function< SignalBase *(void *)> SignalGetter
std::map< unsigned int, std::pair< AnyFunction, MetaCallType > > MethodMap
boost::scoped_ptr< ManageablePrivate > _p
const qi::os::timeval & postTimestamp() const
struct similar to POSIX timeval
const unsigned int & callerContext() const
std::map< unsigned int, MethodStatistics > ObjectStatistics
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, SignalGetter > SignalMap
int64_t int64_t
Cross-platform signed integer of length 64 bits (8 bytes).
uint32_t uint32_t
Cross-platform unsigned integer of length 32 bits (4 bytes).