OpenRTM-aist  2.1.0
Timestamp.h
Go to the documentation of this file.
1 // -*- C++ -*-
18 #ifndef RTM_TIMESTAMP_H
19 #define RTM_TIMESTAMP_H
20 
21 #include <rtm/ConnectorListener.h>
22 #include <chrono>
23 
45 template <class DataType>
46 void setTimestamp(DataType& data)
47 {
48  auto now = std::chrono::system_clock::now().time_since_epoch();
49  auto sec = std::chrono::duration_cast<std::chrono::seconds>(now);
50  auto nsec = std::chrono::duration_cast<std::chrono::nanoseconds>(now - sec);
51 // We do not consider overflow of tm.sec.
52  data.tm.sec = static_cast<decltype(data.tm.sec)>(sec.count());
53  data.tm.nsec = static_cast<decltype(data.tm.nsec)>(nsec.count());
54 }
55 
56 namespace RTC
57 {
58  template <class DataType>
59  class Timestamp
60  : public ConnectorDataListenerT<DataType>
61  {
62  USE_CONNLISTENER_STATUS;
63  public:
64  Timestamp(const char* ts_type) : m_tstype(ts_type) {}
65  ~Timestamp() override = default;
66  ReturnCode operator()(ConnectorInfo& info, DataType& data) override
67  {
68  if (info.properties["timestamp_policy"] != m_tstype)
69  {
70  return NO_CHANGE;
71  }
72  setTimestamp<DataType>(data);
73  return DATA_CHANGED;
74  }
75  std::string m_tstype;
76  };
77 } // namespace RTC
78 
79 #endif // RTM_TIMESTAMP_H
connector listener class
void setTimestamp(DataType &data)
Setting timestamp to data.
Definition: Timestamp.h:46
ConnectorDataListenerT class.
Definition: ConnectorListener.h:515
ConnectorInfo class.
Definition: ConnectorBase.h:50
coil::Properties properties
Connection properties.
Definition: ConnectorBase.h:178
@ NO_CHANGE
Definition: ConnectorListener.h:71
@ DATA_CHANGED
Definition: ConnectorListener.h:73
Definition: Timestamp.h:61
ReturnCode operator()(ConnectorInfo &info, DataType &data) override
Virtual Callback method.
Definition: Timestamp.h:66
~Timestamp() override=default
std::string m_tstype
Definition: Timestamp.h:75
Timestamp(const char *ts_type)
Definition: Timestamp.h:64
RT-Component.