DebugObserver.cpp
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5 *
6 * ArmarX is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * ArmarX is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * @package
19 * @author
20 * @date
21 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22 * GNU General Public License
23 */
24#include "DebugObserver.h"
25
26#include <chrono>
27
31
32namespace armarx
33{
34
38
39 void
41 {
42 usingTopic(getProperty<std::string>("DebugObserverTopicName"));
43
46 }
47
48 void
52
53 void
55 const AMD_DebugObserverInterface_setDebugDatafieldPtr& amd,
56 const std::string& channelName,
57 const std::string& datafieldName,
58 const VariantBasePtr& value,
59 const Ice::Current& c)
60 {
62 "DebugObserver::setDebugDatafield",
63 [this, amd, channelName, datafieldName, value]
64 {
66 amd,
67 [&]
68 {
69 if (!existsChannel(channelName))
70 {
71 offerChannel(channelName, "");
72 }
73
74 if (!existsDataField(channelName, datafieldName))
75 {
77 channelName, datafieldName, *VariantPtr::dynamicCast(value), "");
78 }
79 else
80 {
82 channelName, datafieldName, VariantPtr::dynamicCast(value));
83 }
84
85 updateChannel(channelName);
86 amd->ice_response();
87 });
88 });
89 }
90
91 void
92 DebugObserver::setDebugChannel_async(const AMD_DebugObserverInterface_setDebugChannelPtr& amd,
93 const std::string& channelName,
94 const StringVariantBaseMap& valueMap,
95 const Ice::Current& c)
96 {
97 addWorkerJob("DebugObserver::setDebugChannel",
98 [this, amd, channelName, valueMap]
99 {
101 [&]
102 {
104 valueMap);
105 amd->ice_response();
106 });
107 });
108 }
109
110 void
112 const AMD_DebugObserverInterface_removeDebugDatafieldPtr& amd,
113 const std::string& channelName,
114 const std::string& datafieldName,
115 const Ice::Current&)
116 {
117 addWorkerJob("DebugObserver::removeDebugDatafield",
118 [this, amd, channelName, datafieldName]
119 {
121 [&]
122 {
124 getName(), channelName, datafieldName));
125 amd->ice_response();
126 });
127 });
128 }
129
130 void
132 const AMD_DebugObserverInterface_removeDebugChannelPtr& amd,
133 const std::string& channelName,
134 const Ice::Current&)
135 {
136 addWorkerJob("DebugObserver::removeDebugChannel",
137 [this, amd, channelName]
138 {
140 [&]
141 {
142 removeChannel(channelName);
143 amd->ice_response();
144 });
145 });
146 }
147
148 void
150 const AMD_DebugObserverInterface_removeAllChannelsPtr& amd,
151 const Ice::Current&)
152 {
153 addWorkerJob("DebugObserver::removeAllChannels",
154 [this, amd]
155 {
157 [&]
158 {
159 ChannelRegistry channels =
161 ChannelRegistry::iterator it =
162 channels.end();
163
164 for (; it != channels.end(); it++)
165 {
166 ChannelRegistryEntry& entry = it->second;
167 removeChannel(entry.name);
168 }
169 amd->ice_response();
170 });
171 });
172 }
173} // namespace armarx
174
constexpr T c
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Definition Component.cpp:90
Property< PropertyType > getProperty(const std::string &name)
Checks if the numbers published in the relevant data fields equal a reference value.
Checks if the relevant data fields have been updated since the installation of this condition.
DataFieldIdentifier provide the basis to identify data field within a distributed ArmarX scenario.
void onConnectObserver() override
Framework hook.
void setDebugDatafield_async(const AMD_DebugObserverInterface_setDebugDatafieldPtr &amd, const std::string &channelName, const std::string &datafieldName, const VariantBasePtr &value, const Ice::Current &) override
Creates or updates (if it already exists) a datafield in a channel.
void removeDebugDatafield_async(const AMD_DebugObserverInterface_removeDebugDatafieldPtr &amd, const ::std::string &channelName, const ::std::string &datafieldName, const ::Ice::Current &) override
Removes a datafield from the DebugObserver.
void removeAllChannels_async(const AMD_DebugObserverInterface_removeAllChannelsPtr &amd, const ::Ice::Current &) override
Removes all channels.
PropertyDefinitionsPtr createPropertyDefinitions() override
void removeDebugChannel_async(const AMD_DebugObserverInterface_removeDebugChannelPtr &amd, const ::std::string &channelName, const ::Ice::Current &) override
Removes a channel and all its datafield it has.
void onInitObserver() override
Framework hook.
void setDebugChannel_async(const AMD_DebugObserverInterface_setDebugChannelPtr &amd, const std::string &channelName, const StringVariantBaseMap &valueMap, const Ice::Current &) override
void usingTopic(const std::string &name, bool orderedPublishing=false)
Registers a proxy for subscription after initialization.
std::string getName() const
Retrieve name of object.
bool existsChannel(const std::string &channelName) const
void offerChannel(std::string channelName, std::string description)
Offer a channel.
Definition Observer.cpp:131
void removeDatafield(DataFieldIdentifierBasePtr id)
Definition Observer.cpp:344
void removeChannel(std::string channelName)
Remove a channel.
Definition Observer.cpp:318
void offerConditionCheck(std::string checkName, ConditionCheck *conditionCheck)
Offer a condition check.
Definition Observer.cpp:301
void updateChannel(const std::string &channelName, const std::set< std::string > &updatedDatafields=std::set< std::string >())
Update all conditions for a channel.
Definition Observer.cpp:788
void addWorkerJob(const std::string &name, std::function< void(void)> &&f) const
void offerDataFieldWithDefault(std::string channelName, std::string datafieldName, const Variant &defaultValue, std::string description)
Offer a datafield with default value.
Definition Observer.cpp:160
bool existsDataField(const std::string &channelName, const std::string &datafieldName) const
ChannelRegistry getAvailableChannels(bool includeMetaChannels)
Retrieve information on all sensory data channels available from the observer.
void setDataFieldFlatCopy(const std::string &channelName, const std::string &datafieldName, const VariantPtr &value, bool triggerFilterUpdate=true)
Definition Observer.cpp:548
void callAndPassExceptionToAMD(auto &amd, auto f) const
Definition Observer.h:514
void offerOrUpdateDataFieldsFlatCopy(const std::string &channelName, const StringVariantBaseMap &valueMap)
Definition Observer.cpp:260
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::map< std::string, VariantBasePtr > StringVariantBaseMap
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
::IceInternal::Handle<::armarx::VariantBase > VariantBasePtr