10#ifndef NROS_RCLCPP_PUBLISHER_HPP
11#define NROS_RCLCPP_PUBLISHER_HPP
17#include "rclcpp/detail/traits.hpp"
19#include "rclcpp/detail/entity_name.hpp"
21#include "rclcpp/owned.hpp"
26#include "rclcpp/detail/nros_cpp_ffi.h"
207 return Result(M::ffi_publish(storage_, &
msg));
241 static_cast<void*
>(&
ctx)));
254 Loan(
Loan&&
o) : pub_(
o.pub_), buf_(
o.buf_), cap_(
o.cap_), token_(
o.token_) {
279 bool is_valid()
const {
return token_ !=
nullptr; }
310 if (token_ && pub_) {
330 void*
token =
nullptr;
332 if (
ret != 0) return ::rclcpp::ResultOf<Loan>::error(
Result(
ret));
361 return ::rclcpp::detail::qos_all_unknown();
363 return ::rclcpp::detail::qos_from_ffi(
f);
406 initialized_ =
false;
413 if (
other.initialized_) {
415 ::memcpy(topic_name_,
other.topic_name_,
sizeof(topic_name_));
416 other.initialized_ =
false;
421 if (
this != &
other) {
424 initialized_ =
false;
426 if (
other.initialized_) {
428 ::memcpy(topic_name_,
other.topic_name_,
sizeof(topic_name_));
430 other.initialized_ =
false;
508 friend class ::rclcpp::Node;
536 nros_cpp_ret_t ret = nros_cpp_publisher_create(&handle_, topic, M::TYPE_NAME, M::TYPE_HASH,
537 ffi_qos, out.storage_);
541 ::rclcpp::detail::assign_entity_name(out.topic_name_, topic);
542 out.initialized_ =
true;
560 const ::rclcpp::PublisherOptions& options) {
562 return create_publisher<M>(out, topic, qos);
578inline ResultOf<Publisher<M>> create_publisher(
::rclcpp::Node& node,
const char* topic,
582 if (!r.ok())
return ResultOf<Publisher<M>>::error(r);
583 return ResultOf<Publisher<M>>
::ok(::rclcpp::tr::forward_rvalue(p));
Definition client.hpp:129
Definition executor.hpp:116
Result count_subscribers(const char *topic_name, size_t *out_count)
Definition executor.hpp:328
typename::rclcpp::Publisher< M >::SharedPtr create_publisher(const char *topic, const ::rclcpp::QoS &qos=::rclcpp::QoS::default_profile())
create_publisher<M>(topic, qos) — available on every target.
Definition publisher.hpp:251
~Loan()
Definition publisher.hpp:272
size_t capacity() const
Definition publisher.hpp:277
const uint8_t * data() const
Definition publisher.hpp:276
Loan(void *pub, uint8_t *buf, size_t cap, void *token)
Definition publisher.hpp:305
Loan(const Loan &)=delete
Result discard()
Abandon without sending. Consumes the loan.
Definition publisher.hpp:293
uint8_t * data()
Writable view of the loaned bytes.
Definition publisher.hpp:275
bool is_valid() const
Definition publisher.hpp:279
Loan(Loan &&o)
Definition publisher.hpp:254
Loan & operator=(Loan &&o)
Definition publisher.hpp:258
Loan & operator=(const Loan &)=delete
Result commit(size_t actual_len)
Send actual_len bytes. Consumes the loan.
Definition publisher.hpp:282
Loan()
Definition publisher.hpp:253
Definition publisher.hpp:140
Result assert_liveliness()
Definition publisher.hpp:469
~Publisher()
Destructor — releases publisher resources.
Definition publisher.hpp:403
::rclcpp::QoS get_actual_qos() const
Definition publisher.hpp:358
Result publish_streamed(size_t total_len, W &&writer)
Definition publisher.hpp:226
Result get_gid(uint8_t(&out_gid)[GID_SIZE]) const
Definition publisher.hpp:499
const char * get_topic_name() const
Get the topic name.
Definition publisher.hpp:337
::rclcpp::ResultOf< Loan > loan(size_t requested_len)
Definition publisher.hpp:325
Publisher & operator=(Publisher &&other)
Definition publisher.hpp:420
bool is_valid() const
Check if the publisher is initialized and valid.
Definition publisher.hpp:400
Result get_subscription_count(::rclcpp::Executor &executor, size_t *out_count) const
Definition publisher.hpp:394
Result publish_raw(const uint8_t *data, size_t len)
Publish raw CDR bytes.
Definition publisher.hpp:211
Result publish(const M &msg)
Definition publisher.hpp:205
Publisher()
Definition publisher.hpp:438
Publisher(Publisher &&other)
Definition publisher.hpp:412
Result on_liveliness_lost(nros_cpp_publisher_count_cb_t cb, void *user_context=nullptr)
Register a callback for liveliness-lost events on this publisher.
Definition publisher.hpp:445
Result on_offered_deadline_missed(uint32_t deadline_ms, nros_cpp_publisher_count_cb_t cb, void *user_context=nullptr)
Definition publisher.hpp:452
static constexpr size_t GID_SIZE
Definition publisher.hpp:185
static constexpr QoS default_profile()
Default profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:714
Definition result.hpp:216
static constexpr ResultOf success()
Named constructors.
Definition result.hpp:238
Inline storage-size macros for opaque entity buffers.
rclcpp::Executor — drives transport I/O and dispatches callbacks.
int nros_cpp_ret_t
Definition future.hpp:21
static constexpr size_t PUBLISHER_TOPIC_NAME_MAX
Definition publisher.hpp:61
ResultOf< void > Result
Definition result.hpp:246
bool ok()
Definition node.hpp:3031
rclcpp::Node and global session helpers.
rclcpp::QoS — full DDS-shaped QoS settings (Phase 108.B.7).
rclcpp::Result, rclcpp::ErrorCode, and the RCLCPP_TRY macro.