9 #ifndef CLUON_OD4SESSION_HPP 10 #define CLUON_OD4SESSION_HPP 17 #include "cluon/cluonDataStructures.hpp" 25 #include <unordered_map> 93 OD4Session(uint16_t CID, std::function<
void(cluon::data::Envelope &&envelope)> delegate =
nullptr) noexcept;
100 void send(cluon::data::Envelope &&envelope) noexcept;
110 bool dataTrigger(int32_t messageIdentifier, std::function<
void(cluon::data::Envelope &&envelope)> delegate) noexcept;
122 void timeTrigger(
float freq, std::function<
bool()> delegate) noexcept;
131 template <
typename T>
132 void send(T &message,
const cluon::data::TimeStamp &sampleTimeStamp = cluon::data::TimeStamp(), uint32_t senderStamp = 0) noexcept {
134 std::lock_guard<std::mutex> lck(m_senderMutex);
137 cluon::data::Envelope envelope;
139 envelope.dataType(static_cast<int32_t>(message.ID()));
140 message.accept(protoEncoder);
141 envelope.serializedData(protoEncoder.
encodedData());
143 envelope.sampleTimeStamp((0 == (sampleTimeStamp.seconds() + sampleTimeStamp.microseconds())) ? envelope.sent() : sampleTimeStamp);
144 envelope.senderStamp(senderStamp);
147 send(std::move(envelope));
152 bool isRunning() noexcept;
155 void callback(std::string &&data, std::string &&from, std::chrono::system_clock::time_point &&timepoint) noexcept;
156 void sendInternal(std::string &&dataToSend) noexcept;
159 std::unique_ptr<cluon::UDPReceiver> m_receiver;
162 std::mutex m_senderMutex{};
164 std::function<void(cluon::data::Envelope &&envelope)> m_delegate{
nullptr};
166 std::mutex m_mapOfDataTriggeredDelegatesMutex{};
167 std::unordered_map<int32_t, std::function<void(cluon::data::Envelope &&envelope)>,
UseUInt32ValueAsHashKey> m_mapOfDataTriggeredDelegates{};
#define LIBCLUON_API
Definition: cluon.hpp:56
void send(T &message, const cluon::data::TimeStamp &sampleTimeStamp=cluon::data::TimeStamp(), uint32_t senderStamp=0) noexcept
Definition: OD4Session.hpp:132
cluon::data::TimeStamp now() noexcept
Definition: Time.hpp:70
std::string encodedData() const noexcept
Definition: ToProtoVisitor.cpp:15
Definition: UDPSender.hpp:56
Definition: OD4Session.hpp:76
Definition: ToProtoVisitor.hpp:23