Public Types | Public Member Functions | Protected Types | Protected Member Functions | Private Attributes | List of all members
RTC::PublisherNew Class Reference

PublisherNew class. More...

#include <PublisherNew.h>

Inheritance diagram for RTC::PublisherNew:
Inheritance graph
[legend]

Public Types

typedef coil::Condition< MutexCondition
 
typedef coil::Guard< coil::MutexGuard
 
typedef coil::Mutex Mutex
 
- Public Types inherited from RTC::DataPortStatus
enum  Enum {
  PORT_OK = 0, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL,
  BUFFER_EMPTY, BUFFER_TIMEOUT, SEND_FULL, SEND_TIMEOUT,
  RECV_EMPTY, RECV_TIMEOUT, INVALID_ARGS, PRECONDITION_NOT_MET,
  CONNECTION_LOST, UNKNOWN_ERROR
}
 DataPortStatus return codes. More...
 

Public Member Functions

virtual ReturnCode activate ()
 activation More...
 
virtual ReturnCode deactivate ()
 deactivation More...
 
virtual ReturnCode init (coil::Properties &prop)
 Initialization. More...
 
virtual bool isActive ()
 If publisher is active state. More...
 
DATAPORTSTATUS_ENUM PublisherNew ()
 Constructor. More...
 
virtual ReturnCode setBuffer (CdrBufferBase *buffer)
 Setting buffer pointer. More...
 
virtual ReturnCode setConsumer (InPortConsumer *consumer)
 Store InPort consumer. More...
 
virtual ReturnCode setListener (ConnectorInfo &info, ConnectorListeners *listeners)
 Set the listener. More...
 
virtual int svc (void)
 Thread execution function. More...
 
virtual ReturnCode write (const cdrMemoryStream &data, unsigned long sec, unsigned long usec)
 Write data. More...
 
virtual ~PublisherNew (void)
 Destructor. More...
 
- Public Member Functions inherited from RTC::PublisherBase
virtual void release ()
 Release the Publisher. More...
 
virtual DATAPORTSTATUS_ENUM ~PublisherBase (void)
 Destructor. More...
 

Protected Types

enum  Policy { ALL, FIFO, SKIP, NEW }
 

Protected Member Functions

ReturnCode convertReturn (BufferStatus::Enum status, const cdrMemoryStream &data)
 Convertion from BufferStatus to DataPortStatus. More...
 
bool createTask (const coil::Properties &prop)
 Setting Task. More...
 
ReturnCode invokeListener (DataPortStatus::Enum status, const cdrMemoryStream &data)
 Call listeners according to the DataPortStatus. More...
 
void onBufferFull (const cdrMemoryStream &data)
 Notify an ON_BUFFER_FULL event to listeners. More...
 
void onBufferRead (const cdrMemoryStream &data)
 Notify an ON_BUFFER_READ event to listeners. More...
 
void onBufferWrite (const cdrMemoryStream &data)
 Notify an ON_BUFFER_WRITE event to listeners. More...
 
void onBufferWriteOverwrite (const cdrMemoryStream &data)
 Notify an ON_BUFFER_OVERWRITE event to listeners. More...
 
void onBufferWriteTimeout (const cdrMemoryStream &data)
 Notify an ON_BUFFER_WRITE_TIMEOUT event to listeners. More...
 
void onReceived (const cdrMemoryStream &data)
 Notify an ON_RECEIVED event to listeners. More...
 
void onReceiverError (const cdrMemoryStream &data)
 Notify an ON_RECEIVER_ERROR event to listeners. More...
 
void onReceiverFull (const cdrMemoryStream &data)
 Notify an ON_RECEIVER_FULL event to listeners. More...
 
void onReceiverTimeout (const cdrMemoryStream &data)
 Notify an ON_RECEIVER_TIMEOUT event to listeners. More...
 
void onSend (const cdrMemoryStream &data)
 Notify an ON_SEND event to listners. More...
 
void onSenderError ()
 Notify an ON_SENDER_ERROR event to listeners. More...
 
ReturnCode pushAll ()
 push "all" policy More...
 
ReturnCode pushFifo ()
 push "fifo" policy More...
 
ReturnCode pushNew ()
 push "new" policy More...
 
ReturnCode pushSkip ()
 push "skip" policy More...
 
void setPushPolicy (const coil::Properties &prop)
 Setting PushPolicy. More...
 

Private Attributes

bool m_active
 
CdrBufferBasem_buffer
 
InPortConsumerm_consumer
 
int m_leftskip
 
ConnectorListenersm_listeners
 
ConnectorInfo m_profile
 
Policy m_pushPolicy
 
ReturnCode m_retcode
 
Mutex m_retmutex
 
int m_skipn
 
coil::PeriodicTaskBasem_task
 
Logger rtclog
 

