Skip to content

C++ Device API

C++ Handler

cpp
class corelib::Handler

Synchronous application integration interface for a device endpoint.

sendFrame

cpp
virtual SendResult corelib::Handler::sendFrame(LinkId link, void *transportContext, FrameView frame)=0

Attempts to enqueue one frame.

link Link identifier. transportContext Link context. frame Borrowed frame. Send result.

onTransaction

cpp
virtual void corelib::Handler::onTransaction(const TransactionView &transaction)

Receives a decoded transaction.

transaction Borrowed callback value.

onSessionChanged

cpp
virtual void corelib::Handler::onSessionChanged(SessionState state, uint32_t sessionId, uint16_t localAddress)

Observes session lifecycle changes.

state New state. sessionId Session identifier. localAddress Assigned address.

onNodeChanged

cpp
virtual void corelib::Handler::onNodeChanged(UuidView uuid, bool reachable, uint16_t localAddress)

Observes local-node reachability.

uuid Node UUID. reachable Reachability. localAddress Assigned address.

onDiagnostic

cpp
virtual void corelib::Handler::onDiagnostic(Diagnostic diagnostic, Status status)

Receives a recoverable diagnostic.

diagnostic Category. status Associated status.

C++ Device

cpp
template <size_t MaximumMessageBytes = 1024, size_t ReassemblySlots = 2, size_t OutboundFrames = 32, size_t PendingRequests = 8>
class corelib::Device

Fixed-storage owner and type-safe facade for one device endpoint.

MaximumMessageBytes Maximum complete PFP message bytes. ReassemblySlots Concurrent fragmented inbound messages. OutboundFrames Frames that may await transport acceptance. PendingRequests Requests that may await application responses.

Device

cpp
corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::Device()=default

Constructs an uninitialised endpoint with zeroed fixed storage.

init

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::init(const Config &config, Handler &handler) noexcept

Initialises the type-safe endpoint.

config Endpoint settings. handler Long-lived callback handler. Initialisation status.

init

cpp
corelib_status_t corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::init(corelib_config_t config) noexcept

Initialises through the C configuration compatibility path.

config Native configuration with callbacks. Native initialisation status.

isReady

cpp
bool corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::isReady() const noexcept

Tests whether initialisation succeeded.

True when a native context exists.

nativeHandle

cpp
corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::nativeHandle() noexcept

Accesses the native C context.

Mutable native context or null.

nativeHandle

cpp
const corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::nativeHandle() const noexcept

Accesses the native C context.

Read-only native context or null.

get

cpp
corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::get() noexcept

Compatibility alias for nativeHandle().

Mutable native context or null.

get

cpp
const corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::get() const noexcept

Compatibility alias for nativeHandle().

Read-only native context or null.

reset

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::reset() noexcept

Clears endpoint protocol state.

Operation status.

tick

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::tick(uint64_t nowMs) noexcept

Advances timers and queued work.

nowMs Non-decreasing monotonic time. Operation status.

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::addLink(LinkId link, void *transportContext=nullptr) noexcept

Registers the single endpoint link.

link Non-zero link identifier. transportContext Opaque link context. Operation status.

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::removeLink(LinkId link) noexcept

Removes the registered endpoint link.

link Link identifier. Operation status.

receive

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::receive(LinkId link, FrameView frame, uint64_t nowMs) noexcept

Processes one complete frame view.

link Receiving link. frame Borrowed frame. nowMs Non-decreasing time. Processing status.

receive

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::receive(LinkId link, const uint8_t(&frame)[CORELIB_FRAME_SIZE], uint64_t nowMs) noexcept

Processes one complete C array frame.

link Receiving link. frame Borrowed frame. nowMs Non-decreasing time. Processing status.

acceptBootstrap

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::acceptBootstrap(const corelib_bootstrap_assignment_t &assignment, uint64_t nowMs) noexcept

Accepts a link-profile bootstrap assignment.

assignment Assignment value. nowMs Non-decreasing time. Validation status.

respond

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::respond(const TransactionId &request, Result result, ByteView data=ByteView()) noexcept

Responds to a pending application request.

request Retained request identity. result Application result. data Optional encoded payload. Operation status.

publish

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::publish(PayloadKind kind, uint32_t shareId, ByteView data) noexcept

Publishes an encoded application payload.

kind Common or Share. shareId Schema identifier. data Encoded bytes. Operation status.

usage

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::usage(Usage &value) const noexcept

Reads current resource use.

value Receives usage. Operation status.

limits

cpp
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::limits(Limits &value) const noexcept

Reads fixed endpoint capacities.

value Receives limits. Operation status.

version

cpp
static Version corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::version() noexcept

Returns Corelib and protocol versions.

Version information.

Released under the MIT Licence.