C++ Device API
C++ Handler
class corelib::HandlerSynchronous application integration interface for a device endpoint.
sendFrame
virtual SendResult corelib::Handler::sendFrame(LinkId link, void *transportContext, FrameView frame)=0Attempts to enqueue one frame.
link Link identifier. transportContext Link context. frame Borrowed frame. Send result.
onTransaction
virtual void corelib::Handler::onTransaction(const TransactionView &transaction)Receives a decoded transaction.
transaction Borrowed callback value.
onSessionChanged
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
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
virtual void corelib::Handler::onDiagnostic(Diagnostic diagnostic, Status status)Receives a recoverable diagnostic.
diagnostic Category. status Associated status.
C++ Device
template <size_t MaximumMessageBytes = 1024, size_t ReassemblySlots = 2, size_t OutboundFrames = 32, size_t PendingRequests = 8>
class corelib::DeviceFixed-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
corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::Device()=defaultConstructs an uninitialised endpoint with zeroed fixed storage.
init
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::init(const Config &config, Handler &handler) noexceptInitialises the type-safe endpoint.
config Endpoint settings. handler Long-lived callback handler. Initialisation status.
init
corelib_status_t corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::init(corelib_config_t config) noexceptInitialises through the C configuration compatibility path.
config Native configuration with callbacks. Native initialisation status.
isReady
bool corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::isReady() const noexceptTests whether initialisation succeeded.
True when a native context exists.
nativeHandle
corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::nativeHandle() noexceptAccesses the native C context.
Mutable native context or null.
nativeHandle
const corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::nativeHandle() const noexceptAccesses the native C context.
Read-only native context or null.
get
corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::get() noexceptCompatibility alias for nativeHandle().
Mutable native context or null.
get
const corelib_context_t * corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::get() const noexceptCompatibility alias for nativeHandle().
Read-only native context or null.
reset
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::reset() noexceptClears endpoint protocol state.
Operation status.
tick
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::tick(uint64_t nowMs) noexceptAdvances timers and queued work.
nowMs Non-decreasing monotonic time. Operation status.
addLink
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::addLink(LinkId link, void *transportContext=nullptr) noexceptRegisters the single endpoint link.
link Non-zero link identifier. transportContext Opaque link context. Operation status.
removeLink
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::removeLink(LinkId link) noexceptRemoves the registered endpoint link.
link Link identifier. Operation status.
receive
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::receive(LinkId link, FrameView frame, uint64_t nowMs) noexceptProcesses one complete frame view.
link Receiving link. frame Borrowed frame. nowMs Non-decreasing time. Processing status.
receive
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::receive(LinkId link, const uint8_t(&frame)[CORELIB_FRAME_SIZE], uint64_t nowMs) noexceptProcesses one complete C array frame.
link Receiving link. frame Borrowed frame. nowMs Non-decreasing time. Processing status.
acceptBootstrap
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::acceptBootstrap(const corelib_bootstrap_assignment_t &assignment, uint64_t nowMs) noexceptAccepts a link-profile bootstrap assignment.
assignment Assignment value. nowMs Non-decreasing time. Validation status.
respond
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::respond(const TransactionId &request, Result result, ByteView data=ByteView()) noexceptResponds to a pending application request.
request Retained request identity. result Application result. data Optional encoded payload. Operation status.
publish
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::publish(PayloadKind kind, uint32_t shareId, ByteView data) noexceptPublishes an encoded application payload.
kind Common or Share. shareId Schema identifier. data Encoded bytes. Operation status.
usage
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::usage(Usage &value) const noexceptReads current resource use.
value Receives usage. Operation status.
limits
Status corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::limits(Limits &value) const noexceptReads fixed endpoint capacities.
value Receives limits. Operation status.
version
static Version corelib::Device< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests >::version() noexceptReturns Corelib and protocol versions.
Version information.
