|
VLink
2.0.0
A high-performance communication middleware
|
Namespaces | |
| detail | |
| Exception | |
| Container namespace for VLink exception types. | |
| format | |
Minimal allocation-free {} placeholder formatter. | |
| Helpers | |
| Stateless utility functions shared across VLink subsystems. | |
| MemoryResource | |
Fallback shim when <memory_resource> is unavailable. | |
| NameDetector | |
| Compile-time type-name and enum-name reflection primitives. | |
| QosProfile | |
Pre-built Qos constants for common autonomy and embedded workloads. | |
| Quantize | |
| Stateless linear quantisation helpers. | |
| Serializer | |
| Status | |
| DDS-aligned status enumeration, base event class, and helper predicates. | |
| Traits | |
| Collection of compile-time type-trait helpers for VLink. | |
| Utils | |
| Portable host-system utility functions. | |
| zerocopy | |
Classes | |
| class | Bytes |
| Fixed-size 128-byte buffer holder with SBO, five ownership modes and integrated codecs. More... | |
| class | CachedTimestamp |
| Mutable cached generator for short formatted timestamps. More... | |
| class | CancellationRegistration |
| Move-only RAII handle that represents one subscribed cancellation callback. More... | |
| class | CancellationToken |
Lightweight observer of a CancellationSource shared across worker threads. More... | |
| class | CancellationSource |
| Mutator that mints observer tokens and signals one-shot cancellation. More... | |
| class | CpuProfiler |
Tracks active CPU time as a percentage of wall-clock time using a SpinLock guard. More... | |
| class | CpuProfilerGuard |
Scope guard that opens and closes a CpuProfiler active interval. More... | |
| class | DeadlineTimer |
| Cache-line aligned atomic deadline counter with millisecond / microsecond / nanosecond precision. More... | |
| class | ElapsedTimer |
| Atomic high-resolution timer with selectable clock source and unit. More... | |
| class | FastStream |
Logger-friendly std::ostream with a custom growable string buffer. More... | |
| class | Function |
Copyable type-erased callable analogue of std::function with a tunable SBO and pool spill. More... | |
| class | MoveFunction |
Move-only type-erased callable analogue of std::move_only_function with pool spill. More... | |
| class | Function< ReturnT(ArgsT...), SboSizeT > |
| class | MoveFunction< ReturnT(ArgsT...), SboSizeT > |
| class | GraphTask |
| DAG node carrying a callback, predecessor and successor links, and run-time state. More... | |
| class | Logger |
| Global singleton logger with four formatting styles and independently configurable sinks. More... | |
| class | LoggerPluginInterface |
| Pure-virtual interface that every shared-library logger backend implements. More... | |
| class | MemoryPool |
| Per-tier free-list pool with runtime statistics and oversized passthrough. More... | |
| class | MessageLoop |
| Serial task dispatcher with selectable queue backend and bounded timer registry. More... | |
| class | MpmcQueueBase |
| Non-template base class that owns every element-type-independent piece of state. More... | |
| class | MpmcQueue |
Fixed-capacity lock-free MPMC ring buffer over T. More... | |
| class | MultiLoop |
MessageLoop subclass that forwards every task to an internal ThreadPool. More... | |
| class | ObjectPoolBase |
Type-independent base of ObjectPool that owns counters, mutex and policy state. More... | |
| class | ObjectPool |
Thread-safe recycling pool for instances of T with RAII acquisition. More... | |
| class | Plugin |
| Manager that loads, tracks and unloads shared-library plugins by interface type. More... | |
| class | Process |
| Owns and drives a single child process with asynchronous I/O reporting. More... | |
| struct | Schedule |
Non-instantiable container for task-scheduling types and the process() entry points. More... | |
| class | Semaphore |
| In-process counting semaphore with an optional acquire timeout. More... | |
| class | SpinLock |
Adaptive spin lock satisfying the C++ Lockable named requirement. More... | |
| class | SpinLockGuard |
RAII wrapper that locks a SpinLock on construction and unlocks on destruction. More... | |
| class | SysSemaphore |
| Counting semaphore that can be shared across processes through an OS name. More... | |
| class | SysSharemem |
| Named cross-process shared-memory region with read-only or read-write mappings. More... | |
| struct | PostTaskOptions |
| Bundle of optional knobs accepted by tracked task-posting APIs. More... | |
| class | TaskHandle |
| Shared observable handle returned by tracked posting APIs. More... | |
| class | ThreadPool |
| Fixed worker pool that consumes a shared task queue. More... | |
| class | Timer |
Periodic or one-shot timer that fires on an associated MessageLoop thread. More... | |
| class | Uint128 |
| 128-bit unsigned integer represented as two 64-bit halves with full operator support. More... | |
| class | Uuid |
| Value-typed RFC 4122 UUID. More... | |
| class | WheelTimer |
| O(1) hashed-timing-wheel scheduler backed by an internal worker thread. More... | |
| class | Client |
| Type-safe RPC caller for the VLink method communication model. More... | |
| class | SecurityClient |
Convenience alias of Client with per-message encryption enabled. More... | |
| class | BagPluginInterface |
| Abstract plugin base shared by bag playback and bag recording. More... | |
| class | BagProcessor |
| Time-sorted relay buffer keyed on the data-plane time, shared by read- and write-side plugins. More... | |
| class | BagReader |
Format-agnostic VLink bag player driven by an internal MessageLoop. More... | |
| class | BagWriter |
Asynchronous VLink message recorder built on top of MessageLoop. More... | |
| class | ConvertPluginInterface |
| Abstract plugin base translating between VLink payloads and visualisation backends. More... | |
| class | DiscoveryReporter |
| Periodic multicast broadcaster of the process's active VLink endpoints. More... | |
| class | DiscoveryViewer |
MessageLoop-based aggregator of live VLink endpoint announcements. More... | |
| class | DynamicData |
| Type-erased wrapper that pairs an inline type name with a serialised payload. More... | |
| struct | Qos |
| Aggregate Quality of Service policy for a VLink communication endpoint. More... | |
| class | RunablePluginInterface |
Abstract plugin base that already owns a MessageLoop event thread. More... | |
| class | SchemaPluginBase |
Reusable base implementation of SchemaPluginInterface for mixed Protobuf / FlatBuffers metadata. More... | |
| class | SchemaPluginInterface |
| Polymorphic contract for runtime schema lookup and dynamic message construction. More... | |
| class | SchemaPluginManager |
Singleton accessor that owns a lazily loaded SchemaPluginInterface plugin. More... | |
| class | Security |
| Thread-safe authenticated encryption with symmetric, asymmetric, and pluggable modes. More... | |
| class | TerminalStream |
| Process-wide buffered stdout writer with TTY detection, ANSI support, and a 1 MiB ring. More... | |
| class | UrlRemap |
| Loads a JSON rewrite table and substitutes VLink URLs at runtime. More... | |
| class | VCAPReader |
Concrete MCAP-format BagReader implementation with index-driven seek. More... | |
| class | VCAPWriter |
Concrete MCAP-format BagWriter implementation with optional Zstd compression. More... | |
| class | VDBReader |
Concrete SQLite-backed BagReader implementation with full random-access support. More... | |
| class | VDBWriter |
Concrete SQLite-backed BagWriter implementation with WAL caching and batch commits. More... | |
| class | ExprtkSymbolTable |
Opaque wrapper around exprtk::symbol_table<double>. More... | |
| class | ExprtkExpression |
Opaque wrapper around exprtk::expression<double> plus its compiler. More... | |
| class | ProxyAPI |
Client-side proxy monitoring and control surface backed by a MessageLoop. More... | |
| class | ProxyServer |
In-process VLink proxy daemon backed by a MessageLoop. More... | |
| class | Getter |
| Type-safe latest-value reader for the VLink field communication model. More... | |
| class | SecurityGetter |
Convenience alias of Getter with per-message decryption enabled. More... | |
| class | AbstractObject |
Topic-scoped fan-out store of NodeImpl peers and their callbacks. More... | |
| class | AbstractFactory |
Lazily allocates and caches AbstractObject instances keyed by FilterT. More... | |
| class | AckManager |
| Thread-safe coordinator that pairs RPC requests with their acknowledgements. More... | |
| class | CalculateSample |
| Tracks expected and lost sample counts grouped by sender GUID. More... | |
| class | ClientImpl |
| Connection-aware base class for method-model client implementations. More... | |
| struct | Conf |
| Abstract base for every transport-specific configuration aggregate. More... | |
| struct | ConfPluginInterface |
| Stateless factory contract that external recognized-transport plugins must implement. More... | |
| class | GetterImpl |
| Field-model receive base class shared by every transport-specific getter. More... | |
| struct | IntraDataType |
| Polymorphic base of every in-process payload container. More... | |
| class | AbstractNode |
| Tiny mix-in that exposes the backend-native handle behind a node. More... | |
| class | NodeImpl |
| Backbone of every transport-specific VLink node implementation. More... | |
| class | PublisherImpl |
| Publish-side base shared by every transport-specific publisher. More... | |
| class | ServerImpl |
| Method-model server base shared by every transport implementation. More... | |
| class | SetterImpl |
| Field-model writer base shared by every transport-specific setter. More... | |
| struct | SslOptions |
| Aggregate of SSL / TLS settings for transport-layer encryption. More... | |
| class | SubscriberImpl |
| Event-model receive base shared by every transport-specific subscriber. More... | |
| struct | Frame |
| One recorded or replayed message as it flows through the bag pipeline. More... | |
| struct | Timeout |
| Compile-time timeout constants used by the public blocking wait helpers. More... | |
| struct | SampleLostInfo |
| Aggregate of cumulative delivered / lost sample counts. More... | |
| struct | SchemaData |
| Wire-format-neutral wrapper around one serialised schema blob. More... | |
| struct | Version |
| Semantic version number with comparison and string-conversion helpers. More... | |
| struct | Protocol |
| Plain-data record describing the parsed components of a VLink URL. More... | |
| struct | Url |
Conf subclass that routes virtual calls to the transport selected by a URL string. More... | |
| class | UrlParser |
| Immutable URL decomposition used by the VLink transport router. More... | |
| class | Node |
| Transport-agnostic CRTP base for all VLink communication primitives. More... | |
| class | Publisher |
| Type-safe topic emitter for the VLink event communication model. More... | |
| class | SecurityPublisher |
Convenience alias of Publisher with per-message security enabled. More... | |
| class | Server |
| Type-safe RPC handler for the VLink method communication model. More... | |
| class | SecurityServer |
Convenience alias of Server with per-message encryption enabled. More... | |
| class | Setter |
| Type-safe latest-value writer for the VLink field communication model. More... | |
| class | SecuritySetter |
Convenience alias of Setter with per-message encryption enabled. More... | |
| class | Subscriber |
| Type-safe topic listener for the VLink event communication model. More... | |
| class | SecuritySubscriber |
Convenience alias of Subscriber with per-message decryption enabled. More... | |
Typedefs | |
| using | ConditionVariable = std::condition_variable |
| using | ConditionVariableAny = std::condition_variable_any |
| using | condition_variable = ConditionVariable |
| using | condition_variable_any = ConditionVariableAny |
| template<typename SignatureT > | |
| using | LargeFunction = Function< SignatureT, 256U > |
| template<typename SignatureT > | |
| using | LargeMoveFunction = MoveFunction< SignatureT, 256U > |
| template<typename SignatureT > | |
| using | function = Function< SignatureT > |
| template<typename SignatureT > | |
| using | move_only_function = MoveFunction< SignatureT > |
| using | GraphTaskPtr = std::shared_ptr< GraphTask > |
Convenience alias for the canonical shared_ptr<GraphTask> handle. More... | |
| using | uint128_t = Uint128 |
| Convenience alias matching the lowercase fixed-width style of the standard integer types. More... | |
| using | IntraData = std::shared_ptr< IntraDataType > |
Shared-ownership handle for an IntraDataType payload. More... | |
| using | FrameCallback = MoveFunction< void(const Frame &)> |
| Frame sink reused by every bag frame interface. More... | |
Enumerations | |
| enum class | TaskExecutionState : uint8_t { kInvalid = 0 , kQueued , kRunning , kCompleted , kCancelled , kDropped , kRejected , kFailed } |
| Observable lifecycle stage of a tracked task. More... | |
| enum class | TaskOverflowPolicy : uint8_t { kUseDispatcherStrategy = 0 , kReject , kBlock } |
| Per-post override for the bounded-queue overflow strategy. More... | |
| enum class | TaskDropPolicy : uint8_t { kDroppable = 0 , kProtected } |
| Whether an accepted task may later be discarded by drop-oldest overflow paths. More... | |
| enum | ImplType : uint8_t { kUnknownImplType = 0 , kServer = 16 , kClient = 32 , kPublisher = 1 , kSubscriber = 2 , kSetter = 4 , kGetter = 8 } |
| Bitmask identifying the role of a VLink node implementation. More... | |
| enum class | TransportType : uint8_t { kUnknown = 0 , kIntra = 1 , kShm = 2 , kShm2 = 3 , kZenoh = 4 , kDds = 5 , kDdsc = 6 , kDdsr = 7 , kDdst = 8 , kSomeip = 9 , kMqtt = 10 , kFdbus = 11 , kQnx = 12 } |
| Enumeration of every transport backend recognised by VLink. More... | |
| enum class | InitType : uint8_t { kWithoutInit = 0 , kWithInit = 1 } |
| Selects between immediate and deferred node initialisation. More... | |
| enum class | SecurityType : uint8_t { kWithoutSecurity = 0 , kWithSecurity = 1 } |
| Compile-time selector for the per-node message security variant. More... | |
| enum class | ActionType : uint8_t { kUnknownAction = 0 , kClientRequest = 1 , kClientResponse = 2 , kServerRequest = 3 , kServerResponse = 4 , kPublish = 5 , kSubscribe = 6 , kSet = 7 , kGet = 8 } |
| Labels for messages captured by the recording infrastructure. More... | |
| enum class | SchemaType : uint8_t { kUnknown = 0 , kRaw = 1 , kZeroCopy = 2 , kProtobuf = 3 , kFlatbuffers = 4 } |
| Coarse runtime schema family used by discovery, bag metadata and proxy routing. More... | |
Functions | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| void | swap (Function< ReturnT(ArgsT...), SboSizeT > &lhs, Function< ReturnT(ArgsT...), SboSizeT > &rhs) noexcept |
Free-function swap; defers to the member swap of lhs. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator== (const Function< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept |
Equality with nullptr; true when cb has no stored target. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator== (std::nullptr_t, const Function< ReturnT(ArgsT...), SboSizeT > &cb) noexcept |
Commutative overload of operator==(Function, nullptr_t). More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator!= (const Function< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept |
Inequality with nullptr; true when cb stores a target. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator!= (std::nullptr_t, const Function< ReturnT(ArgsT...), SboSizeT > &cb) noexcept |
Commutative overload of operator!=(Function, nullptr_t). More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| void | swap (MoveFunction< ReturnT(ArgsT...), SboSizeT > &lhs, MoveFunction< ReturnT(ArgsT...), SboSizeT > &rhs) noexcept |
Free-function swap; defers to the member swap of lhs. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator== (const MoveFunction< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept |
Equality with nullptr; true when cb has no stored target. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator== (std::nullptr_t, const MoveFunction< ReturnT(ArgsT...), SboSizeT > &cb) noexcept |
Commutative overload of operator==(MoveFunction, nullptr_t). More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator!= (const MoveFunction< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept |
Inequality with nullptr; true when cb stores a target. More... | |
| template<typename ReturnT , typename... ArgsT, size_t SboSizeT> | |
| bool | operator!= (std::nullptr_t, const MoveFunction< ReturnT(ArgsT...), SboSizeT > &cb) noexcept |
Commutative overload of operator!=(MoveFunction, nullptr_t). More... | |
| bool | operator== (const Uuid &lhs, const Uuid &rhs) noexcept |
| bool | operator!= (const Uuid &lhs, const Uuid &rhs) noexcept |
| bool | operator< (const Uuid &lhs, const Uuid &rhs) noexcept |
| using vlink::condition_variable = typedef ConditionVariable |
| using vlink::condition_variable_any = typedef ConditionVariableAny |
| using vlink::ConditionVariable = typedef std::condition_variable |
| using vlink::ConditionVariableAny = typedef std::condition_variable_any |
| using vlink::FrameCallback = typedef MoveFunction<void(const Frame&)> |
Frame sink reused by every bag frame interface.
Takes the frame by const reference so no copy occurs on the synchronous path; a stage that must take ownership (an async reorder cache) or rewrite a field (playback URL remap) copies explicitly, and the payload Bytes itself is normally a shallow view at the source.
| using vlink::function = typedef Function<SignatureT> |
Convenience alias for the canonical shared_ptr<GraphTask> handle.
| using vlink::IntraData = typedef std::shared_ptr<IntraDataType> |
Shared-ownership handle for an IntraDataType payload.
Publishers and subscribers exchange messages by copying this shared_ptr, avoiding any payload copy. Use the declare_name wrapper generated by VLINK_INTRA_DATA_DECLARE, or downcast manually with std::static_pointer_cast.
| using vlink::LargeFunction = typedef Function<SignatureT, 256U> |
| using vlink::LargeMoveFunction = typedef MoveFunction<SignatureT, 256U> |
| using vlink::move_only_function = typedef MoveFunction<SignatureT> |
| using vlink::uint128_t = typedef Uint128 |
Convenience alias matching the lowercase fixed-width style of the standard integer types.
|
strong |
Labels for messages captured by the recording infrastructure.
Used by NodeImpl::try_record() so the bag writer can reconstruct message flow across nodes during playback.
| Enumerator | |
|---|---|
| kUnknownAction | Action category is not classified. |
| kClientRequest | RPC request emitted by a Client node. |
| kClientResponse | RPC response observed by a Client node. |
| kServerRequest | RPC request observed by a Server node. |
| kServerResponse | RPC response emitted by a Server node. |
| kPublish | Message emitted by a Publisher node. |
| kSubscribe | Message observed by a Subscriber node. |
| kSet | Value written by a Setter node. |
| kGet | Value observed by a Getter node. |
| enum vlink::ImplType : uint8_t |
Bitmask identifying the role of a VLink node implementation.
Values may be combined with bitwise OR to express compound capabilities, for example (kPublisher | kSubscriber) for a backend that handles both roles on the same topic. VLINK_ALLOW_IMPL_TYPE uses these combined flags to gate the Conf factory at compile time.
|
strong |
Selects between immediate and deferred node initialisation.
Pass kWithoutInit when the application needs to call Publisher::set_property() (or similar) before the underlying transport starts; otherwise the default kWithInit performs the full init inside the constructor.
| Enumerator | |
|---|---|
| kWithoutInit | Defer initialisation; call init() manually. |
| kWithInit | Initialise immediately in the constructor. |
|
strong |
Coarse runtime schema family used by discovery, bag metadata and proxy routing.
The wire / type identifier proper lives in ser_type (for example a protobuf fully qualified name or a FlatBuffers table name); SchemaType captures only the high-level decoding family so tools can pick the matching decoder without having to mirror the ser_type enum.
| Enumerator | |
|---|---|
| kUnknown | Decoding family unknown. |
| kRaw | Treat the payload as opaque bytes. |
| kZeroCopy | Decode through the VLink zero-copy structs. |
| kProtobuf | Decode through the Protocol Buffers stack. |
| kFlatbuffers | Decode through the FlatBuffers stack. |
|
strong |
Compile-time selector for the per-node message security variant.
Used as the second template argument of Publisher<T, SecurityType>, Subscriber<T, SecurityType> and the rest of the public node templates. kWithSecurity enables authenticated AES-128-GCM encryption (optionally wrapped with RSA-OAEP and signed with RSA-PSS) over the serialised payload. Both the intra:// transport and DDS variants using native CDR rejection the configuration; on those transports the security-prefixed node simply has no usable security object once init() runs.
| Enumerator | |
|---|---|
| kWithoutSecurity | Plain, unauthenticated transport. |
| kWithSecurity | Encrypted and authenticated transport. |
|
strong |
Whether an accepted task may later be discarded by drop-oldest overflow paths.
Even after admission, drop-oldest dispatchers may evict older tasks to make room for newer work. Mark a task kProtected to keep it out of that selection.
| Enumerator | |
|---|---|
| kDroppable | The task is a valid drop candidate. |
| kProtected | The task must not be dropped after admission. (Lock-free dispatchers do not honour this; see |
|
strong |
Observable lifecycle stage of a tracked task.
Non-terminal states (kInvalid, kQueued, kRunning) may transition further; terminal states (kCompleted, kCancelled, kDropped, kRejected, kFailed) are stable and unblock all waiters on TaskHandle::wait().
|
strong |
Per-post override for the bounded-queue overflow strategy.
kUseDispatcherStrategy inherits the dispatcher's configured behaviour; the other values temporarily force kReject or kBlock for a single submission.
|
strong |
Enumeration of every transport backend recognised by VLink.
Resolved by Url when the URL string is parsed. Concrete Conf classes report their own backend through get_transport_type().
|
inlinenoexcept |
Inequality with nullptr; true when cb stores a target.
|
inlinenoexcept |
Inequality with nullptr; true when cb stores a target.
| lhs | Left operand. |
| rhs | Right operand. |
true when the payloads differ in any byte.
|
inlinenoexcept |
Commutative overload of operator!=(Function, nullptr_t).
|
inlinenoexcept |
Commutative overload of operator!=(MoveFunction, nullptr_t).
| lhs | Left operand. |
| rhs | Right operand. |
true when lhs sorts strictly before rhs.
|
inlinenoexcept |
Equality with nullptr; true when cb has no stored target.
|
inlinenoexcept |
Equality with nullptr; true when cb has no stored target.
| lhs | Left operand. |
| rhs | Right operand. |
true when both payloads compare byte-equal.
|
inlinenoexcept |
Commutative overload of operator==(Function, nullptr_t).
|
inlinenoexcept |
Commutative overload of operator==(MoveFunction, nullptr_t).
|
inlinenoexcept |
Free-function swap; defers to the member swap of lhs.
|
inlinenoexcept |
Free-function swap; defers to the member swap of lhs.