Additional Inherited Members

- Static Public Member Functions inherited from RTC::DataPortStatus
static const char * toString (DataPortStatus::Enum status)
 Convert DataPortStatus into the string. More...
 

Detailed Description

PublisherNew class.

Send new data at timing of when it is stored into the buffer. This class is used when operating Consumer that waits for the data send timing in different thread from one of the send side. Publisher's driven is blocked until the data send timing reaches, if the send timing notification is received, the Consumer's send processing will be invoked immediately.

Definition at line 69 of file PublisherNew.h.

Member Typedef Documentation

◆ Condition

Definition at line 74 of file PublisherNew.h.

◆ Guard

Definition at line 75 of file PublisherNew.h.

◆ Mutex

Definition at line 73 of file PublisherNew.h.

Member Enumeration Documentation

◆ Policy

enum RTC::PublisherNew::Policy
protected
Enumerator
ALL 
FIFO 
SKIP 
NEW 

Definition at line 429 of file PublisherNew.h.

Constructor & Destructor Documentation

◆ PublisherNew()

RTC::PublisherNew::PublisherNew ( )

Constructor.

Constructor

Definition at line 42 of file PublisherNew.cpp.

◆ ~PublisherNew()

RTC::PublisherNew::~PublisherNew ( void  )
virtual

Destructor.

Destructor

Definition at line 57 of file PublisherNew.cpp.

Member Function Documentation

◆ activate()

PublisherBase::ReturnCode RTC::PublisherNew::activate ( )
virtual

activation

This function activates the publisher. By calling this function, this publisher starts the thread that pushes data to InPort. If precondition such as initialization process and so on is not met, the error code PRECONDITION_NOT_MET is returned.

Returns
PORT_OK normal return PRECONDITION_NOT_MET precondition is not met

Implements RTC::PublisherBase.

Definition at line 219 of file PublisherNew.cpp.

◆ convertReturn()

PublisherBase::ReturnCode RTC::PublisherNew::convertReturn ( BufferStatus::Enum  status,
const cdrMemoryStream &  data 
)
protected

Convertion from BufferStatus to DataPortStatus.

This function converts return value from the buffer to DataPortStatus::Enum typed return value. The conversion rule is as follows. Callback functions are also shown, if it exists.

  • BUFFER_OK: PORT_OK
    • None
  • BUFFER_ERROR: BUFFER_ERROR
    • None
  • BUFFER_FULL: BUFFER_FULL
  • NOT_SUPPORTED: PORT_ERROR
    • None
  • TIMEOUT: BUFFER_TIMEOUT
  • PRECONDITION_NOT_MET: PRECONDITION_NOT_MET
    • None
  • other: PORT_ERROR
    • None
Parameters
statusBufferStatus
datacdrMemoryStream
Returns
DataPortStatus typed return code

Definition at line 493 of file PublisherNew.cpp.

◆ createTask()

bool RTC::PublisherNew::createTask ( const coil::Properties prop)
protected

Setting Task.

Definition at line 317 of file PublisherNew.cpp.

◆ deactivate()

PublisherBase::ReturnCode RTC::PublisherNew::deactivate ( )
virtual

deactivation

This function deactivates the publisher. By calling this function, this publisher stops the thread that pushes data to InPort. If precondition such as initialization process and so on is not met, the error code PRECONDITION_NOT_MET is returned.

Returns
PORT_OK normal return PRECONDITION_NOT_MET precondition is not met

Implements RTC::PublisherBase.

Definition at line 232 of file PublisherNew.cpp.

◆ init()

PublisherBase::ReturnCode RTC::PublisherNew::init ( coil::Properties prop)
virtual

Initialization.

initialization

This function have to be called before using this class object. Properties object that includes certain configuration information should be given as an argument. all, fifo, skip, new can be given as a data push policy in a value of the key "publisher.push_policy."

The following options are available.

  • thread_type: Thread type (string, default: default)
  • publisher.push_policy: Push policy (all, fifo, skip, new)
  • publisher.skip_count: The number of skip count in the "skip" policy
  • measurement.exec_time: Task execution time measurement (enable/disable)
  • measurement.exec_count: Task execution time measurement count (numerical, number of times)
  • measurement.period_time: Task period time measurement (enable/disable)
  • measurement.period_count: Task period time measurement count (number, count)
Parameters
propertyProperty objects that includes the control information of this Publisher
Returns
ReturnCode PORT_OK normal return INVALID_ARGS Properties with invalid values.

Implements RTC::PublisherBase.

Definition at line 82 of file PublisherNew.cpp.

◆ invokeListener()

PublisherNew::ReturnCode RTC::PublisherNew::invokeListener ( DataPortStatus::Enum  status,
const cdrMemoryStream &  data 
)
protected

Call listeners according to the DataPortStatus.

