OpenRTM-aist  2.1.0
ConnectorListener.h
[詳解]
1 // -*- C++ -*-
18 #ifndef RTC_CONNECTORLISTENER_H
19 #define RTC_CONNECTORLISTENER_H
20 
21 #include <mutex>
22 #include <rtm/RTC.h>
23 #include <rtm/ConnectorBase.h>
24 #include <rtm/ByteData.h>
26 
27 #include <string>
28 #include <vector>
29 #include <utility>
30 #include <array>
31 
32 
33 namespace RTC
34 {
35  class ConnectorInfo;
36 
37 
67  {
68  public:
69  enum Enum
70  {
71  NO_CHANGE = 0,
72  INFO_CHANGED = 1 << 0,
73  DATA_CHANGED = 1 << 1,
75  };
76  };
81 
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
111 
143  enum class ConnectorDataListenerType : uint8_t
144  {
145  ON_BUFFER_WRITE = 0,
150  ON_SEND,
151  ON_RECEIVED,
156  };
157 
407  : public ConnectorListenerStatus
408  {
409  public:
434  static const char* toString(ConnectorDataListenerType type)
435  {
437  {
438  static const char* const typeString[] =
439  {
440  "ON_BUFFER_WRITE",
441  "ON_BUFFER_FULL",
442  "ON_BUFFER_WRITE_TIMEOUT",
443  "ON_BUFFER_OVERWRITE",
444  "ON_BUFFER_READ",
445  "ON_SEND",
446  "ON_RECEIVED",
447  "ON_RECEIVER_FULL",
448  "ON_RECEIVER_TIMEOUT",
449  "ON_RECEIVER_ERROR",
450  "CONNECTOR_DATA_LISTENER_NUM"
451  };
452  return typeString[static_cast<uint8_t>(type)];
453  }
454  return "";
455  }
456 
465 
482  virtual ReturnCode operator()(ConnectorInfo& info,
483  ByteData& data, const std::string& marshalingtype) = 0;
484  };
485 
512  template <class DataType>
514  : public ConnectorDataListener
515  {
516  public:
533  {
534  SerializerFactory::instance().deleteObject(m_cdr);
535  }
536 
562  ReturnCode operator()(ConnectorInfo& info,
563  ByteData& cdrdata, const std::string& marshalingtype) override
564  {
565  DataType data;
566 
567  if(m_cdr == nullptr || m_marshalingtype != marshalingtype)
568  {
569  m_cdr = createSerializer<DataType>(marshalingtype);
570  m_marshalingtype = marshalingtype;
571  }
573 
574 
575  if (!cdr)
576  {
577  return NO_CHANGE;
578  }
579 
580 
581  // endian type check
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, ","));
585 
586  if (endian[0] == "little")
587  {
588  cdr->isLittleEndian(true);
589  }
590  else if (endian[0] == "big")
591  {
592  cdr->isLittleEndian(false);
593  }
594 
595 
596  cdr->writeData(cdrdata.getBuffer(), cdrdata.getDataLength());
597 
598  cdr->deserialize(data);
599 
600  ReturnCode ret = this->operator()(info, data);
601  if (ret == DATA_CHANGED || ret == BOTH_CHANGED)
602  {
603  if (endian[0] == "little")
604  {
605  cdr->isLittleEndian(true);
606  }
607  else if (endian[0] == "big")
608  {
609  cdr->isLittleEndian(false);
610  }
611 
612  cdr->serialize(data);
613  cdrdata.setDataLength(cdr->getDataLength());
614  cdr->readData(cdrdata.getBuffer(), cdrdata.getDataLength());
615  }
616 
617  return ret;
618  }
619 
637  virtual ReturnCode operator()(ConnectorInfo& info,
638  DataType& data) = 0;
639  private:
640  ByteDataStreamBase* m_cdr{nullptr};
641  std::string m_marshalingtype;
642  };
643 
669  enum class ConnectorListenerType : uint8_t
670  {
671  ON_BUFFER_EMPTY = 0,
676  ON_CONNECT,
679  };
680 
883  : public ConnectorListenerStatus
884  {
885  public:
910  static const char* toString(ConnectorListenerType type)
911  {
913  {
914  static const char* const typeStr[] =
915  {
916  "ON_BUFFER_EMPTY",
917  "ON_BUFFER_READ_TIMEOUT",
918  "ON_SENDER_EMPTY",
919  "ON_SENDER_TIMEOUT",
920  "ON_SENDER_ERROR",
921  "ON_CONNECT",
922  "ON_DISCONNECT",
923  "CONNECTOR_LISTENER_NUM"
924  };
925  return typeStr[static_cast<uint8_t>(type)];
926  }
927  return "";
928  }
929 
938 
956  virtual ReturnCode operator()(ConnectorInfo& info) = 0;
957  };
958 
959 
976  : public ConnectorListenerStatus
977  {
978  using Entry = std::pair<ConnectorDataListener*, bool>;
979  public:
997 
1019  void addListener(ConnectorDataListener* listener, bool autoclean);
1020 
1039 
1057  size_t size();
1058 
1078  virtual ReturnCode notify(ConnectorInfo& info,
1079  ByteData& cdrdata, const std::string& marshalingtype);
1080 
1081 
1082  virtual ReturnCode notifyIn(ConnectorInfo& info, ByteData& data);
1083 
1084  virtual ReturnCode notifyOut(ConnectorInfo& info, ByteData& data);
1085 
1086 
1107  template <class DataType>
1108  ReturnCode notifyIn(ConnectorInfo& info, DataType& typeddata)
1109  {
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);
1114  }
1115 
1136  template <class DataType>
1137  ReturnCode notifyOut(ConnectorInfo& info, DataType& typeddata)
1138  {
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);
1143  }
1167  template <class DataType>
1168  ReturnCode notify(ConnectorInfo& info, DataType& typeddata, const std::string& marshalingtype)
1169  {
1170  std::lock_guard<std::mutex> guard(m_mutex);
1171  ReturnCode ret(NO_CHANGE);
1172 
1173  if(m_listeners.empty())
1174  {
1175  return ret;
1176  }
1177 
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, ","));
1181 
1182  for (auto & listener : m_listeners)
1183  {
1184  ConnectorDataListenerT<DataType>* datalistener(nullptr);
1185  datalistener =
1186  dynamic_cast<ConnectorDataListenerT<DataType>*>(listener.first);
1187  if (datalistener != nullptr)
1188  {
1189  ret = ret | datalistener->operator()(info, typeddata);
1190  }
1191  else
1192  {
1193  if (m_cdr == nullptr || m_marshalingtype != marshalingtype)
1194  {
1195  m_cdr = createSerializer<DataType>(marshalingtype);
1196  m_marshalingtype = marshalingtype;
1197  }
1199 
1200  if (!cdr)
1201  {
1202  return NO_CHANGE;
1203  }
1204 
1205  if (endian[0] == "little")
1206  {
1207  cdr->isLittleEndian(true);
1208  }
1209  else if (endian[0] == "big")
1210  {
1211  cdr->isLittleEndian(false);
1212  }
1213  cdr->serialize(typeddata);
1214  ByteData tmp = *cdr;
1215  ret = ret | listener.first->operator()(info, tmp, marshalingtype);
1216 
1217  }
1218  }
1219  return ret;
1220  }
1221 
1222  protected:
1223  std::vector<Entry> m_listeners;
1224  std::mutex m_mutex;
1226  std::string m_marshalingtype;
1227  };
1228 
1245  : public ConnectorListenerStatus
1246  {
1247  using Entry = std::pair<ConnectorListener*, bool>;
1248  public:
1258 
1267 
1289  void addListener(ConnectorListener* listener, bool autoclean);
1290 
1309 
1327  size_t size();
1328 
1346  ReturnCode notify(ConnectorInfo& info);
1347 
1348  private:
1349  std::vector<Entry> m_listeners;
1350  std::mutex m_mutex;
1351  };
1352 
1354  {
1355  public:
1386  virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo& info, ByteData& data) = 0;
1409  virtual ::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo& info, ByteData& data) = 0;
1433  virtual ::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo& info) = 0;
1459  virtual bool addListener(ConnectorDataListenerType type, ConnectorDataListener* listener, bool autoclean=true) = 0;
1485  virtual bool addListener(ConnectorListenerType type, ConnectorListener* listener, bool autoclean=true) = 0;
1531  virtual bool removeListener(ConnectorListenerType type, ConnectorListener* listener) = 0;
1575  template<class DataType> ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo& info, DataType& data)
1576  {
1578  if (holder != nullptr)
1579  {
1580  return holder->notifyIn(info, data);
1581  }
1583  }
1606  template<class DataType> ::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo& info, DataType& data)
1607  {
1609  if (holder != nullptr)
1610  {
1611  return holder->notifyOut(info, data);
1612  }
1614  }
1615  };
1616 
1631  : public ConnectorListenersBase
1632  {
1633  public:
1745  bool addListener(ConnectorDataListenerType type, ConnectorDataListener* listener, bool autoclean=true) override;
1771  bool addListener(ConnectorListenerType type, ConnectorListener* listener, bool autoclean=true) override;
1839 
1840  private:
1850  std::array<ConnectorDataListenerHolder,
1851  static_cast<uint8_t>
1853  connectorData_;
1863  std::array<ConnectorListenerHolder,
1864  static_cast<uint8_t>
1866  connector_;
1867  };
1868 
1869 
1885  template <class DataType>
1888  {
1889  public:
1906  {
1907 
1908  }
1909 
1910 
1911 
1931  ReturnCode notify(ConnectorInfo& info,
1932  ByteData& cdrdata, const std::string& marshalingtype) override
1933  {
1934  std::lock_guard<std::mutex> guard(m_mutex);
1935  ConnectorListenerHolder::ReturnCode ret(NO_CHANGE);
1936  bool endian = true;
1937 
1938  if(m_listeners.empty())
1939  {
1940  return ret;
1941  }
1942 
1943  DataType data;
1944 
1945  if (m_cdr == nullptr || m_marshalingtype != marshalingtype)
1946  {
1947  m_cdr = createSerializer<DataType>(marshalingtype);
1948  m_marshalingtype = marshalingtype;
1949  }
1951 
1952 
1953  if (!cdr)
1954  {
1955  return NO_CHANGE;
1956  }
1957 
1958 
1959  // endian type check
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, ","));
1963 
1964  if (endian_str[0] == "little")
1965  {
1966  endian = true;
1967  }
1968  else if (endian_str[0] == "big")
1969  {
1970  endian = false;
1971  }
1972 
1973  cdr->isLittleEndian(endian);
1974  cdr->writeData(cdrdata.getBuffer(), cdrdata.getDataLength());
1975  cdr->deserialize(data);
1976 
1977 
1978  for (auto & listener : m_listeners)
1979  {
1980  ConnectorDataListenerT<DataType>* datalistener(nullptr);
1981  datalistener =
1982  dynamic_cast<ConnectorDataListenerT<DataType>*>(listener.first);
1983  if (datalistener != nullptr)
1984  {
1985  ConnectorListenerHolder::ReturnCode linstener_ret(datalistener->operator()(info, data));
1986  if (linstener_ret == DATA_CHANGED || linstener_ret == BOTH_CHANGED)
1987  {
1988  cdr->isLittleEndian(endian);
1989  cdr->serialize(data);
1990  cdrdata.setDataLength(cdr->getDataLength());
1991  cdr->readData(cdrdata.getBuffer(), cdrdata.getDataLength());
1992  }
1993  ret = ret | linstener_ret;
1994  }
1995  else
1996  {
1997  ConnectorListenerHolder::ReturnCode linstener_ret(listener.first->operator()(info, cdrdata, marshalingtype));
1998  if (linstener_ret == DATA_CHANGED || linstener_ret == BOTH_CHANGED)
1999  {
2000  cdr->isLittleEndian(endian);
2001  cdr->writeData(cdrdata.getBuffer(), cdrdata.getDataLength());
2002  cdr->deserialize(data);
2003  }
2004  ret = ret | linstener_ret;
2005  }
2006  }
2007 
2008  return ret;
2009  }
2010 
2011 
2032  ReturnCode notifyIn(ConnectorInfo& info, ByteData& data) override
2033  {
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);
2038  }
2039 
2060  ReturnCode notifyOut(ConnectorInfo& info, ByteData& data) override
2061  {
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);
2066  }
2067 
2068  };
2069 
2083  template <class DataType>
2085  : public ConnectorListenersBase
2086  {
2087  public:
2096  {
2097  }
2105  ~ConnectorListenersT() override {}
2106 
2130  {
2131  if (static_cast<uint8_t>(type) < connectorData_.size())
2132  {
2133  return connectorData_[static_cast<uint8_t>(type)].notifyIn(info, data);
2134  }
2136  }
2160  {
2161  if (static_cast<uint8_t>(type) < connectorData_.size())
2162  {
2163  return connectorData_[static_cast<uint8_t>(type)].notifyOut(info, data);
2164  }
2166  }
2191  {
2192  if (static_cast<uint8_t>(type) < connector_.size())
2193  {
2194  return connector_[static_cast<uint8_t>(type)].notify(info);
2195  }
2197  }
2223  bool addListener(ConnectorDataListenerType type, ConnectorDataListener* listener, bool autoclean=true) override
2224  {
2225  if (static_cast<uint8_t>(type) < connectorData_.size())
2226  {
2227  connectorData_[static_cast<uint8_t>(type)].addListener(listener, autoclean);
2228  return true;
2229  }
2230  return false;
2231  }
2257  bool addListener(ConnectorListenerType type, ConnectorListener* listener, bool autoclean=true) override
2258  {
2259  if (static_cast<uint8_t>(type) < connector_.size())
2260  {
2261  connector_[static_cast<uint8_t>(type)].addListener(listener, autoclean);
2262  return true;
2263  }
2264  return false;
2265  }
2289  {
2290  if (static_cast<uint8_t>(type) < connectorData_.size())
2291  {
2292  connectorData_[static_cast<uint8_t>(type)].removeListener(listener);
2293  return true;
2294  }
2295  return false;
2296  }
2320  {
2321  if (static_cast<uint8_t>(type) < connector_.size())
2322  {
2323  connector_[static_cast<uint8_t>(type)].removeListener(listener);
2324  return true;
2325  }
2326  return false;
2327  }
2349  {
2350  if (static_cast<uint8_t>(type) < connectorData_.size())
2351  {
2352  return &connectorData_[static_cast<uint8_t>(type)];
2353  }
2354  return nullptr;
2355  }
2356 
2357  private:
2367  std::array<ConnectorDataListenerHolder,
2368  static_cast<uint8_t>
2370  connectorData_;
2380  std::array<ConnectorListenerHolder,
2381  static_cast<uint8_t>
2383  connector_;
2384 
2385  };
2386 } // namespace RTC
2387 
2388 #endif // RTC_CONNECTORLISTENER_H
CORBA CDR Stream Buffer class
Connector base class
RTComponent header
シリアライザの基底クラス
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)
エンディアンの設定
シリアライザのテンプレートクラス シリアライザを実装する場合は必ずこのクラスを継承する必要がある coil::GlobalFactory <RTC::ByteDataStream>にシリアライザを登録す...
Definition: ByteDataStreamBase.h:200
virtual bool deserialize(DataType &data)=0
データの復号化
virtual bool serialize(const DataType &data)=0
データの符号化
シリアライズ後のバイト列を操作するクラス
Definition: ByteData.h:30
unsigned long getDataLength() const
バッファのサイズを取得
unsigned char * getBuffer() const
バッファのポインタを取得
void setDataLength(unsigned long length)
データのサイズの設定
データ型指定のConnectorListener ホルダクラス
Definition: ConnectorListener.h:1888
ConnectorDataListenerHolderT()=default
コンストラクタ
~ConnectorDataListenerHolderT() override
デストラクタ
Definition: ConnectorListener.h:1905
ReturnCode notifyOut(ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(OutPort側) リスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOut関数を使用...
Definition: ConnectorListener.h:2060
ReturnCode notify(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype) override
リスナーへ通知する
Definition: ConnectorListener.h:1931
ReturnCode notifyIn(ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(OutPort側) リスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOut関数を使用...
Definition: ConnectorListener.h:2032
ConnectorDataListener ホルダクラス
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)
リスナーの追加
ReturnCode notifyOut(ConnectorInfo &info, DataType &typeddata)
リスナーへ通知する(データ型指定版、OutPort側) 登録されているリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側では...
Definition: ConnectorListener.h:1137
virtual ~ConnectorDataListenerHolder()
デストラクタ
ReturnCode notify(ConnectorInfo &info, DataType &typeddata, const std::string &marshalingtype)
リスナーへ通知する(データ型指定版)
Definition: ConnectorListener.h:1168
virtual ReturnCode notify(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype)
リスナーへ通知する
virtual ReturnCode notifyOut(ConnectorInfo &info, ByteData &data)
void removeListener(ConnectorDataListener *listener)
リスナーの削除
ConnectorDataListenerHolder()
コンストラクタ
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)
リスナーへ通知する(データ型指定版、InPort側) 登録されているリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではn...
Definition: ConnectorListener.h:1108
size_t size()
リスナーの数を得る
ConnectorDataListenerT クラス
Definition: ConnectorListener.h:515
virtual ReturnCode operator()(ConnectorInfo &info, DataType &data)=0
仮想コールバックメソッド
ReturnCode operator()(ConnectorInfo &info, ByteData &cdrdata, const std::string &marshalingtype) override
コールバックメソッド
Definition: ConnectorListener.h:562
ConnectorDataListenerT()=default
コンストラクタ
~ConnectorDataListenerT() override
デストラクタ
Definition: ConnectorListener.h:532
ConnectorDataListener クラス
Definition: ConnectorListener.h:408
virtual ReturnCode operator()(ConnectorInfo &info, ByteData &data, const std::string &marshalingtype)=0
仮想コールバックメソッド
USE_CONNLISTENER_STATUS
Definition: ConnectorListener.h:410
static const char * toString(ConnectorDataListenerType type)
ConnectorDataListenerType を文字列に変換
Definition: ConnectorListener.h:434
virtual ~ConnectorDataListener()
デストラクタ
ConnectorInfo クラス
Definition: ConnectorBase.h:50
coil::Properties properties
プロパティ
Definition: ConnectorBase.h:178
ConnectorListener ホルダクラス
Definition: ConnectorListener.h:1246
void addListener(ConnectorListener *listener, bool autoclean)
リスナーの追加
virtual ~ConnectorListenerHolder()
デストラクタ
USE_CONNLISTENER_STATUS
Definition: ConnectorListener.h:1249
ConnectorListenerHolder()
コンストラクタ
void removeListener(ConnectorListener *listener)
リスナーの削除
ReturnCode notify(ConnectorInfo &info)
リスナーへ通知する
size_t size()
リスナーの数を得る
ConnectorListenerStatus mixin クラス
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 クラス
Definition: ConnectorListener.h:884
virtual ~ConnectorListener()
デストラクタ
static const char * toString(ConnectorListenerType type)
ConnectorListenerType を文字列に変換
Definition: ConnectorListener.h:910
virtual ReturnCode operator()(ConnectorInfo &info)=0
仮想コールバックメソッド
USE_CONNLISTENER_STATUS
Definition: ConnectorListener.h:886
Definition: ConnectorListener.h:1354
virtual ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type)=0
指定の種類のConnectorDataListenerHolderを取得する
virtual ::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info)=0
リスナーへ通知する
virtual bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)=0
リスナーの追加
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, DataType &data)
リスナーへ通知する(データ型指定、InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnot...
Definition: ConnectorListener.h:1575
virtual bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener)=0
リスナーの削除
virtual ~ConnectorListenersBase()
デストラクタ
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, DataType &data)
リスナーへ通知する(データ型指定、OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではn...
Definition: ConnectorListener.h:1606
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyOut関...
virtual bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true)=0
リスナーの追加
virtual bool removeListener(ConnectorListenerType type, ConnectorListener *listener)=0
リスナーの削除
virtual ::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
ConnectorListenersT クラス
Definition: ConnectorListener.h:2086
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
Definition: ConnectorListener.h:2159
~ConnectorListenersT() override
デストラクタ
Definition: ConnectorListener.h:2105
bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) override
リスナーの追加
Definition: ConnectorListener.h:2257
bool removeListener(ConnectorListenerType type, ConnectorListener *listener) override
リスナーの削除
Definition: ConnectorListener.h:2319
bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) override
リスナーの追加
Definition: ConnectorListener.h:2223
ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type) override
指定の種類のConnectorDataListenerHolderを取得する
Definition: ConnectorListener.h:2348
::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info) override
リスナーへ通知する
Definition: ConnectorListener.h:2190
bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener) override
リスナーの削除
Definition: ConnectorListener.h:2288
ConnectorListenersT()
コンストラクタ
Definition: ConnectorListener.h:2095
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyIn関数...
Definition: ConnectorListener.h:2129
ConnectorListeners クラス
Definition: ConnectorListener.h:1632
bool removeListener(ConnectorDataListenerType type, ConnectorDataListener *listener) override
リスナーの削除
bool removeListener(ConnectorListenerType type, ConnectorListener *listener) override
リスナーの削除
::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info) override
リスナーへ通知する
::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyOut関...
ConnectorDataListenerHolder * getDataListenerHolder(ConnectorDataListenerType type) override
指定の種類のConnectorDataListenerHolderを取得する
~ConnectorListeners() override
デストラクタ
bool addListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true) override
リスナーの追加
bool addListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true) override
リスナーの追加
ConnectorListeners()
コンストラクタ
::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data) override
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
RTコンポーネント
ConnectorListenerStatus::Enum operator|(ConnectorListenerStatus::Enum L, ConnectorListenerStatus::Enum R)
ConnectorDataListenerType
ConnectorDataListener のタイプ
Definition: ConnectorListener.h:144
ConnectorListenerStatus::Enum operator&(ConnectorListenerStatus::Enum L, ConnectorListenerStatus::Enum R)
ConnectorListenerType
ConnectorListener のタイプ
Definition: ConnectorListener.h:670