30#include <Ice/Config.h>
31#include <Ice/Handle.h>
32#include <Ice/Object.h>
33#include <IceUtil/Handle.h>
36#include "ArmarXCore/interface/core/Profiler.h"
37#include "ArmarXCore/interface/core/ThreadingIceBase.h"
41 armarx::ProfilerListenerPrx profilerTopic) :
53 const std::string& executableName,
54 const std::string& timestampUnit,
55 const std::string& eventName,
56 const std::string& parentName,
57 const std::string& functionName)
59 ProfilerEvent
event = {processId,
71 const ProfilerStatechartTransition& transition)
80 const std::string& stateIdentifier,
81 const armarx::StateParameterMap& inputParameterMap)
83 ProfilerStatechartParameters parameters = {
84 processId, Ice::Long(
timestamp), stateIdentifier, inputParameterMap};
92 const std::string& stateIdentifier,
93 const armarx::StateParameterMap& localParameterMap)
95 ProfilerStatechartParameters parameters = {
96 processId, Ice::Long(
timestamp), stateIdentifier, localParameterMap};
104 const std::string& stateIdentifier,
105 const armarx::StateParameterMap& outputParameterMap)
107 ProfilerStatechartParameters parameters = {
108 processId, Ice::Long(
timestamp), stateIdentifier, outputParameterMap};
116 const TransitionIceBase& transition)
120 ProfilerStatechartTransitionWithParameters profilerTransition =
131 ProfilerProcessCpuUsage process = {
141 ProfilerProcessMemoryUsage processMemoryUsage = {
149#define ARMARX_ICE_LOGGING_BUFFER_SIZE 500
152 armarx::ProfilerListenerPrx profilerTopic) :
174armarx::StateParameterMap
176 const armarx::StateParameterMap& source)
178 armarx::StateParameterMap destination;
180 for (armarx::StateParameterMap::const_iterator it = source.begin(); it != source.end(); it++)
182 destination[it->first] =
183 armarx::StateParameterIceBasePtr::dynamicCast(it->second->ice_clone());
188armarx::ProfilerStatechartTransitionWithParameters
192 const armarx::TransitionIceBase& transition)
194 StateIceBasePtr destinationState = StateIceBasePtr::dynamicCast(transition.destinationState);
197 StateParameterMap inputCopy =
copyDictionary(destinationState->inputParameters);
198 StateParameterMap localCopy =
copyDictionary(destinationState->localParameters);
199 StateParameterMap outputCopy;
200 if (transition.sourceState)
203 copyDictionary(StateIceBasePtr::dynamicCast(transition.sourceState)->outputParameters);
206 ProfilerStatechartTransitionWithParameters profilerTransition;
207 profilerTransition.processId = processId;
208 profilerTransition.timestamp =
timestamp;
210 profilerTransition.sourceStateIdentifier =
211 transition.sourceState
212 ? StateIceBasePtr::dynamicCast(transition.sourceState)->globalStateIdentifier
214 profilerTransition.targetStateIdentifier = destinationState->globalStateIdentifier;
215 profilerTransition.targetStateType = destinationState->stateType;
216 profilerTransition.eventName = transition.evt->eventName;
218 profilerTransition.inputParameters = inputCopy;
219 profilerTransition.localParameters = localCopy;
220 profilerTransition.outputParameters = outputCopy;
222 return profilerTransition;
228 const std::string& executableName,
229 const std::string& timestampUnit,
230 const std::string& eventName,
231 const std::string& parentName,
232 const std::string& functionName)
234 ProfilerEvent
event = {processId,
249 const ProfilerStatechartTransition& transition)
259 const std::string& stateIdentifier,
260 const armarx::StateParameterMap& inputParameterMap)
262 armarx::StateParameterMap copy =
copyDictionary(inputParameterMap);
264 ProfilerStatechartParameters parameters = {
265 processId, Ice::Long(
timestamp), stateIdentifier, copy};
276 const std::string& stateIdentifier,
277 const armarx::StateParameterMap& localParameterMap)
279 armarx::StateParameterMap copy =
copyDictionary(localParameterMap);
280 ProfilerStatechartParameters parameters = {
281 processId, Ice::Long(
timestamp), stateIdentifier, copy};
292 const std::string& stateIdentifier,
293 const armarx::StateParameterMap& outputParameterMap)
295 armarx::StateParameterMap copy =
copyDictionary(outputParameterMap);
296 ProfilerStatechartParameters parameters = {
297 processId, Ice::Long(
timestamp), stateIdentifier, copy};
308 const TransitionIceBase& transition)
312 ProfilerStatechartTransitionWithParameters profilerTransition =
325 ProfilerProcessCpuUsage process = {
338 ProfilerProcessMemoryUsage processMemoryUsage = {
354 ProfilerEventList eventsCopy;
364 ProfilerStatechartTransitionList transitionsCopy;
374 ProfilerStatechartParametersList parametersCopy;
384 ProfilerStatechartParametersList parametersCopy;
394 ProfilerStatechartParametersList parametersCopy;
404 ProfilerStatechartTransitionWithParametersList transitionsWithParametersCopy;
410 transitionsWithParametersCopy);
415 ProfilerProcessCpuUsageList cpuUsagesCopy;
425 ProfilerProcessMemoryUsageList memoryUsageCopy;
#define ARMARX_ICE_LOGGING_BUFFER_SIZE
static ApplicationPtr getInstance()
Retrieve shared pointer to the application object.
The periodic task executes one thread method repeatedly using the time period specified in the constr...
void logStatechartTransitionWithParameters(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition) override
void logStatechartOutputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &outputParameterMap) override
std::mutex profilerStatechartTransitionsMutex
ProfilerProcessMemoryUsageList profilerProcessMemoryUsages
~IceBufferedLoggingStrategy() override
void logStatechartInputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &inputParameterMap) override
void logEvent(pid_t processId, uint64_t timestamp, const std::string &executableName, const std::string ×tampUnit, const std::string &eventName, const std::string &parentName, const std::string &functionName) override
void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override
std::mutex profilerStatechartLocalParametersMutex
void logStatechartLocalParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &localParameterMap) override
std::mutex profilerStatechartTransitionsWithParametersMutex
static armarx::StateParameterMap copyDictionary(const armarx::StateParameterMap &source)
std::mutex profilerEventsMutex
ProfilerStatechartParametersList profilerStatechartOutputParameters
static ProfilerStatechartTransitionWithParameters toProfilerTransition(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition)
ProfilerListenerPrx profilerListenerPrx
void logStatechartTransition(const ProfilerStatechartTransition &transition) override
ProfilerEventList profilerEvents
std::mutex profilerCpuUsagesMutex
std::mutex profilerStatechartInputParametersMutex
PeriodicTask< IceBufferedLoggingStrategy >::pointer_type publisherTask
std::mutex profilerProcessMemoryUsagesMutex
void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override
ProfilerProcessCpuUsageList profilerProcessCpuUsages
ProfilerStatechartTransitionWithParametersList profilerStatechartTransitionsWithParameters
std::mutex profilerStatechartOutputParametersMutex
IceBufferedLoggingStrategy(ProfilerListenerPrx profilerTopic)
ProfilerStatechartParametersList profilerStatechartInputParameters
ProfilerStatechartTransitionList profilerStatechartTransitions
ProfilerStatechartParametersList profilerStatechartLocalParameters
IceLoggingStrategy(ProfilerListenerPrx profilerTopic)
void logStatechartTransitionWithParameters(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition) override
~IceLoggingStrategy() override
void logStatechartOutputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &outputParameterMap) override
void logStatechartInputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &inputParameterMap) override
void logEvent(pid_t processId, uint64_t timestamp, const std::string &executableName, const std::string ×tampUnit, const std::string &eventName, const std::string &parentName, const std::string &functionName) override
void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override
void logStatechartLocalParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &localParameterMap) override
ProfilerListenerPrx profilerListenerPrx
void logStatechartTransition(const ProfilerStatechartTransition &transition) override
void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
void copyDictionary(const StringVariantContainerBaseMap &source, StringVariantContainerBaseMap &destination)
Clears the destination map and copies the parameters of the source in it.