OpenRTM-aist  2.1.0
InPortSHMProvider.h
Go to the documentation of this file.
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()
Module initialization.
-*- C++ -*-
Shared Memory Port class.
BufferBase abstract class.
Definition: BufferBase.h:106
Definition: ByteData.h:30
ConnectorInfo class.
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
InPortConnector base class.
Definition: InPortConnector.h:54
InPortProvider.
Definition: InPortProvider.h:191
InPortSHMProvider class.
Definition: InPortSHMProvider.h:55
void setBuffer(BufferBase< ByteData > *buffer) override
Setting outside buffer's pointer.
void setConnector(InPortConnector *connector) override
set Connector
InPortSHMProvider()
Constructor.
~InPortSHMProvider() override
Destructor.
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
Set the listener.
void init(coil::Properties &prop) override
Initializing configuration.
::OpenRTM::PortStatus put() override
[CORBA interface] Write data into the buffer
Definition: SharedMemoryPort.h:57
RT-Component.
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
DataPortStatus return codes.
Definition: BufferStatus.h:57