104template <
typename ValueT, SecurityType SecT = SecurityType::kWithoutSecurity>
108 using UniquePtr = std::unique_ptr<Getter<ValueT, SecT>>;
111 using SharedPtr = std::shared_ptr<Getter<ValueT, SecT>>;
150 template <
typename ConfT,
typename = std::enable_if_t<std::is_base_of_v<Conf, ConfT>>>
170 [[nodiscard]] std::optional<ValueT>
get()
const;
270 bool init()
override;
295 std::optional<ValueT> value_;
296 mutable std::mutex mtx_;
300 bool has_value_notification_{
false};
301 bool change_reporting_{
false};
314template <
typename ValueT>
Versatile 128-byte byte buffer with SBO, five ownership modes and compression helpers.
Definition bytes.h:113
Getter(const ConfT &conf, InitType type=InitType::kWithInit)
Constructs a getter from a typed transport configuration object.
Definition getter-inl.h:52
bool init() override
Initialises the getter and registers the internal delivery callback.
Definition getter-inl.h:175
void set_change_reporting(bool enable)
Enables or disables change-reporting (suppress duplicate values).
Definition getter-inl.h:137
std::shared_ptr< Getter< ValueT, SecT > > SharedPtr
Shared-pointer alias.
Definition getter.h:111
int64_t get_latency() const
Returns the most recently measured end-to-end value latency.
Definition getter-inl.h:159
std::optional< ValueT > get() const
Returns the latest cached value, if one has been received.
Definition getter-inl.h:91
bool wait_for_value(std::chrono::milliseconds timeout=Timeout::kDefaultInterval)
Blocks until a value is received or the timeout expires.
Definition getter-inl.h:97
void set_manual_unloan(bool manual_unloan) override
Enables or disables manual-unloan mode for zero-copy receives.
Definition getter-inl.h:143
SampleLostInfo get_lost() const
Returns cumulative sample delivery statistics.
Definition getter-inl.h:164
bool get_change_reporting() const
Returns true if change-reporting mode is currently active.
Definition getter-inl.h:169
static SharedPtr create_shared(const std::string &url_str, InitType type=InitType::kWithInit)
Creates a Getter on the heap wrapped in a shared_ptr.
Definition getter-inl.h:45
bool listen(MsgCallback &&callback)
Registers a callback invoked whenever a new value arrives.
Definition getter-inl.h:124
void mark_as_subscriber()
Changes this getter's role to kSubscriber (event-receiver).
Definition getter-inl.h:246
void interrupt() override
Interrupts any blocking wait_for_value() call.
Definition getter-inl.h:239
std::unique_ptr< Getter< ValueT, SecT > > UniquePtr
Unique-pointer alias.
Definition getter.h:108
static constexpr Serializer::Type kValueType
Serializer type resolved at compile time from ValueT.
Definition getter.h:120
std::function< void(const ValueT &)> MsgCallback
User-facing callback type for value-change notifications.
Definition getter.h:114
static UniquePtr create_unique(const std::string &url_str, InitType type=InitType::kWithInit)
Creates a Getter on the heap wrapped in a unique_ptr.
Definition getter-inl.h:39
bool is_latency_and_lost_enabled() const
Returns true if latency and sample-loss tracking is active.
Definition getter-inl.h:154
void set_latency_and_lost_enabled(bool enable)
Enables or disables per-value latency and sample-loss tracking.
Definition getter-inl.h:149
static constexpr ImplType kImplType
Node role identifier (kGetter).
Definition getter.h:117
std::function< void(const Bytes &)> MsgCallback
Callback delivering a raw serialised message to a SubscriberImpl or GetterImpl.
Definition node_impl.h:177
Node()
Definition node-inl.h:322
Convenience alias for Getter with message security enabled.
Definition getter.h:315
POSIX monotonic-clock condition variable replacing std::condition_variable.
Abstract base class for all transport-specific getter (field reader) implementations.
constexpr Type get_type_of() noexcept
Deduces the Type enumerator for T at compile time.
Definition serializer-inl.h:160
Type
Identifies the serialisation codec to use for a given C++ type.
Definition serializer.h:123
constexpr bool is_supported(Type type) noexcept
Returns true when type identifies a supported serializer.
Definition serializer-inl.h:157
InitType
Controls whether a node is initialised immediately at construction.
Definition types.h:132
@ kWithInit
Initialise immediately in the constructor.
Definition types.h:134
ConditionVariable condition_variable
Definition condition_variable.h:686
ImplType
Bitmask identifying the role of a VLink node implementation.
Definition types.h:89
@ kGetter
Field getter (retrieve latest value).
Definition types.h:96
@ kWithSecurity
Encrypted and authenticated transport.
Definition types.h:150
Base CRTP template for all VLink communication nodes.
Cumulative sample delivery statistics for a subscriber or getter.
Definition types.h:217
static constexpr std::chrono::milliseconds kDefaultInterval
Default wait timeout: 5 seconds.
Definition types.h:201