23#include <coil/TimeMeasure.h>
77 template <
class DataType>
107 m_value(value), m_onWrite(nullptr), m_onWriteConvert(nullptr),
108 m_directNewData(false), m_directValue(value)
120 std::string marshaling_types{coil::eraseBlank(coil::flatten(
123 RTC_DEBUG((
"available marshaling_types: %s", marshaling_types.c_str()));
125 addProperty(
"dataport.marshaling_types", marshaling_types.c_str());
190 if (m_onWrite !=
nullptr)
198 std::vector<const char *> disconnect_ids;
203 if (!(conn_size > 0)) {
return false; }
205 m_status.resize(conn_size);
207 for (
size_t i(0), len(conn_size); i < len; ++i)
213 if (m_onWriteConvert !=
nullptr)
215 RTC_DEBUG((
"m_connectors.OnWriteConvert called"));
216 DataType tmp = (*m_onWriteConvert)(value);
221 RTC_DEBUG((
"m_connectors.write called"));
227 std::lock_guard<std::mutex> value_guard(m_valueMutex);
228 if (m_onWriteConvert !=
nullptr)
230 RTC_DEBUG((
"m_connectors.OnWriteConvert called"));
231 m_directValue = ((*m_onWriteConvert)(value));
237 m_directNewData =
true;
249 RTC_WARN((
"connection_lost id: %s",
id));
253 (*m_onConnectionLost)(prof);
255 disconnect_ids.emplace_back(
id);
259 std::for_each(disconnect_ids.begin(), disconnect_ids.end(),
260 [
this](
const char *
id){this->disconnect(id);});
287 return write(m_value);
354 return m_status[index];
422 m_onWrite = on_write;
463 m_onWriteConvert = on_wconvert;
481 void read(DataType& data)
override
483 std::lock_guard<std::mutex> guard(m_valueMutex);
484 m_directNewData =
false;
489 return !m_directNewData;
493 return m_directNewData;
517 std::string m_typename;
545 coil::TimeMeasure m_cdrtime;
549 CORBA::Long m_propValueIndex;
551 std::mutex m_valueMutex;
552 bool m_directNewData;
553 DataType m_directValue;
void CdrMemoryStreamInit()
Definition CORBA_CdrMemoryStream.h:650
Data type utility function.
#define RTC_WARN(fmt)
Warning log output macro.
Definition SystemLogger.h:621
#define RTC_TRACE(fmt)
Trace level log output macro.
Definition SystemLogger.h:687
#define RTC_DEBUG(fmt)
Debug level log output macro.
Definition SystemLogger.h:665
Timestamp listener class.
DataPortStatus mixin class.
ConnectorListenersT class.
Definition ConnectorListener.h:2086
Definition DirectOutPortBase.h:48
Callback abstract class on write()
Definition PortCallback.h:193
Output base class.
Definition OutPortBase.h:229
void addConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)
Adding BufferDataListener type listener.
ConnectorListenersBase * m_listeners
ConnectorDataListener listener .
Definition OutPortBase.h:1098
std::vector< OutPortConnector * > m_connectors
Connection list .
Definition OutPortBase.h:1066
OutPort template class.
Definition OutPort.h:80
DataPortStatusList getStatusList()
Getting specified connector's writing status list.
Definition OutPort.h:386
DataPortStatus getStatus(int index)
Getting specified connector's writing status.
Definition OutPort.h:352
bool isEmpty() override
Definition OutPort.h:487
void initConnectorListeners() override
Definition OutPort.h:511
virtual bool write(DataType &value)
Write data.
Definition OutPort.h:186
void setOnWrite(OnWrite< DataType > *on_write)
Set OnWrite callback.
Definition OutPort.h:420
bool operator<<(DataType &value)
Write data.
Definition OutPort.h:315
void read(DataType &data) override
Definition OutPort.h:481
~OutPort() override
Destructor.
void setOnWriteConvert(OnWriteConvert< DataType > *on_wconvert)
Set OnWriteConvert callback.
Definition OutPort.h:461
bool isNew() override
Definition OutPort.h:491
bool write() override
Write data.
Definition OutPort.h:285
OutPort(const char *name, DataType &value)
Constructor.
Definition OutPort.h:105
std::mutex m_connectorsMutex
Definition PortBase.h:2115
DirectPortBase * m_directport
Definition PortBase.h:2239
ConnectorProfile findConnProfile(const char *id)
Find ConnectorProfile with id.
ConnectionCallback * m_onConnectionLost
Callback functor objects.
Definition PortBase.h:2222
void addProperty(const char *key, ValueType value)
Add NameValue data to PortProfile's properties.
Definition PortBase.h:1877
Definition Timestamp.h:61
Definition DataTypeUtil.h:24
void copyData(T &data1, const T &data2)
Definition DataTypeUtil.h:43
std::vector< DataPortStatus > DataPortStatusList
Definition DataPortStatus.h:175
std::vector< std::string > getSerializerList()
Definition ByteDataStreamBase.h:385
Data convert callback abstract class on write()
Definition PortCallback.h:259