OpenRTM-aist  1.2.1
OutPortSHMProvider.h
Go to the documentation of this file.
1 // -*- C++ -*-
17 #ifndef RTC_OUTPORTSHMPROVIDER_H
18 #define RTC_OUTPORTSHMPROVIDER_H
19 
20 #include <rtm/SharedMemoryPort.h>
21 #include <rtm/BufferBase.h>
22 #include <rtm/OutPortProvider.h>
23 #include <rtm/CORBA_SeqUtil.h>
24 #include <rtm/Manager.h>
25 #include <rtm/ConnectorListener.h>
26 #include <rtm/ConnectorBase.h>
27 
28 #ifdef WIN32
29 #pragma warning( disable : 4290 )
30 #endif
31 
32 namespace RTC
33 {
56  : public OutPortProvider,
57  public virtual SharedMemoryPort
58  {
59  public:
74 
88  virtual ~OutPortSHMProvider();
89 
108  virtual void init(coil::Properties& prop);
109 
127  virtual void setBuffer(CdrBufferBase* buffer);
128 
148  virtual void setListener(ConnectorInfo& info,
149  ConnectorListeners* listeners);
150 
168  virtual void setConnector(OutPortConnector* connector);
169 
187  virtual ::OpenRTM::PortStatus get()
188  throw (CORBA::SystemException);
189 
190 
191  private:
199  ::OpenRTM::PortStatus convertReturn(BufferStatus::Enum status,
200  cdrMemoryStream& data);
201 
202 
212  inline void onBufferRead(cdrMemoryStream& data)
213  {
214  m_listeners->
215  connectorData_[ON_BUFFER_READ].notify(m_profile, data);
216  }
217 
227  inline void onSend(cdrMemoryStream& data)
228  {
229  m_listeners->
230  connectorData_[ON_SEND].notify(m_profile, data);
231  }
232 
240  inline void onBufferEmpty()
241  {
242  m_listeners->
243  connector_[ON_BUFFER_EMPTY].notify(m_profile);
244  }
245 
253  inline void onBufferReadTimeout()
254  {
255  m_listeners->
256  connector_[ON_BUFFER_READ_TIMEOUT].notify(m_profile);
257  }
258 
266  inline void onSenderEmpty()
267  {
268  m_listeners->
269  connector_[ON_SENDER_EMPTY].notify(m_profile);
270  }
271 
279  inline void onSenderTimeout()
280  {
281  m_listeners->
282  connector_[ON_SENDER_TIMEOUT].notify(m_profile);
283  }
284 
292  inline void onSenderError()
293  {
294  m_listeners->
295  connector_[ON_SENDER_ERROR].notify(m_profile);
296  }
297 
298  private:
299  mutable Logger rtclog;
300  int m_memorySize;
301  std::string m_shmAddress;
302 
303  OutPortConnector* m_connector;
304  CdrBufferBase* m_buffer;
305  ConnectorListeners* m_listeners;
306  ConnectorInfo m_profile;
307 
308  ::OpenRTM::PortSharedMemory_var m_objref;
309  }; // class OutPortCorbaCdrProvider
310 }; // namespace RTC
311 
312 extern "C"
313 {
327  void OutPortSHMProviderInit(void);
328 };
329 
330 #ifdef WIN32
331 #pragma warning( default : 4290 )
332 #endif
333 
334 #endif // RTC_OUTPORTSHMPROVIDER_H
Definition: ConnectorListener.h:622
ConnectorListeners class.
Definition: ConnectorListener.h:1217
virtual void init(coil::Properties &prop)
Initializing configuration.
OutPortConnector base class.
Definition: OutPortConnector.h:54
RT-Component.
Definition: ConnectorListener.h:623
Definition: ConnectorBase.h:43
Enum
DataPortStatus return codes.
Definition: BufferStatus.h:84
Shared Memory Port class.
-*- C++ -*-
Definition: ConnectorListener.h:624
Definition: ConnectorListener.h:145
Connector base class.
virtual void setBuffer(CdrBufferBase *buffer)
Setting outside buffer&#39;s pointer.
virtual void setListener(ConnectorInfo &info, ConnectorListeners *listeners)
Set the listener.
Buffer abstract class.
OutPortProvider class.
CORBA sequence utility template functions.
Logger class.
Definition: SystemLogger.h:99
OutPortProvider.
Definition: OutPortProvider.h:189
Definition: ConnectorListener.h:144
Definition: ConnectorListener.h:621
Class represents a set of properties.
Definition: Properties.h:101
Definition: ConnectorListener.h:620
virtual ~OutPortSHMProvider()
Destructor.
void OutPortSHMProviderInit(void)
Module initialization.
virtual void setConnector(OutPortConnector *connector)
set Connector
OutPortSHMProvider class.
Definition: OutPortSHMProvider.h:55
BufferBase abstract class.
Definition: BufferBase.h:104
connector listener class
OutPortSHMProvider()
Constructor.
Definition: SharedMemoryPort.h:52