27 #include <type_traits>
30 #include <ArmarXCore/interface/observers/ChannelRefBase.h>
31 #include <ArmarXCore/interface/observers/ObserverInterface.h>
52 template <
class BaseClass,
class VariantClass>
56 ChannelRef() : validationTimeout(4000), waitIntervallMs(10)
64 ChannelRef(ObserverInterfacePrx observerPrx, std::string channelName);
77 VariantDataClassPtr clone(
const Ice::Current&
c = Ice::emptyCurrent)
const override;
78 std::string output(
const Ice::Current&
c = Ice::emptyCurrent)
const override;
79 VariantTypeId getType(
const Ice::Current&
c = Ice::emptyCurrent)
const override;
80 bool validate(
const Ice::Current&
c = Ice::emptyCurrent)
override;
85 const Ice::StringSeq& getDataFieldNames()
const;
86 bool hasDatafield(
const std::string& datafieldName)
const;
87 bool getInitialized();
88 void refetchChannel();
93 get(
const std::string& key)
102 return var->get<
T>();
105 template <
typename T>
106 typename std::enable_if_t<!std::is_base_of_v<VariantDataClass, T>,
T>
107 get(
const std::string& key)
116 return var->get<
T>();
120 const std::string& getChannelName()
const;
123 const std::string& getObserverName()
const;
124 const ObserverInterfacePrx& getObserverProxy();
142 stream << rhs->output();
147 void serialize(
const ObjectSerializerBasePtr& serializer,
148 const ::Ice::Current& = Ice::emptyCurrent)
const override;
149 void deserialize(
const ObjectSerializerBasePtr& serializer,
150 const ::Ice::Current& = Ice::emptyCurrent)
override;
154 void initializeDataFields(
Observer* obs =
nullptr);
157 const IceUtil::Int64 validationTimeout;
158 const int waitIntervallMs;
162 void ice_postUnmarshal()
override;
172 extern template class ::IceInternal::Handle<::armarx::ChannelRef>;