OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
OutPortDSProvider.h
[詳解]
1// -*- C++ -*-
18#ifndef RTC_OUTPORTDSPROVIDER_H
19#define RTC_OUTPORTDSPROVIDER_H
20
21#include <rtm/idl/DataPortSkel.h>
22#include <rtm/BufferBase.h>
23#include <rtm/OutPortProvider.h>
24#include <rtm/CORBA_SeqUtil.h>
25#include <rtm/Manager.h>
27#include <rtm/ConnectorBase.h>
28
29namespace RTC
30{
56 : public OutPortProvider,
57 public virtual ::POA_RTC::DataPullService,
58 public virtual PortableServer::RefCountServantBase
59 {
60 public:
75
90
118 void init(coil::Properties& prop) override;
119
145 void setBuffer(CdrBufferBase* buffer) override;
146
192 ConnectorListenersBase* listeners) override;
193
218 void setConnector(OutPortConnector* connector) override;
219
237 ::RTC::PortStatus pull(::RTC::OctetSeq_out data) override;
238
239
240 private:
248 ::RTC::PortStatus convertReturn(BufferStatus status,
249 ByteData& data);
250
251
261 inline void onBufferRead(ByteData& data)
262 {
263 m_listeners->notifyOut(ConnectorDataListenerType::ON_BUFFER_READ, m_profile, data);
264 }
265
275 inline void onSend(ByteData& data)
276 {
277 m_listeners->notifyOut(ConnectorDataListenerType::ON_SEND, m_profile, data);
278 }
279
287 inline void onBufferEmpty()
288 {
289 m_listeners->notify(ConnectorListenerType::ON_BUFFER_EMPTY, m_profile);
290 }
291
299 inline void onBufferReadTimeout()
300 {
302 }
303
311 inline void onSenderEmpty()
312 {
313 m_listeners->notify(ConnectorListenerType::ON_SENDER_EMPTY, m_profile);
314 }
315
323 inline void onSenderTimeout()
324 {
325 m_listeners->notify(ConnectorListenerType::ON_SENDER_TIMEOUT, m_profile);
326 }
327
335 inline void onSenderError()
336 {
337 m_listeners->notify(ConnectorListenerType::ON_SENDER_ERROR, m_profile);
338 }
339
340 private:
341 CdrBufferBase* m_buffer{nullptr};
342 ::RTC::DataPullService_var m_objref;
343 ConnectorListenersBase* m_listeners;
344 ConnectorInfo m_profile;
345 OutPortConnector* m_connector{nullptr};
346 ByteData m_cdr;
347 }; // class OutPortDSProvider
348} // namespace RTC
349
350extern "C"
351{
366}
367
368#endif // RTC_OUTPORTDSPROVIDER_H
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
-*- C++ -*-
void OutPortDSProviderInit(void)
モジュール初期化関数
OutPortProvider class
BufferBase 抽象クラス
Definition BufferBase.h:106
シリアライズ後のバイト列を操作するクラス
Definition ByteData.h:30
ConnectorInfo クラス
Definition ConnectorBase.h:50
Definition ConnectorListener.h:1354
virtual::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
virtual::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info)=0
リスナーへ通知する
OutPortConnector 基底クラス
Definition OutPortConnector.h:58
OutPortDSProvider クラス
Definition OutPortDSProvider.h:59
~OutPortDSProvider() override
デストラクタ
void init(coil::Properties &prop) override
設定初期化
::RTC::PortStatus pull(::RTC::OctetSeq_out data) override
[CORBA interface] バッファからデータを取得する
void setBuffer(CdrBufferBase *buffer) override
バッファをセットする
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
void setConnector(OutPortConnector *connector) override
Connectorを設定する。
OutPortDSProvider()
コンストラクタ
OutPortProvider
Definition OutPortProvider.h:190
RTコンポーネント
BufferBase< ByteData > CdrBufferBase
Definition CdrBufferBase.h:31
BufferStatus
BufferStatus リターンコード
Definition BufferStatus.h:57