3#include "../messages.hpp"
14#include <main/tims/tims.h>
15#include <main/tims/tims_api.h>
67 static_assert(is_commrat_message_v<T>,
"T must be a CommRaT message type");
69 if (!is_initialized_) {
77 auto view = result.view();
78 return send_raw(view.data(), view.size(), dest_mailbox_id);
84 static_assert(is_commrat_message_v<T>,
"T must be a CommRaT message type");
86 if (!is_initialized_) {
91 constexpr size_t buffer_size = sertial::Message<T>::max_buffer_size;
92 std::array<uint8_t, buffer_size> buffer;
94 ssize_t received_size = receive_raw(buffer.data(), buffer.size(), timeout);
96 if (received_size > 0) {
97 auto result = deserialize_message<T>(buffer.data(),
static_cast<size_t>(received_size));
121 return receive_raw(buffer.data(), buffer.size(), timeout);
125 TimsResult send_raw(
const void* data,
size_t size, uint32_t dest_mailbox_id);
126 ssize_t receive_raw(
void* buffer,
size_t buffer_size,
Milliseconds timeout);
130 std::atomic<bool> is_initialized_;
131 std::atomic<uint64_t> messages_sent_;
132 std::atomic<uint64_t> messages_received_;
133 uint32_t sequence_number_;
uint64_t get_messages_sent() const
const std::string & get_mailbox_name() const
TimsWrapper & operator=(const TimsWrapper &)=delete
uint64_t get_messages_received() const
ssize_t receive_raw_bytes(std::span< std::byte > buffer, Milliseconds timeout)
uint32_t get_mailbox_id() const
TimsWrapper(const TimsConfig &config)
std::optional< T > receive(Milliseconds timeout=Milliseconds(0))
TimsResult send(T &message, uint32_t dest_mailbox_id)
TimsWrapper(TimsWrapper &&) noexcept
bool is_initialized() const
TimsWrapper(const TimsWrapper &)=delete
CommRaT - Modern C++ Real-Time Communication Framework.
std::chrono::milliseconds Milliseconds
auto serialize_message(T &message) -> typename sertial::Message< T >::Result
Unified timestamp and time utility abstractions for CommRaT.