100 #include <type_traits>
121 template <
typename ValueT, SecurityType SecT = SecurityType::kWithoutSecurity>
124 using UniquePtr = std::unique_ptr<Getter<ValueT, SecT>>;
125 using SharedPtr = std::shared_ptr<Getter<ValueT, SecT>>;
159 template <
typename ConfT,
typename = std::enable_if_t<std::is_base_of_v<Conf, ConfT>>>
189 [[nodiscard]] std::optional<ValueT>
get()
const;
288 bool init()
override;
313 std::optional<ValueT> value_;
314 mutable std::mutex mtx_;
318 bool has_value_notification_{
false};
319 bool change_reporting_{
false};
332 template <
typename ValueT>
335 using UniquePtr = std::unique_ptr<SecurityGetter<ValueT>>;
336 using SharedPtr = std::shared_ptr<SecurityGetter<ValueT>>;
348 template <
typename SecurityConfigT = Security::Config>
362 template <
typename SecurityConfigT = Security::Config>
376 template <
typename ConfT,
typename SecurityConfigT = Security::Config,
377 typename = std::enable_if_t<std::is_base_of_v<Conf, ConfT>>>
395 template <
typename SecurityConfigT = Security::Config>
396 explicit SecurityGetter(
const std::string& url_str, SecurityConfigT&& sec_cfg = {},
Fixed-size 128-byte buffer holder with SBO, five ownership modes and integrated codecs.
Definition: bytes.h:120
Type-safe latest-value reader for the VLink field communication model.
Definition: getter.h:122
Getter(const ConfT &conf, InitType type=InitType::kWithInit)
Constructs a getter from a typed transport configuration object.
Definition: getter-inl.h:52
std::unique_ptr< Getter< ValueT, SecT > > UniquePtr
Owning unique-pointer alias.
Definition: getter.h:124
bool init() override
Initialises the getter and installs the internal delivery hook.
Definition: getter-inl.h:181
void set_change_reporting(bool enable)
Toggles change-only reporting (duplicate suppression).
Definition: getter-inl.h:143
~Getter() override
Destroys the getter and drains in-flight transport callbacks.
Definition: getter-inl.h:90
int64_t get_latency() const
Returns the most recent end-to-end latency measurement.
Definition: getter-inl.h:165
std::optional< ValueT > get() const
Returns the most recent cached value, if any has been received.
Definition: getter-inl.h:96
bool wait_for_value(std::chrono::milliseconds timeout=Timeout::kDefaultInterval)
Blocks until a value is received or timeout expires.
Definition: getter-inl.h:102
void set_manual_unloan(bool manual_unloan) override
Enables or disables manual-unloan mode for zero-copy receives.
Definition: getter-inl.h:149
SampleLostInfo get_lost() const
Returns cumulative sample-delivery statistics.
Definition: getter-inl.h:170
bool get_change_reporting() const
Reports whether change-only reporting is currently active.
Definition: getter-inl.h:175
static SharedPtr create_shared(const std::string &url_str, InitType type=InitType::kWithInit)
Heap-allocates a Getter and wraps it in a std::shared_ptr.
Definition: getter-inl.h:45
bool listen(MsgCallback &&callback)
Installs a callback invoked whenever a new value arrives.
Definition: getter-inl.h:129
void mark_as_subscriber()
Promotes this getter to behave as a Subscriber at the transport layer.
Definition: getter-inl.h:253
void interrupt() override
Aborts any blocking wait_for_value() call.
Definition: getter-inl.h:246
static constexpr Serializer::Type kValueType
Codec resolved from ValueT.
Definition: getter.h:129
std::shared_ptr< Getter< ValueT, SecT > > SharedPtr
Owning shared-pointer alias.
Definition: getter.h:125
static UniquePtr create_unique(const std::string &url_str, InitType type=InitType::kWithInit)
Heap-allocates a Getter and wraps it in a std::unique_ptr.
Definition: getter-inl.h:39
bool is_latency_and_lost_enabled() const
Reports whether latency and sample-loss tracking is currently active.
Definition: getter-inl.h:160
void set_latency_and_lost_enabled(bool enable)
Toggles per-value latency and sample-loss measurement.
Definition: getter-inl.h:155
static constexpr ImplType kImplType
Node role tag (kGetter).
Definition: getter.h:128
Transport-agnostic CRTP base for all VLink communication primitives.
Definition: node.h:164
Convenience alias of Getter with per-message decryption enabled.
Definition: getter.h:333
static UniquePtr create_unique(const std::string &url_str, SecurityConfigT &&sec_cfg={}, InitType type=InitType::kWithInit)
Heap-allocates a SecurityGetter and wraps it in a std::unique_ptr.
Definition: getter-inl.h:289
std::shared_ptr< SecurityGetter< ValueT > > SharedPtr
Owning shared-pointer alias.
Definition: getter.h:336
std::unique_ptr< SecurityGetter< ValueT > > UniquePtr
Owning unique-pointer alias.
Definition: getter.h:335
static SharedPtr create_shared(const std::string &url_str, SecurityConfigT &&sec_cfg={}, InitType type=InitType::kWithInit)
Heap-allocates a SecurityGetter and wraps it in a std::shared_ptr.
Definition: getter-inl.h:300
SecurityGetter(const ConfT &conf, SecurityConfigT &&sec_cfg={}, InitType type=InitType::kWithInit)
Constructs a SecurityGetter from a typed configuration object.
Definition: getter-inl.h:311
Monotonic-clock condition variable replacement immune to system clock jumps.
Pool-backed type-erased callables: copyable vlink::Function and move-only vlink::MoveFunction.
Transport-neutral base for field-model getter (latest-value reader) implementations.
Type
Identifies the codec to use for a given C++ message type.
Definition: serializer.h:154
constexpr bool is_supported(Type type) noexcept
Reports whether type identifies a usable codec.
Definition: serializer-inl.h:160
InitType
Selects between immediate and deferred node initialisation.
Definition: types.h:154
@ kWithInit
Initialise immediately in the constructor.
std::condition_variable ConditionVariable
Definition: condition_variable.h:605
ImplType
Bitmask identifying the role of a VLink node implementation.
Definition: types.h:110
@ kGetter
Field getter (reads latest value).
Definition: types.h:117
Common CRTP base for every VLink communication primitive.
Aggregate of cumulative delivered / lost sample counts.
Definition: types.h:273
static constexpr std::chrono::milliseconds kDefaultInterval
Default wait timeout: 5 seconds.
Definition: types.h:258