C++ Gateway API
C++ GatewayHandler
class corelib::GatewayHandlerSynchronous application and transport integration for a gateway.
discover
virtual SendResult corelib::GatewayHandler::discover(LinkId link, void *transportContext, LinkProfileId profile, UuidView token)=0Starts profile discovery.
link Downstream link. transportContext Profile context. profile Profile identifier. token Discovery token. Send result.
bootstrapAssign
virtual SendResult corelib::GatewayHandler::bootstrapAssign(void *transportContext, const corelib_bootstrap_assignment_t &assignment)=0Delivers a bootstrap assignment through a profile.
transportContext Profile context. assignment Assignment value. Send result.
onTopologyChanged
virtual void corelib::GatewayHandler::onTopologyChanged(const corelib_topology_event_t &event)Observes committed topology changes.
event Borrowed topology event.
C++ Gateway
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::GatewayFixed-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
corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::Gateway()=defaultConstructs an uninitialised gateway with zeroed fixed storage.
init
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::init(const GatewayConfig &config, GatewayHandler &handler) noexceptInitialises the gateway and callback handler.
config Gateway settings. handler Long-lived handler. Initialisation status.
isReady
bool corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::isReady() const noexceptTests whether initialisation succeeded.
True when ready.
nativeHandle
corelib_gateway_context_t * corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::nativeHandle() noexceptAccesses the mutable native gateway.
Native context or null.
nativeHandle
const corelib_gateway_context_t * corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::nativeHandle() const noexceptAccesses the read-only native gateway.
Native context or null.
reset
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reset() noexceptClears protocol and topology state.
Operation status.
tick
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::tick(uint64_t now) noexceptAdvances timers and queued work.
now Non-decreasing time. Operation status.
addLink
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::addLink(const LinkConfig &value) noexceptRegisters a dedicated PFP link.
value Link configuration. Operation status.
removeLink
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::removeLink(LinkId id) noexceptRemoves a link and dependent routes.
id Link identifier. Operation status.
setLinkAvailable
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::setLinkAvailable(LinkId id, bool available) noexceptChanges link availability.
id Link identifier. available New state. Operation status.
receive
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::receive(LinkId id, FrameView frame, uint64_t now) noexceptProcesses one gateway frame.
id Receiving link. frame Borrowed frame. now Non-decreasing time. Processing status.
reportCandidate
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reportCandidate(const corelib_candidate_t &candidate) noexceptReports a discovered candidate.
candidate Candidate value. Operation status.
completeDiscovery
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::completeDiscovery(LinkId id, UuidView token, Status result) noexceptCompletes profile discovery.
id Link identifier. token Round token. result Profile result. Correlation status.
completeAssignment
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::completeAssignment(uint32_t transaction, UuidView uuid, ControlStatus result) noexceptCompletes profile assignment.
transaction Transaction identifier. uuid Candidate UUID. result Control status. Commit status.
reportNodeLost
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::reportNodeLost(UuidView uuid) noexceptReports downstream node loss.
uuid Lost node UUID. Operation status.
acceptBootstrap
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) noexceptAccepts a local bootstrap assignment.
assignment Assignment. now Non-decreasing time. Validation status.
respond
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::respond(const TransactionId &request, Result result, ByteView data=ByteView()) noexceptResponds to a local request.
request Request identity. result Application result. data Optional payload. Operation status.
publish
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::publish(PayloadKind kind, uint32_t shareId, ByteView data) noexceptPublishes a local application payload.
kind Payload kind. shareId Schema identifier. data Encoded bytes. Operation status.
usage
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::usage(GatewayUsage &value) const noexceptReads gateway resource usage.
value Receives usage. Operation status.
limits
Status corelib::Gateway< MaximumMessageBytes, ReassemblySlots, OutboundFrames, PendingRequests, Links, Routes, Discoveries, Candidates, Assignments, ForwardingFrames, ControlBytes, ControlSlots >::limits(GatewayLimits &value) const noexceptReads gateway capacities and deadlines.
value Receives limits. Operation status.
