Nexus Embedded Platform 0.1.0
Statically assembled reusable embedded mechanisms
Loading...
Searching...
No Matches
request.h
Go to the documentation of this file.
1
9#ifndef NEXUS_REQUEST_H
10#define NEXUS_REQUEST_H
11
12#include "nexus/core/time.h"
13#ifdef __cplusplus
14extern "C" {
15#endif
28
44
53typedef struct {
55 uint64_t epoch;
57
119 nx_request_state_t state);
135 size_t transferred);
149 size_t* transferred);
164 uint64_t* epoch);
177 uint64_t expected_epoch);
189 uint64_t expected_epoch);
190#ifdef __cplusplus
191}
192#endif
193
194#endif
void nx_request_initialize(nx_request_t *request)
Initialize fresh unborrowed request storage.
nx_request_state_t
Request state; only READY and SETTLED have no provider borrow.
Definition request.h:20
@ NX_REQUEST_ACTIVE
Definition request.h:23
@ NX_REQUEST_SETTLED
Definition request.h:25
@ NX_REQUEST_QUARANTINED
Definition request.h:26
@ NX_REQUEST_QUEUED
Definition request.h:22
@ NX_REQUEST_READY
Definition request.h:21
@ NX_REQUEST_DRAINING
Definition request.h:24
nx_request_t * nx_request_slot_lookup(const nx_request_slot_t *slot, uint64_t expected_epoch)
Resolve cancellation using stable storage before dereference.
nx_result_t nx_request_slot_bind(nx_request_slot_t *slot, nx_request_t *request, uint64_t *epoch)
Bind a stable slot to a new request incarnation.
void nx_request_settle(nx_request_t *request, nx_result_t result, size_t transferred)
Release-publish SETTLED as the final provider access.
nx_result_t nx_request_transition(nx_request_t *request, nx_request_state_t state)
Advance an already admitted request without readmission.
nx_request_state_t nx_request_state(const nx_request_t *request)
Read request state with acquire ordering.
nx_result_t nx_request_prepare(nx_request_t *request, nx_time_us_t deadline)
Prepare a READY or consumed SETTLED request.
nx_result_t nx_request_admit(nx_request_t *request, nx_request_state_t state)
Establish the chain's unique admission and provider borrow.
nx_result_t nx_request_result(const nx_request_t *request, nx_result_t *result, size_t *transferred)
Copy the unique settled result after acquire publication.
nx_result_t nx_request_slot_release(nx_request_slot_t *slot, uint64_t expected_epoch)
Drop a slot reference only after settlement and control drain.
nx_result_t
Operation result; success at submission means admission only.
Definition status.h:21
Adapter-owned stable cancellation identity.
Definition request.h:53
nx_request_t * request
Definition request.h:54
uint64_t epoch
Definition request.h:55
Caller-owned request metadata, without payload or callbacks.
Definition request.h:38
nx_time_us_t deadline
Definition request.h:42
size_t transferred
Definition request.h:41
nx_result_t result
Definition request.h:40
uint32_t state
Definition request.h:39
Absolute monotonic microsecond deadlines and wrap extension.
uint64_t nx_time_us_t
Microseconds in one boot/clock domain; no wall-clock semantics.
Definition time.h:20