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;
172extern template class ::IceInternal::Handle<::armarx::ChannelRef>;
std::ostream & operator<<(std::ostream &strm, const AbstractInterface &a)
#define ARMARXCORE_IMPORT_EXPORT
The ChannelRef class is a reference to a channel on an Observer.
std::string output(const Ice::Current &c=Ice::emptyCurrent) const override
friend class GenericFactory
VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
std::enable_if_t<!std::is_base_of_v< VariantDataClass, T >, T > get(const std::string &key)
Ice::ObjectPtr ice_clone() const override
TimedVariantPtr getDataField(const std::string &datafieldName)
const std::string & getChannelName() const
std::enable_if_t< std::is_base_of_v< VariantDataClass, T >, IceInternal::Handle< T > > get(const std::string &key)
Baseclass for all ArmarX Observers.
static VariantTypeId addTypeName(const std::string &typeName)
Register a new type for the use in a Variant.
::IceInternal::Handle<::Ice::Communicator > CommunicatorPtr
const VariantTypeId ChannelRef
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< TimedVariant > TimedVariantPtr
IceInternal::Handle< Variant > VariantPtr
IceInternal::Handle< ChannelRef > ChannelRefPtr
IceInternal::Handle< DataFieldIdentifier > DataFieldIdentifierPtr
Typedef of DataFieldIdentifierPtr as IceInternal::Handle<DataFieldIdentifier> for convenience.