Parameters
statusDataPortStatus
datacdrMemoryStream
Returns
Return code

Definition at line 541 of file PublisherNew.cpp.

◆ isActive()

bool RTC::PublisherNew::isActive ( void  )
virtual

If publisher is active state.

Confirm to activate.

A Publisher can be activated/deactivated synchronized with the data port. The active state and the non-active state are made transition by the "activate()" and the "deactivate()" functions respectively. This function confirms if the publisher is in active state.

Returns
Result of state confirmation (Active state:true, Inactive state:false)

Implements RTC::PublisherBase.

Definition at line 207 of file PublisherNew.cpp.

◆ onBufferFull()

void RTC::PublisherNew::onBufferFull ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_BUFFER_FULL event to listeners.

Parameters
datacdrMemoryStream

Definition at line 577 of file PublisherNew.h.

◆ onBufferRead()

void RTC::PublisherNew::onBufferRead ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_BUFFER_READ event to listeners.

Parameters
datacdrMemoryStream

Definition at line 622 of file PublisherNew.h.

◆ onBufferWrite()

void RTC::PublisherNew::onBufferWrite ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_BUFFER_WRITE event to listeners.

Parameters
datacdrMemoryStream

Definition at line 562 of file PublisherNew.h.

◆ onBufferWriteOverwrite()

void RTC::PublisherNew::onBufferWriteOverwrite ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_BUFFER_OVERWRITE event to listeners.

Parameters
datacdrMemoryStream

Definition at line 607 of file PublisherNew.h.

◆ onBufferWriteTimeout()

void RTC::PublisherNew::onBufferWriteTimeout ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_BUFFER_WRITE_TIMEOUT event to listeners.

Parameters
datacdrMemoryStream

Definition at line 592 of file PublisherNew.h.

◆ onReceived()

void RTC::PublisherNew::onReceived ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_RECEIVED event to listeners.

Parameters
datacdrMemoryStream

Definition at line 652 of file PublisherNew.h.

◆ onReceiverError()

void RTC::PublisherNew::onReceiverError ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_RECEIVER_ERROR event to listeners.

Parameters
datacdrMemoryStream

Definition at line 697 of file PublisherNew.h.

◆ onReceiverFull()

void RTC::PublisherNew::onReceiverFull ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_RECEIVER_FULL event to listeners.

Parameters
datacdrMemoryStream

Definition at line 667 of file PublisherNew.h.

◆ onReceiverTimeout()

void RTC::PublisherNew::onReceiverTimeout ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_RECEIVER_TIMEOUT event to listeners.

Parameters
datacdrMemoryStream

Definition at line 682 of file PublisherNew.h.

◆ onSend()

void RTC::PublisherNew::onSend ( const cdrMemoryStream &  data)
inlineprotected

Notify an ON_SEND event to listners.

Parameters
datacdrMemoryStream

Definition at line 637 of file PublisherNew.h.

◆ onSenderError()

void RTC::PublisherNew::onSenderError ( )
inlineprotected

Notify an ON_SENDER_ERROR event to listeners.

Parameters
datacdrMemoryStream

Definition at line 712 of file PublisherNew.h.

◆ pushAll()

PublisherNew::ReturnCode RTC::PublisherNew::pushAll ( )
protected

push "all" policy

push all policy

Definition at line 364 of file PublisherNew.cpp.

◆ pushFifo()

PublisherNew::ReturnCode RTC::PublisherNew::pushFifo ( )
protected

push "fifo" policy

Definition at line 390 of file PublisherNew.cpp.

◆ pushNew()

PublisherNew::ReturnCode RTC::PublisherNew::pushNew ( )
protected

push "new" policy

Definition at line 462 of file PublisherNew.cpp.

◆ pushSkip()

PublisherNew::ReturnCode RTC::PublisherNew::pushSkip ( )
protected

push "skip" policy

Definition at line 414 of file PublisherNew.cpp.

◆ setBuffer()

PublisherBase::ReturnCode RTC::PublisherNew::setBuffer ( CdrBufferBase buffer)
virtual

Setting buffer pointer.

This operation sets a buffer that is associated with this object. If the buffer object is NULL, INVALID_ARGS will be returned.

Parameters
bufferA pointer to a CDR buffer object.
Returns
ReturnCode PORT_OK normal return INVALID_ARGS given argument has invalid value

Implements RTC::PublisherBase.

Definition at line 122 of file PublisherNew.cpp.

◆ setConsumer()

PublisherBase::ReturnCode RTC::PublisherNew::setConsumer ( InPortConsumer consumer)
virtual

Store InPort consumer.

This operation sets a consumer that is associated with this object. If the consumer object is NULL, INVALID_ARGS will be returned.

Parameters
consumerA pointer to a consumer object.
Returns
ReturnCode PORT_OK normal return INVALID_ARGS given argument has invalid value

