DDS Client#
Variables
-
constexpr uint32_t STREAM_HISTORY = 16#
Number of reliable XRCE stream blocks kept in the output/input history.
-
constexpr uint32_t TRANSPORT_MTU = UXR_CONFIG_CUSTOM_TRANSPORT_MTU#
MTU used by the selected XRCE transport backend.
-
constexpr uint32_t BUFFER_SIZE = TRANSPORT_MTU * STREAM_HISTORY#
Total bytes reserved for each reliable XRCE stream buffer.
-
constexpr uint32_t RELIABLE_STREAM_BLOCK_SIZE = BUFFER_SIZE / STREAM_HISTORY#
Bytes available in one reliable stream history block.
-
constexpr uint32_t ESTIMATED_XRCE_WRITE_OVERHEAD = 32#
Conservative allowance for XRCE write framing when checking one-block writes.
-
class DDSClient#
- #include <dds_client.hpp>
Public Types
-
using ReaderCallback = void (*)(const Topic &topic, const void *msg, uint16_t length, void *args)#
Public Functions
-
void init()#
Opens transport/session streams and creates the configured XRCE-DDS entities.
-
template<TopicId Id>
bool publish(const typename TopicMsg<Id>::Message &msg)# Writes a sample for a writer topic matched by TopicId.
-
void update()#
Services incoming data and reliable stream bookkeeping.
-
bool set_reader_callback(TopicId topic_id, ReaderCallback callback, void *args)#
Binds a callback for a reader topic matched by name or TopicId.
Private Functions
-
DDSClient(const char *ip, const char *port)#
Stores the Agent address used when init() opens the XRCE transport.
-
void generate_topics(uint16_t requests[], std::size_t &request_count, uxrObjectId participant_id)#
Queues XRCE Topic create requests for every configured topic.
-
void generate_writers(uint16_t requests[], std::size_t &request_count, uxrObjectId publisher_id)#
Queues XRCE DataWriter create requests for configured writer topics.
-
void generate_readers(uint16_t requests[], std::size_t &request_count, uxrObjectId subscriber_id)#
Queues XRCE DataReader create and request-data requests for configured reader topics.
-
bool confirm_delivery()#
Runs the XRCE session until reliable output delivery is confirmed or times out.
-
void handle_topic(uxrSession *session, uxrObjectId object_id, uint16_t request_id, uxrStreamId stream_id, ucdrBuffer *ub, uint16_t length)#
Deserializes an incoming reader sample and forwards it to the bound callback.
Private Members
-
const char *ip_#
TODO: Compute a 32 bit unique key.
ip for UDP transport
-
const char *port_#
port for UDP transport
-
uxrCustomTransport transport_#
-
uxrSession session_#
the uxr session object. Interacts directly with DDS Agent
-
uint8_t output_reliable_stream_buffer_[BUFFER_SIZE]#
DDS stream buffer for reliable output.
-
uxrStreamId reliable_out_#
uxrStreamId associated with output reliable buffer
-
uint8_t input_reliable_stream_buffer_[BUFFER_SIZE]#
DDS stream buffer for reliable input.
-
uxrStreamId reliable_in_#
uxrStreamId associated with input reliable buffer
-
bool delivery_pending_ = false#
-
std::array<ReaderCallback, TOPIC_COUNT> reader_callbacks_ = {}#
-
std::array<void*, TOPIC_COUNT> reader_callback_args_ = {}#
-
using ReaderCallback = void (*)(const Topic &topic, const void *msg, uint16_t length, void *args)#