OpenRTM-aist  2.1.0
InPortSHMProvider.h
[詳解]
1 // -*- C++ -*-
18 #ifndef RTC_INPORTSHMPROVIDER_H
19 #define RTC_INPORTSHMPROVIDER_H
20 
21 #include <rtm/SharedMemoryPort.h>
22 #include <rtm/BufferBase.h>
23 #include <rtm/InPortProvider.h>
24 #include <rtm/CORBA_SeqUtil.h>
25 #include <rtm/Manager.h>
26 #include <rtm/ConnectorListener.h>
27 #include <rtm/ConnectorBase.h>
28 
29 namespace RTC
30 {
53  : public InPortProvider,
54  public virtual SharedMemoryPort
55  {
56  public:
71 
85  ~InPortSHMProvider() override;
86 
103  void init(coil::Properties& prop) override;
104 
120  void setBuffer(BufferBase<ByteData>* buffer) override;
121 
143  ConnectorListenersBase* listeners) override;
161  void setConnector(InPortConnector* connector) override;
162 
180  ::OpenRTM::PortStatus put() override;
181 
182  private:
183 
184  ::OpenRTM::PortStatus
185  convertReturn(BufferStatus status,
186  ByteData& data);
187 
188 
189  inline void onBufferWrite(ByteData& data)
190  {
191  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE, m_profile, data);
192  }
193 
194  inline void onBufferFull(ByteData& data)
195  {
196  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_FULL, m_profile, data);
197  }
198 
199  inline void onBufferWriteTimeout(ByteData& data)
200  {
201  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE_TIMEOUT, m_profile, data);
202  }
203 
204  inline void onBufferWriteOverwrite(ByteData& data)
205  {
206  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_OVERWRITE, m_profile, data);
207  }
208 
209  inline void onReceived(ByteData& data)
210  {
211  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVED, m_profile, data);
212  }
213 
214  inline void onReceiverFull(ByteData& data)
215  {
216  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_FULL, m_profile, data);
217  }
218 
219  inline void onReceiverTimeout(ByteData& data)
220  {
221  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_TIMEOUT, m_profile, data);
222  }
223 
224  inline void onReceiverError(ByteData& data)
225  {
226  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_ERROR, m_profile, data);
227  }
228 
229  private:
230  CdrBufferBase* m_buffer{nullptr};
231  ::OpenRTM::PortSharedMemory_var m_objref;
232  ConnectorListenersBase* m_listeners;
233  ConnectorInfo m_profile;
234  InPortConnector* m_connector{nullptr};
235  ByteData m_cdr;
236 
237  }; // class InPortCorCdrbaProvider
238 } // namespace RTC
239 
240 extern "C"
241 {
256 }
257 
258 #endif // RTC_INPORTCORBACDRPROVIDER_H
259 
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
InPortProvider class
void InPortSHMProviderInit()
モジュール初期化関数
-*- C++ -*-
Shared Memory Port class
BufferBase 抽象クラス
Definition: BufferBase.h:106
シリアライズ後のバイト列を操作するクラス
Definition: ByteData.h:30
ConnectorInfo クラス
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyOut関...
InPortConnector 基底クラス
Definition: InPortConnector.h:54
Definition: InPortProvider.h:191
InPortSHMProvider クラス
Definition: InPortSHMProvider.h:55
void setBuffer(BufferBase< ByteData > *buffer) override
バッファをセットする
void setConnector(InPortConnector *connector) override
Connectorを設定する。
InPortSHMProvider()
コンストラクタ
~InPortSHMProvider() override
デストラクタ
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
void init(coil::Properties &prop) override
設定初期化
::OpenRTM::PortStatus put() override
[CORBA interface] バッファにデータを書き込む
SharedMemory クラス
Definition: SharedMemoryPort.h:57
RTコンポーネント
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57