Implements RTC::PublisherBase.

Definition at line 102 of file PublisherNew.cpp.

◆ setListener()

PublisherBase::ReturnCode RTC::PublisherNew::setListener ( ConnectorInfo info,
ConnectorListeners listeners 
)
virtual

Set the listener.

Setting buffer pointer.

This function sets ConnectorListeners listener object to the Publisher. By setting ConnectorListeners containing various listeners objects, these listeners are called at the time of reading and writing of a buffer, and transmission of data etc. Since the ownership of the ConnectorListeners object is owned by Port or RTObject, the Publisher never deletes the ConnectorListeners object. If the given ConnectorListeners' pointer is NULL, this function returns INVALID_ARGS.

Parameters
infoConnectorInfo that is localized object of ConnectorProfile
listenersConnectorListeners that holds various listeners
Returns
PORT_OK Normal return INVALID_ARGS Invalid arguments

Implements RTC::PublisherBase.

Definition at line 143 of file PublisherNew.cpp.

◆ setPushPolicy()

void RTC::PublisherNew::setPushPolicy ( const coil::Properties prop)
protected

Setting PushPolicy.

Definition at line 277 of file PublisherNew.cpp.

◆ svc()

int RTC::PublisherNew::svc ( void  )
virtual

Thread execution function.

A task execution function to be executed by coil::PeriodicTask.

Definition at line 245 of file PublisherNew.cpp.

◆ write()

PublisherBase::ReturnCode RTC::PublisherNew::write ( const cdrMemoryStream &  data,
unsigned long  sec,
unsigned long  usec 
)
virtual

Write data.

This function writes data into the buffer associated with this Publisher. If a Publisher object calls this function, without initializing correctly such as a consumer, a buffer, listeners, etc., error code PRECONDITION_NOT_MET will be returned and no operation of the writing to a buffer etc. will be performed.

Since writing into the buffer and sending data to InPort are performed asynchronously, occasionally this function returns return-codes such as CONNECTION_LOST and BUFFER_FULL that indicate the result of sending data to InPort. In this case, writing data into buffer will not be performed.

When publisher writes data to the buffer, if the buffer is filled, returns error, is returned with timeout and returns precondition error, error codes BUFFER_FULL, BUFFER_ERROR, BUFFER_TIMEOUT and PRECONDITION_NOT_MET will be returned respectively.

In other cases, PROT_ERROR will be returned.

Parameters
dataData to be wrote to the buffer
secTimeout time in unit seconds
nsecTimeout time in unit nano-seconds
Returns
PORT_OK Normal return PRECONDITION_NO_MET Precondition does not met. A consumer, a buffer, listenes are not set properly. CONNECTION_LOST detected that the connection has been lost BUFFER_FULL The buffer is full status. BUFFER_ERROR Some kind of error occurred in the buffer. NOT_SUPPORTED Some kind of operation that is not supported has been performed. TIMEOUT Timeout occurred when writing to the buffer.

Implements RTC::PublisherBase.

Definition at line 165 of file PublisherNew.cpp.

Member Data Documentation

◆ m_active

bool RTC::PublisherNew::m_active
private

Definition at line 730 of file PublisherNew.h.

◆ m_buffer

CdrBufferBase* RTC::PublisherNew::m_buffer
private

Definition at line 722 of file PublisherNew.h.

◆ m_consumer

InPortConsumer* RTC::PublisherNew::m_consumer
private

Definition at line 721 of file PublisherNew.h.

◆ m_leftskip

int RTC::PublisherNew::m_leftskip
private

Definition at line 731 of file PublisherNew.h.

◆ m_listeners

ConnectorListeners* RTC::PublisherNew::m_listeners
private

Definition at line 725 of file PublisherNew.h.

◆ m_profile

ConnectorInfo RTC::PublisherNew::m_profile
private

Definition at line 723 of file PublisherNew.h.

◆ m_pushPolicy

Policy RTC::PublisherNew::m_pushPolicy
private

Definition at line 728 of file PublisherNew.h.

◆ m_retcode

ReturnCode RTC::PublisherNew::m_retcode
private

Definition at line 726 of file PublisherNew.h.

◆ m_retmutex

Mutex RTC::PublisherNew::m_retmutex
private

Definition at line 727 of file PublisherNew.h.

◆ m_skipn

int RTC::PublisherNew::m_skipn
private

Definition at line 729 of file PublisherNew.h.

◆ m_task

coil::PeriodicTaskBase* RTC::PublisherNew::m_task
private

Definition at line 724 of file PublisherNew.h.

◆ rtclog

Logger RTC::PublisherNew::rtclog
private

Definition at line 720 of file PublisherNew.h.


The documentation for this class was generated from the following files:


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Mon Feb 28 2022 23:00:48