Skip to content

C++ Gateway API

C++ GatewayHandler

cpp
class corelib::GatewayHandler

Synchronous application and transport integration for a gateway.

discover

cpp
virtual SendResult corelib::GatewayHandler::discover(LinkId link, void *transportContext, LinkProfileId profile, UuidView token)=0

Starts profile discovery.

link Downstream link. transportContext Profile context. profile Profile identifier. token Discovery token. Send result.

bootstrapAssign

cpp
virtual SendResult corelib::GatewayHandler::bootstrapAssign(void *transportContext, const corelib_bootstrap_assignment_t &assignment)=0

Delivers a bootstrap assignment through a profile.

transportContext Profile context. assignment Assignment value. Send result.

onTopologyChanged

cpp
virtual void corelib::GatewayHandler::onTopologyChanged(const corelib_topology_event_t &event)

Observes committed topology changes.

event Borrowed topology event.

C++ Gateway

cpp
template <size_t MaximumMessageBytes = 1024, size_t ReassemblySlots = 2, size_t OutboundFrames = 32, size_t PendingRequests = 8, size_t Links = 4, size_t Routes = 16, size_t Discoveries = 4, size_t Candidates = 16, size_t Assignments = 8, size_t ForwardingFrames = 32, size_t ControlBytes = 128, size_t ControlSlots = 2>
class corelib::Gateway

Fixed-storage owner and type-safe facade for one PFP gateway.

MaximumMessageBytes Maximum endpoint message bytes. ReassemblySlots Endpoint reassembly slots. OutboundFrames Endpoint outbound frames. PendingRequests Endpoint pending requests. Links Registered link capacity. Routes Installed route capacity. Discoveries Active discovery capacity. Candidates Retained candidate capacity. Assignments Pending assignment capacity. ForwardingFrames Routed frame capacity. ControlBytes Maximum local control message bytes. ControlSlots Local control reassembly slots.

Gateway

cpp
corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::Gateway()=default

Constructs an uninitialised gateway with zeroed fixed storage.

init

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::init(const GatewayConfig &config, GatewayHandler &handler) noexcept

Initialises the gateway and callback handler.

config Gateway settings. handler Long-lived handler. Initialisation status.

isReady

cpp
bool corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::isReady() const noexcept

Tests whether initialisation succeeded.

True when ready.

nativeHandle

cpp
corelib_gateway_context_t * corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::nativeHandle() noexcept

Accesses the mutable native gateway.

Native context or null.

nativeHandle

cpp
const corelib_gateway_context_t * corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::nativeHandle() const noexcept

Accesses the read-only native gateway.

Native context or null.

reset

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reset() noexcept

Clears protocol and topology state.

Operation status.

tick

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::tick(uint64_t now) noexcept

Advances timers and queued work.

now Non-decreasing time. Operation status.

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::addLink(const LinkConfig &value) noexcept

Registers a dedicated PFP link.

value Link configuration. Operation status.

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::removeLink(LinkId id) noexcept

Removes a link and dependent routes.

id Link identifier. Operation status.

setLinkAvailable

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::setLinkAvailable(LinkId id, bool available) noexcept

Changes link availability.

id Link identifier. available New state. Operation status.

receive

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::receive(LinkId id, FrameView frame, uint64_t now) noexcept

Processes one gateway frame.

id Receiving link. frame Borrowed frame. now Non-decreasing time. Processing status.

reportCandidate

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reportCandidate(const corelib_candidate_t &candidate) noexcept

Reports a discovered candidate.

candidate Candidate value. Operation status.

completeDiscovery

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::completeDiscovery(LinkId id, UuidView token, Status result) noexcept

Completes profile discovery.

id Link identifier. token Round token. result Profile result. Correlation status.

completeAssignment

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::completeAssignment(uint32_t transaction, UuidView uuid, ControlStatus result) noexcept

Completes profile assignment.

transaction Transaction identifier. uuid Candidate UUID. result Control status. Commit status.

reportNodeLost

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reportNodeLost(UuidView uuid) noexcept

Reports downstream node loss.

uuid Lost node UUID. Operation status.

acceptBootstrap

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::acceptBootstrap(const corelib_bootstrap_assignment_t &assignment, uint64_t now) noexcept

Accepts a local bootstrap assignment.

assignment Assignment. now Non-decreasing time. Validation status.

respond

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::respond(const TransactionId &request, Result result, ByteView data=ByteView()) noexcept

Responds to a local request.

request Request identity. result Application result. data Optional payload. Operation status.

publish

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::publish(PayloadKind kind, uint32_t shareId, ByteView data) noexcept

Publishes a local application payload.

kind Payload kind. shareId Schema identifier. data Encoded bytes. Operation status.

usage

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::usage(GatewayUsage &value) const noexcept

Reads gateway resource usage.

value Receives usage. Operation status.

limits

cpp
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::limits(GatewayLimits &value) const noexcept

Reads gateway capacities and deadlines.

value Receives limits. Operation status.

Released under the MIT Licence.