86  template <
class DataType>
 
  117        m_name(
name), m_value(value),
 
  118        m_OnRead(nullptr),  m_OnReadConvert(nullptr),
 
  119        m_status(1), m_directNewData(false)
 
  132      std::string marshaling_types{coil::eraseBlank(coil::flatten(
 
  135      RTC_DEBUG((
"available marshaling_types: %s", marshaling_types.c_str()));
 
  137      addProperty(
"dataport.marshaling_types", marshaling_types.c_str());
 
 
  178      return m_name.c_str();
 
 
  221                if (std::string(con->name()) == 
name)
 
  223                    size_t r = con->getBuffer()->readable();
 
  226                        RTC_DEBUG((
"isNew() = true, readable data: %d", r));
 
  233        RTC_DEBUG((
"isNew() = false, no readable data"));
 
 
  236    virtual bool isNew(coil::vstring &names)
 
  252                size_t r = con->getBuffer()->readable();
 
  255                    names.emplace_back(con->name());
 
  263            RTC_DEBUG((
"isNew() = true, buffer is not empty"));
 
  267        RTC_DEBUG((
"isNew() = false, no readable data"));
 
 
  278        std::lock_guard<std::mutex> guard(m_valueMutex);
 
  279        if (m_directNewData == 
true)
 
  281            RTC_DEBUG((
"isNew() returns true because of direct write."));
 
  298          RTC_DEBUG((
"isNew() = true, readable data: %d", r));
 
  302      RTC_DEBUG((
"isNew() = false, no readable data"));
 
 
  344                if (std::string(con->name()) == 
name)
 
  346                    size_t r = con->getBuffer()->readable();
 
  349                        RTC_DEBUG((
"isEmpty() = true, buffer is empty"));
 
  356        RTC_DEBUG((
"isEmpty() = false, no readable data"));
 
 
  376                size_t r = con->getBuffer()->readable();
 
  379                    names.emplace_back(con->name());
 
  387            RTC_DEBUG((
"isEmpty() = true, buffer is empty"));
 
  391        RTC_DEBUG((
"isEmpty() = false, no readable data"));
 
 
  397      if (m_directNewData == 
true) { 
return false; }
 
  415          RTC_DEBUG((
"isEmpty() = true, buffer is empty"));
 
  419      RTC_DEBUG((
"isEmpty() = false, data exists in the buffer"));
 
 
  425      std::lock_guard<std::mutex> guard(m_valueMutex);
 
  427      m_directNewData = 
true;
 
 
  508      if (m_OnRead != 
nullptr)
 
  515        std::lock_guard<std::mutex> guard(m_valueMutex);
 
  516        if (m_directNewData == 
true)
 
  519            if (m_OnReadConvert != 
nullptr)
 
  521                m_value = (*m_OnReadConvert)(m_value);
 
  522                RTC_DEBUG((
"OnReadConvert for direct data called"));
 
  525            m_directNewData = 
false;
 
  553              if (std::string(con->name()) == 
name)
 
  560      if (connector == 
nullptr)
 
  573              ret = connector->
read(m_value);
 
  578              std::lock_guard<std::mutex> guard(m_valueMutex);
 
  581              if (m_OnReadConvert != 
nullptr)
 
  583                  m_value = (*m_OnReadConvert)(m_value);
 
  604      RTC_ERROR((
"unknown retern value from buffer.read()"));
 
 
  785      m_OnReadConvert = on_rconvert;
 
 
  808    std::string m_typename;
 
  826    mutable std::mutex m_valueMutex;
 
  862    bool m_directNewData;
 
 
CORBA CDR Stream Buffer class
 
void CdrMemoryStreamInit()
CDRシリアライザの初期化関数
Definition CORBA_CdrMemoryStream.h:650
 
Data type utility function
 
RTC::Port implementation for InPort
 
InPortConnector base class
 
#define RTC_WARN(fmt)
ワーニングログ出力マクロ。
Definition SystemLogger.h:621
 
#define RTC_TRACE(fmt)
トレースログ出力マクロ。
Definition SystemLogger.h:687
 
#define RTC_DEBUG(fmt)
デバッグログ出力マクロ。
Definition SystemLogger.h:665
 
#define RTC_ERROR(fmt)
エラーログ出力マクロ。
Definition SystemLogger.h:599
 
ConnectorListenersT クラス
Definition ConnectorListener.h:2086
 
direct接続用InPort基底クラス
Definition DirectInPortBase.h:48
 
InPort 用 Port
Definition InPortBase.h:70
 
ConnectorList m_connectors
接続リスト
Definition InPortBase.h:884
 
ConnectorListenersBase * m_listeners
ConnectorDataListener リスナ
Definition InPortBase.h:901
 
void addConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)
ConnectorDataListener リスナを追加する
 
InPortConnector 基底クラス
Definition InPortConnector.h:54
 
bool getDirectData(DataType &data)
ダイレクト接続時に変数渡しでデータを取得する
Definition InPortConnector.h:321
 
virtual DataPortStatus read(ByteDataStreamBase *data)=0
read 関数
 
InPort テンプレートクラス
Definition InPort.h:89
 
bool read(std::string name="") override
DataPort から値を読み出す
Definition InPort.h:504
 
void operator>>(DataType &rhs)
T 型のデータへ InPort の最新値データを読み込む
Definition InPort.h:656
 
virtual bool isEmpty(coil::vstring &names)
Definition InPort.h:359
 
DataPortStatusList getStatusList()
特定のコネクタへの書き込みステータスリストを得る
Definition InPort.h:729
 
virtual bool isNew(coil::vstring &names)
Definition InPort.h:236
 
virtual bool isNew(std::string name)
最新データが存在するか確認する
Definition InPort.h:206
 
void initConnectorListeners() override
コネクタリスナの初期化
Definition InPort.h:802
 
bool isEmpty() override
バッファが空かどうか確認する
Definition InPort.h:394
 
void setOnRead(OnRead< DataType > *on_read)
InPort バッファへデータ読み込み時のコールバックの設定
Definition InPort.h:755
 
void write(DataType &data) override
データの書き込み
Definition InPort.h:423
 
DataPortStatus getStatus(int)
特定のコネクタへの書き込みステータスを得る
Definition InPort.h:695
 
bool isNew() override
最新データが存在するか確認する
Definition InPort.h:270
 
virtual void update()
バインドされた T 型の変数に InPort バッファの最新値を読み込む
Definition InPort.h:631
 
virtual bool isEmpty(std::string name)
バッファが空かどうか確認する
Definition InPort.h:329
 
virtual const char * name()
ポート名称を取得する。
Definition InPort.h:176
 
InPort(const char *name, DataType &value)
コンストラクタ
Definition InPort.h:115
 
void setOnReadConvert(OnReadConvert< DataType > *on_rconvert)
InPort バッファへデータ読み出し時のコールバックの設定
Definition InPort.h:783
 
std::mutex m_connectorsMutex
Definition PortBase.h:2115
 
DirectPortBase * m_directport
Definition PortBase.h:2239
 
void addProperty(const char *key, ValueType value)
PortProfile の properties に NameValue 値を追加する
Definition PortBase.h:1877
 
Definition Timestamp.h:61
 
Definition DataTypeUtil.h:24
 
void copyData(T &data1, const T &data2)
CORBA型のデータを別変数にコピーする omniORBではSequence型のデータはコピーコンストラクタでfor文により各要素をコピーする処理を行うため、 Octet型の配列のデータのコピーにはme...
Definition DataTypeUtil.h:43
 
DataPortStatus
Definition DataPortStatus.h:114
 
std::vector< DataPortStatus > DataPortStatusList
Definition DataPortStatus.h:175
 
std::vector< std::string > getSerializerList()
使用可能なシリアライザの一覧を取得する
Definition ByteDataStreamBase.h:385
 
read() 時のデータ変換コールバック抽象クラス
Definition PortCallback.h:386
 
read() 時のコールバック抽象クラス
Definition PortCallback.h:324