18#ifndef RTC_CONNECTORLISTENER_H
19#define RTC_CONNECTORLISTENER_H
105#define USE_CONNLISTENER_STATUS \
106 using ReturnCode = ::RTC::ConnectorListenerStatus::Enum; \
107 using ::RTC::ConnectorListenerStatus::NO_CHANGE; \
108 using ::RTC::ConnectorListenerStatus::INFO_CHANGED; \
109 using ::RTC::ConnectorListenerStatus::DATA_CHANGED; \
110 using ::RTC::ConnectorListenerStatus::BOTH_CHANGED
438 static const char*
const typeString[] =
442 "ON_BUFFER_WRITE_TIMEOUT",
443 "ON_BUFFER_OVERWRITE",
448 "ON_RECEIVER_TIMEOUT",
450 "CONNECTOR_DATA_LISTENER_NUM"
452 return typeString[
static_cast<uint8_t
>(type)];
483 ByteData& data,
const std::string& marshalingtype) = 0;
512 template <
class DataType>
534 SerializerFactory::instance().deleteObject(m_cdr);
563 ByteData& cdrdata,
const std::string& marshalingtype)
override
567 if(m_cdr ==
nullptr || m_marshalingtype != marshalingtype)
570 m_marshalingtype = marshalingtype;
582 std::string endian_type{coil::normalize(
583 info.
properties.getProperty(
"serializer.cdr.endian",
"little"))};
584 std::vector<std::string> endian(coil::split(endian_type,
","));
586 if (endian[0] ==
"little")
590 else if (endian[0] ==
"big")
600 ReturnCode ret = this->
operator()(info, data);
603 if (endian[0] ==
"little")
607 else if (endian[0] ==
"big")
641 std::string m_marshalingtype;
914 static const char*
const typeStr[] =
917 "ON_BUFFER_READ_TIMEOUT",
923 "CONNECTOR_LISTENER_NUM"
925 return typeStr[
static_cast<uint8_t
>(type)];
978 using Entry = std::pair<ConnectorDataListener*, bool>;
1079 ByteData& cdrdata,
const std::string& marshalingtype);
1107 template <
class DataType>
1110 std::string type = info.
properties.getProperty(
"marshaling_type",
"cdr");
1111 std::string marshaling_type{coil::eraseBothEndsBlank(
1112 info.
properties.getProperty(
"inport.marshaling_type", type))};
1113 return notify(info, typeddata, marshaling_type);
1136 template <
class DataType>
1139 std::string type = info.
properties.getProperty(
"marshaling_type",
"cdr");
1140 std::string marshaling_type{coil::eraseBothEndsBlank(
1141 info.
properties.getProperty(
"outport.marshaling_type", type))};
1142 return notify(info, typeddata, marshaling_type);
1167 template <
class DataType>
1170 std::lock_guard<std::mutex> guard(
m_mutex);
1178 std::string endian_type{coil::normalize(
1179 info.
properties.getProperty(
"serializer.cdr.endian",
"little"))};
1180 std::vector<std::string> endian(coil::split(endian_type,
","));
1187 if (datalistener !=
nullptr)
1189 ret = ret | datalistener->operator()(info, typeddata);
1205 if (endian[0] ==
"little")
1209 else if (endian[0] ==
"big")
1215 ret = ret | listener.first->operator()(info, tmp, marshalingtype);
1247 using Entry = std::pair<ConnectorListener*, bool>;
1349 std::vector<Entry> m_listeners;
1578 if (holder !=
nullptr)
1580 return holder->
notifyIn(info, data);
1609 if (holder !=
nullptr)
1851 static_cast<uint8_t
>
1864 static_cast<uint8_t
>
1885 template <
class DataType>
1932 ByteData& cdrdata,
const std::string& marshalingtype)
override
1934 std::lock_guard<std::mutex> guard(
m_mutex);
1935 ConnectorListenerHolder::ReturnCode ret(
NO_CHANGE);
1960 std::string endian_type{ coil::normalize(
1961 info.
properties.getProperty(
"serializer.cdr.endian",
"little")) };
1962 std::vector<std::string> endian_str(coil::split(endian_type,
","));
1964 if (endian_str[0] ==
"little")
1968 else if (endian_str[0] ==
"big")
1983 if (datalistener !=
nullptr)
1985 ConnectorListenerHolder::ReturnCode linstener_ret(datalistener->operator()(info, data));
1993 ret = ret | linstener_ret;
1997 ConnectorListenerHolder::ReturnCode linstener_ret(listener.first->operator()(info, cdrdata, marshalingtype));
2004 ret = ret | linstener_ret;
2034 std::string type = info.
properties.getProperty(
"marshaling_type",
"cdr");
2035 std::string marshaling_type{ coil::eraseBothEndsBlank(
2036 info.
properties.getProperty(
"inport.marshaling_type", type)) };
2037 return notify(info, data, marshaling_type);
2062 std::string type = info.
properties.getProperty(
"marshaling_type",
"cdr");
2063 std::string marshaling_type{ coil::eraseBothEndsBlank(
2064 info.
properties.getProperty(
"outport.marshaling_type", type)) };
2065 return notify(info, data, marshaling_type);
2083 template <
class DataType>
2131 if (
static_cast<uint8_t
>(type) < connectorData_.size())
2133 return connectorData_[
static_cast<uint8_t
>(type)].
notifyIn(info, data);
2161 if (
static_cast<uint8_t
>(type) < connectorData_.size())
2163 return connectorData_[
static_cast<uint8_t
>(type)].
notifyOut(info, data);
2192 if (
static_cast<uint8_t
>(type) < connector_.size())
2194 return connector_[
static_cast<uint8_t
>(type)].
notify(info);
2225 if (
static_cast<uint8_t
>(type) < connectorData_.size())
2227 connectorData_[
static_cast<uint8_t
>(type)].
addListener(listener, autoclean);
2259 if (
static_cast<uint8_t
>(type) < connector_.size())
2261 connector_[
static_cast<uint8_t
>(type)].
addListener(listener, autoclean);
2290 if (
static_cast<uint8_t
>(type) < connectorData_.size())
2292 connectorData_[
static_cast<uint8_t
>(type)].
removeListener(listener);
2321 if (
static_cast<uint8_t
>(type) < connector_.size())
2350 if (
static_cast<uint8_t
>(type) < connectorData_.size())
2352 return &connectorData_[
static_cast<uint8_t
>(type)];
2368 static_cast<uint8_t
>
2381 static_cast<uint8_t
>
CORBA CDR Stream Buffer class.
Definition ByteDataStreamBase.h:63
virtual unsigned long getDataLength() const =0
virtual void writeData(const unsigned char *buffer, unsigned long length)=0
virtual void readData(unsigned char *buffer, unsigned long length) const =0
virtual void isLittleEndian(bool little_endian)
Definition ByteDataStreamBase.h:200
virtual bool deserialize(DataType &data)=0
virtual bool serialize(const DataType &data)=0
unsigned long getDataLength() const
void setDataLength(unsigned long length)
unsigned char * getBuffer() const
ConnectorListener holder class.
Definition ConnectorListener.h:1888
ConnectorDataListenerHolderT()=default
Constructor .
~ConnectorDataListenerHolderT() override
Destructor .
Definition ConnectorListener.h:1905
ReturnCode notifyOut(ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
Definition ConnectorListener.h:2060
ReturnCode notify(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype) override
Notify listeners.
Definition ConnectorListener.h:1931
ReturnCode notifyIn(ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
Definition ConnectorListener.h:2032
ConnectorDataListener holder class.
Definition ConnectorListener.h:977
std::mutex m_mutex
Definition ConnectorListener.h:1224
std::string m_marshalingtype
Definition ConnectorListener.h:1226
ByteDataStreamBase * m_cdr
Definition ConnectorListener.h:1225
void addListener(ConnectorDataListener *listener, bool autoclean)
Add the listener.
ReturnCode notifyOut(ConnectorInfo &info, DataType &typeddata)
Notify listeners. (Typed data version)
Definition ConnectorListener.h:1137
virtual ~ConnectorDataListenerHolder()
Destructor .
ReturnCode notify(ConnectorInfo &info, DataType &typeddata, const std::string &marshalingtype)
Notify listeners. (Typed data version)
Definition ConnectorListener.h:1168
virtual ReturnCode notify(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype)
Notify listeners.
virtual ReturnCode notifyOut(ConnectorInfo &info, ByteData &data)
void removeListener(ConnectorDataListener *listener)
Remove the listener.
ConnectorDataListenerHolder()
Constructor .
std::vector< Entry > m_listeners
Definition ConnectorListener.h:1223
virtual ReturnCode notifyIn(ConnectorInfo &info, ByteData &data)
USE_CONNLISTENER_STATUS
Definition ConnectorListener.h:980
ReturnCode notifyIn(ConnectorInfo &info, DataType &typeddata)
Notify listeners. (Typed data version)
Definition ConnectorListener.h:1108
size_t size()
Getting number of listeners.
ConnectorDataListenerT class.
Definition ConnectorListener.h:515
virtual ReturnCode operator()(ConnectorInfo &info, DataType &data)=0
Virtual Callback method.
ReturnCode operator()(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype) override
Callback method.
Definition ConnectorListener.h:562
ConnectorDataListenerT()=default
Constructor .
~ConnectorDataListenerT() override
Destructor .
Definition ConnectorListener.h:532
ConnectorDataListener class.
Definition ConnectorListener.h:408
virtual ReturnCode operator()(ConnectorInfo &info, ByteData &data, const std::string &marshalingtype)=0
Virtual Callback method.
USE_CONNLISTENER_STATUS
Definition ConnectorListener.h:410
virtual ~ConnectorDataListener()
Destructor .
static const char * toString(ConnectorDataListenerType type)
Convert ConnectorDataListenerType into the string.
Definition ConnectorListener.h:434
ConnectorInfo class.
Definition ConnectorBase.h:50
coil::Properties properties
Connection properties .
Definition ConnectorBase.h:178
ConnectorListener holder class.
Definition ConnectorListener.h:1246
void addListener(ConnectorListener *listener, bool autoclean)
Add the listener.
virtual ~ConnectorListenerHolder()
Destructor .
USE_CONNLISTENER_STATUS
Definition ConnectorListener.h:1249
ConnectorListenerHolder()
Constructor .
void removeListener(ConnectorListener *listener)
Remove the listener.
ReturnCode notify(ConnectorInfo &info)
Notify listeners.
size_t size()
Getting number of listeners.
Definition ConnectorListener.h:67
Enum
Definition ConnectorListener.h:70
@ NO_CHANGE
Definition ConnectorListener.h:71
@ BOTH_CHANGED
Definition ConnectorListener.h:74
@ INFO_CHANGED
Definition ConnectorListener.h:72
@ DATA_CHANGED
Definition ConnectorListener.h:73
ConnectorListener class.
Definition ConnectorListener.h:884
virtual ~ConnectorListener()
Destructor .
virtual ReturnCode operator()(ConnectorInfo &info)=0
Virtual Callback method.
static const char * toString(ConnectorListenerType type)
Convert ConnectorListenerType into the string.
Definition ConnectorListener.h:910
USE_CONNLISTENER_STATUS
Definition ConnectorListener.h:886
Definition ConnectorListener.h:1354
virtual bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)=0
Add the listener.
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, DataType &data)
Notify listeners. (Typed data version)
Definition ConnectorListener.h:1575
virtual ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type)=0
Remove the listener.
virtual bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener)=0
Remove the listener.
virtual ~ConnectorListenersBase()
Destructor .
virtual::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
virtual::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, DataType &data)
Notify listeners. (Typed data version)
Definition ConnectorListener.h:1606
virtual::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info)=0
Virtual Callback method.
virtual bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true)=0
Add the listener.
virtual bool removeListener(ConnectorListenerType type, ConnectorListener *listener)=0
Remove the listener.
ConnectorListenersT class.
Definition ConnectorListener.h:2086
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
Definition ConnectorListener.h:2159
~ConnectorListenersT() override
Destructor .
Definition ConnectorListener.h:2105
ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type) override
Remove the listener.
Definition ConnectorListener.h:2348
bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) override
Add the listener.
Definition ConnectorListener.h:2257
bool removeListener(ConnectorListenerType type, ConnectorListener *listener) override
Remove the listener.
Definition ConnectorListener.h:2319
bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) override
Add the listener.
Definition ConnectorListener.h:2223
::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info) override
Virtual Callback method.
Definition ConnectorListener.h:2190
bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener) override
Remove the listener.
Definition ConnectorListener.h:2288
ConnectorListenersT()
Constructor .
Definition ConnectorListener.h:2095
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
Definition ConnectorListener.h:2129
ConnectorListeners class.
Definition ConnectorListener.h:1632
bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener) override
Remove the listener.
bool removeListener(ConnectorListenerType type, ConnectorListener *listener) override
Remove the listener.
::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info) override
Virtual Callback method.
ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type) override
Remove the listener.
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
~ConnectorListeners() override
Destructor .
bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) override
Add the listener.
bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) override
Add the listener.
ConnectorListeners()
Constructor .
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
Notify listeners. (Typed data version)
ConnectorListenerStatus::Enum operator|(ConnectorListenerStatus::Enum L, ConnectorListenerStatus::Enum R)
ConnectorDataListenerType
The types of ConnectorDataListener.
Definition ConnectorListener.h:144
@ ON_BUFFER_WRITE_TIMEOUT
@ CONNECTOR_DATA_LISTENER_NUM
::RTC::ByteDataStreamBase * createSerializer(const std::string &marshalingtype)
Definition ByteDataStreamBase.h:363
ConnectorListenerStatus::Enum operator&(ConnectorListenerStatus::Enum L, ConnectorListenerStatus::Enum R)
ConnectorListenerType
The types of ConnectorListener.
Definition ConnectorListener.h:670