StateWatcher.h
Go to the documentation of this file.
1 /*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package Mirko Waechter
17 * @author (waechter at kit dot edu)
18 * @date 2015
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22 #pragma once
23 #include <mutex>
24 
27 #include <ArmarXCore/interface/observers/ProfilerObserverInterface.h>
29 
32 
33 namespace armarx
34 {
35 
36  class StateWatcher : public armarx::ManagedIceObject, public ProfilerListener
37  // public EventListenerInterface
38  {
39  public:
41  {
42  StateIceBasePtr iceState;
43  std::set<statechartmodel::StatePtr> states;
44  std::set<StateItem*> stateItems;
45  std::map<std::string, ::armarx::StateParameterMap> parameters;
46  };
47 
48  using StateListenerDataMap = std::map<std::string, StateListenerData>;
49 
50  StateWatcher();
51  bool subscribeToState(StateIceBasePtr iceState, StateItem* state);
52  bool subscribeToState(StateIceBasePtr iceState, statechartmodel::StatePtr state);
53  bool unsubscribeState(StateItem* state);
55  const std::string paramMapType) const;
57  const std::string paramMapType) const;
58 
59  void clear();
60 
61  static std::string ExtractStateName(const std::string globalIdString);
62  // ManagedIceObject interface
63  std::string getDefaultName() const override;
64 
65  protected:
66  void onInitComponent() override;
67  void onConnectComponent() override;
68  void onDisconnectComponent() override;
69 
70  void subscriptionFunction();
71 
73  mutable std::mutex mapMutex;
74  ConditionHandlerInterfacePrx conditionHandler;
75  ProfilerObserverInterfacePrx profilerObserver;
76  using SubscriptionMap = std::vector<
77  std::pair<StateIceBasePtr, std::pair<statechartmodel::StatePtr, StateItem*>>>;
80 
81 
82  // ProfilerListener interface
83  public:
84  void reportNetworkTraffic(const std::string&,
85  const std::string&,
86  Ice::Int,
87  Ice::Int,
88  const Ice::Current&) override;
89  void reportEvent(const ProfilerEvent&, const Ice::Current&) override;
90  void reportStatechartTransition(const ProfilerStatechartTransition& event,
91  const Ice::Current&) override;
92  void reportStatechartInputParameters(const ProfilerStatechartParameters& event,
93  const Ice::Current&) override;
94  void reportStatechartLocalParameters(const ProfilerStatechartParameters& event,
95  const Ice::Current&) override;
96  void reportStatechartOutputParameters(const ProfilerStatechartParameters&,
97  const Ice::Current&) override;
98  void reportProcessCpuUsage(const ProfilerProcessCpuUsage&, const Ice::Current&) override;
99  void reportProcessMemoryUsage(const ProfilerProcessMemoryUsage&,
100  const Ice::Current&) override;
101  void reportEventList(const ProfilerEventList&, const Ice::Current&) override;
102  void reportStatechartTransitionList(const ProfilerStatechartTransitionList&,
103  const Ice::Current&) override;
104  void reportStatechartInputParametersList(const ProfilerStatechartParametersList& data,
105  const Ice::Current&) override;
106  void reportStatechartLocalParametersList(const ProfilerStatechartParametersList&,
107  const Ice::Current&) override;
108  void reportStatechartOutputParametersList(const ProfilerStatechartParametersList&,
109  const Ice::Current&) override;
110  void reportProcessCpuUsageList(const ProfilerProcessCpuUsageList&,
111  const Ice::Current&) override;
112  void reportProcessMemoryUsageList(const ProfilerProcessMemoryUsageList&,
113  const Ice::Current&) override;
114 
115  void
116  reportStatechartTransitionWithParameters(const ProfilerStatechartTransitionWithParameters&,
117  const Ice::Current&) override
118  {
119  }
120 
121  void
123  const ProfilerStatechartTransitionWithParametersList&,
124  const Ice::Current&) override
125  {
126  }
127  };
129 } // namespace armarx
armarx::StateWatcher::ExtractStateName
static std::string ExtractStateName(const std::string globalIdString)
Definition: StateWatcher.cpp:262
armarx::StateWatcher::unsubscribeState
bool unsubscribeState(StateItem *state)
Definition: StateWatcher.cpp:150
armarx::StateWatcher::reportNetworkTraffic
void reportNetworkTraffic(const std::string &, const std::string &, Ice::Int, Ice::Int, const Ice::Current &) override
Definition: StateWatcher.cpp:278
armarx::StateWatcher::reportStatechartOutputParameters
void reportStatechartOutputParameters(const ProfilerStatechartParameters &, const Ice::Current &) override
Definition: StateWatcher.cpp:503
armarx::StateWatcher::subscribeToState
bool subscribeToState(StateIceBasePtr iceState, StateItem *state)
Definition: StateWatcher.cpp:168
armarx::StateWatcher::StateListenerData
Definition: StateWatcher.h:40
armarx::StateWatcher::mapMutex
std::mutex mapMutex
Definition: StateWatcher.h:73
armarx::StateWatcher::reportStatechartOutputParametersList
void reportStatechartOutputParametersList(const ProfilerStatechartParametersList &, const Ice::Current &) override
Definition: StateWatcher.cpp:557
armarx::StateWatcher::reportStatechartTransitionList
void reportStatechartTransitionList(const ProfilerStatechartTransitionList &, const Ice::Current &) override
Definition: StateWatcher.cpp:527
armarx::StateWatcher::onDisconnectComponent
void onDisconnectComponent() override
Hook for subclass.
Definition: StateWatcher.cpp:61
armarx::StateWatcher::getStateParameter
VariantPtr getStateParameter(statechartmodel::StatePtr state, const std::string paramMapType) const
Definition: StateWatcher.cpp:187
StateItem.h
armarx::StateWatcher
Definition: StateWatcher.h:36
PeriodicTask.h
armarx::StateWatcher::clear
void clear()
Definition: StateWatcher.cpp:254
armarx::StateWatcher::StateListenerData::states
std::set< statechartmodel::StatePtr > states
Definition: StateWatcher.h:43
armarx::StateWatcher::reportProcessMemoryUsageList
void reportProcessMemoryUsageList(const ProfilerProcessMemoryUsageList &, const Ice::Current &) override
Definition: StateWatcher.cpp:572
armarx::StateWatcher::subscriptionQueue
SubscriptionMap subscriptionQueue
Definition: StateWatcher.h:78
armarx::StateWatcher::reportProcessMemoryUsage
void reportProcessMemoryUsage(const ProfilerProcessMemoryUsage &, const Ice::Current &) override
Definition: StateWatcher.cpp:517
armarx::StateWatcher::reportEvent
void reportEvent(const ProfilerEvent &, const Ice::Current &) override
Definition: StateWatcher.cpp:287
armarx::StateWatcher::reportProcessCpuUsage
void reportProcessCpuUsage(const ProfilerProcessCpuUsage &, const Ice::Current &) override
Definition: StateWatcher.cpp:512
IceInternal::Handle< Variant >
DatafieldRef.h
armarx::StateWatcher::reportStatechartInputParameters
void reportStatechartInputParameters(const ProfilerStatechartParameters &event, const Ice::Current &) override
Definition: StateWatcher.cpp:485
armarx::StateWatcher::reportProcessCpuUsageList
void reportProcessCpuUsageList(const ProfilerProcessCpuUsageList &, const Ice::Current &) override
Definition: StateWatcher.cpp:567
armarx::StateWatcher::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: StateWatcher.cpp:44
ManagedIceObject.h
armarx::StateWatcher::subscriptionTask
PeriodicTask< StateWatcher >::pointer_type subscriptionTask
Definition: StateWatcher.h:79
armarx::statechartmodel::StateParameterMap
QMap< QString, StateParameterPtr > StateParameterMap
Definition: StateParameter.h:46
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::StateWatcher::stateMap
StateListenerDataMap stateMap
Definition: StateWatcher.h:72
armarx::StateWatcher::subscriptionFunction
void subscriptionFunction()
Definition: StateWatcher.cpp:74
armarx::StateWatcher::reportEventList
void reportEventList(const ProfilerEventList &, const Ice::Current &) override
Definition: StateWatcher.cpp:522
armarx::StateWatcher::StateWatcher
StateWatcher()
Definition: StateWatcher.cpp:39
armarx::StateWatcher::conditionHandler
ConditionHandlerInterfacePrx conditionHandler
Definition: StateWatcher.h:74
armarx::StateWatcher::StateListenerData::parameters
std::map< std::string, ::armarx::StateParameterMap > parameters
Definition: StateWatcher.h:45
armarx::StateWatcher::SubscriptionMap
std::vector< std::pair< StateIceBasePtr, std::pair< statechartmodel::StatePtr, StateItem * > >> SubscriptionMap
Definition: StateWatcher.h:77
armarx::StateWatcher::reportStatechartTransitionWithParametersList
void reportStatechartTransitionWithParametersList(const ProfilerStatechartTransitionWithParametersList &, const Ice::Current &) override
Definition: StateWatcher.h:122
armarx::StateWatcher::StateListenerData::stateItems
std::set< StateItem * > stateItems
Definition: StateWatcher.h:44
armarx::StateWatcher::StateListenerData::iceState
StateIceBasePtr iceState
Definition: StateWatcher.h:42
armarx::StateWatcher::getDefaultName
std::string getDefaultName() const override
Retrieve default name of component.
Definition: StateWatcher.cpp:272
armarx::ManagedIceObject
The ManagedIceObject is the base class for all ArmarX objects.
Definition: ManagedIceObject.h:162
armarx::StateWatcher::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: StateWatcher.cpp:50
armarx::StateWatcher::reportStatechartInputParametersList
void reportStatechartInputParametersList(const ProfilerStatechartParametersList &data, const Ice::Current &) override
Definition: StateWatcher.cpp:537
IceUtil::Handle
Definition: forward_declarations.h:30
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:917
armarx::StateWatcher::reportStatechartTransitionWithParameters
void reportStatechartTransitionWithParameters(const ProfilerStatechartTransitionWithParameters &, const Ice::Current &) override
Definition: StateWatcher.h:116
armarx::statechartmodel::StatePtr
std::shared_ptr< State > StatePtr
Definition: State.h:48
armarx::StateItem
Definition: StateItem.h:58
armarx::StateWatcher::reportStatechartTransition
void reportStatechartTransition(const ProfilerStatechartTransition &event, const Ice::Current &) override
Definition: StateWatcher.cpp:327
armarx::StateWatcher::getStateParameterMap
::armarx::StateParameterMap getStateParameterMap(statechartmodel::StatePtr state, const std::string paramMapType) const
Definition: StateWatcher.cpp:216
State.h
armarx::StateWatcher::reportStatechartLocalParameters
void reportStatechartLocalParameters(const ProfilerStatechartParameters &event, const Ice::Current &) override
Definition: StateWatcher.cpp:494
armarx::StateWatcher::StateListenerDataMap
std::map< std::string, StateListenerData > StateListenerDataMap
Definition: StateWatcher.h:48
armarx::StateWatcher::reportStatechartLocalParametersList
void reportStatechartLocalParametersList(const ProfilerStatechartParametersList &, const Ice::Current &) override
Definition: StateWatcher.cpp:547
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::StateWatcher::profilerObserver
ProfilerObserverInterfacePrx profilerObserver
Definition: StateWatcher.h:75