61 template <
class DataType>
66 data.tm.sec = tm.
sec();
67 data.tm.nsec = tm.
usec() * 1000;
107 template <
class DataType>
137 #if defined(__GNUC__) && (__GNUC__ <= 3 && __GNUC_MINOR__ <= 3) 138 :
OutPortBase(name, ::CORBA_Util::toRepositoryIdOfStruct<DataType>()),
140 :
OutPortBase(name, ::CORBA_Util::toRepositoryId<DataType>()),
143 m_value(value), m_onWrite(0), m_onWriteConvert(0),
144 m_directNewData(
false), m_directValue(value)
219 if (m_onWrite != NULL)
227 std::vector<const char *> disconnect_ids;
232 if (!(conn_size > 0)) {
return false; }
234 m_status.resize(conn_size);
236 for (
size_t i(0), len(conn_size); i < len; ++i)
242 if (m_onWriteConvert != NULL)
244 RTC_DEBUG((
"m_connectors.OnWriteConvert called"));
245 ret =
m_connectors[i]->write(((*m_onWriteConvert)(value)));
249 RTC_DEBUG((
"m_connectors.write called"));
255 Guard guard(m_valueMutex);
256 if (m_onWriteConvert != NULL)
258 RTC_DEBUG((
"m_connectors.OnWriteConvert called"));
259 m_directValue = ((*m_onWriteConvert)(value));
263 m_directValue = value;
265 m_directNewData =
true;
270 if (ret ==
PORT_OK) {
continue; }
277 RTC_WARN((
"connection_lost id: %s",
id));
281 (*m_onConnectionLost)(prof);
283 disconnect_ids.push_back(
id);
315 return write(m_value);
382 return m_status[index];
450 m_onWrite = on_write;
491 m_onWriteConvert = on_wconvert;
510 virtual void read(DataType& data)
512 Guard guard(m_valueMutex);
513 m_directNewData =
false;
514 data = m_directValue;
518 return !m_directNewData;
522 return m_directNewData;
526 std::string m_typename;
558 CORBA::Long m_propValueIndex;
561 bool m_directNewData;
562 DataType m_directValue;
568 #endif // RTC_OUTPORT_H void addConnectorDataListener(ConnectorDataListenerType listener_type, ConnectorDataListener *listener, bool autoclean=true)
ConnectorDataListener リスナを追加する
std::vector< OutPortConnector * > m_connectors
接続リスト
Definition: OutPortBase.h:1064
#define RTC_TRACE(fmt)
トレースログ出力マクロ。
Definition: SystemLogger.h:588
long int sec() const
秒単位の値を取得する
Definition: TimeValue.h:110
void setOnWriteConvert(OnWriteConvert< DataType > *on_wconvert)
OnWriteConvert コールバックの設定
Definition: OutPort.h:489
write() 時のデータ変換コールバック抽象クラス
Definition: PortCallback.h:258
Mutex クラス
Definition: Mutex.h:40
coil::Mutex m_connectorsMutex
Definition: PortBase.h:2110
virtual void read(DataType &data)
データをダイレクトに読み込む
Definition: OutPort.h:510
virtual ~OutPort(void)
デストラクタ
Definition: OutPort.h:170
Definition: Timestamp.h:26
virtual bool isNew()
新規データの存在確認
Definition: OutPort.h:520
Periodic time measurement class.
bool write()
データ書き込み
Definition: OutPort.h:313
DataPortStatusList getStatusList()
特定のコネクタへの書き込みステータスリストを得る
Definition: OutPort.h:414
Definition: ConnectorListener.h:140
Definition: DataPortStatus.h:157
virtual bool isEmpty()
新規データが無いことを確認
Definition: OutPort.h:516
TimeValue クラス
Definition: TimeValue.h:40
#define RTC_WARN(fmt)
ワーニングログ出力マクロ。
Definition: SystemLogger.h:522
std::vector< DataPortStatus::Enum > DataPortStatusList
Definition: DataPortStatus.h:206
int gettimeofday(struct timeval *tv, struct timezone *tz)
時刻とタイムゾーンを取得する
Definition: Time.h:137
Definition: ConnectorListener.h:145
#define RTC_DEBUG(fmt)
デバッグログ出力マクロ。
Definition: SystemLogger.h:566
bool operator<<(DataType &value)
データ書き込み
Definition: OutPort.h:343
direct接続用OutPort基底クラス
Definition: DirectOutPortBase.h:48
write() 時のコールバック抽象クラス
Definition: PortCallback.h:192
OutPortBase(const char *name, const char *data_type)
コンストラクタ
OutPort 基底クラス
Definition: OutPortBase.h:235
DirectPortBase * m_directport
Definition: PortBase.h:2235
Definition: DataPortStatus.h:145
virtual ReturnCode_t disconnect(const char *connector_id)
[CORBA interface] Port の接続を解除する
void setTimestamp(DataType &data)
データにタイムスタンプをセットする
Definition: OutPort.h:62
DataPortStatus::Enum getStatus(int index)
特定のコネクタへの書き込みステータスを得る
Definition: OutPort.h:380
OutPort テンプレートクラス
Definition: OutPort.h:108
OutPort(const char *name, DataType &value)
コンストラクタ
Definition: OutPort.h:136
virtual bool write(DataType &value)
データ書き込み
Definition: OutPort.h:215
void setOnWrite(OnWrite< DataType > *on_write)
OnWrite コールバックの設定
Definition: OutPort.h:448
TimeMeasure クラス
Definition: TimeMeasure.h:49
ConnectionCallback * m_onConnectionLost
Callback functor オブジェクト
Definition: PortBase.h:2218
Timestamp listener class.
long int usec() const
マイクロ秒単位の値を取得する
Definition: TimeValue.h:131
Enum
Definition: DataPortStatus.h:143
ConnectorProfile findConnProfile(const char *id)
id を持つ ConnectorProfile を探す
Functor for_each(CorbaSequence &seq, Functor f)
CORBA sequence に対して functor を適用する
Definition: CORBA_SeqUtil.h:98