|
Nexus Embedded Platform 0.1.0
Statically assembled reusable embedded mechanisms
|
Caller-owned admission, borrow, settlement and stable cancellation. More...
#include "nexus/core/time.h"Go to the source code of this file.
Data Structures | |
| struct | nx_request_t |
| Caller-owned request metadata, without payload or callbacks. More... | |
| struct | nx_request_slot_t |
| Adapter-owned stable cancellation identity. More... | |
Enumerations | |
| enum | nx_request_state_t { NX_REQUEST_READY = 0 , NX_REQUEST_QUEUED , NX_REQUEST_ACTIVE , NX_REQUEST_DRAINING , NX_REQUEST_SETTLED , NX_REQUEST_QUARANTINED } |
| Request state; only READY and SETTLED have no provider borrow. More... | |
Functions | |
| void | nx_request_initialize (nx_request_t *request) |
| Initialize fresh unborrowed request storage. | |
| nx_result_t | nx_request_prepare (nx_request_t *request, nx_time_us_t deadline) |
| Prepare a READY or consumed SETTLED request. | |
| nx_request_state_t | nx_request_state (const nx_request_t *request) |
| Read request state with acquire ordering. | |
| 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_transition (nx_request_t *request, nx_request_state_t state) |
| Advance an already admitted request without readmission. | |
| 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_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_bind (nx_request_slot_t *slot, nx_request_t *request, uint64_t *epoch) |
| Bind a stable slot to a new request incarnation. | |
| 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_release (nx_request_slot_t *slot, uint64_t expected_epoch) |
| Drop a slot reference only after settlement and control drain. | |
Caller-owned admission, borrow, settlement and stable cancellation.
Definition in file request.h.
| enum nx_request_state_t |
| nx_result_t nx_request_admit | ( | nx_request_t * | request, |
| nx_request_state_t | state ) |
Establish the chain's unique admission and provider borrow.
| [in,out] | request | READY request; caller owns storage until SETTLED. |
| [in] | state | QUEUED for adapter or ACTIVE for direct provider. |
| void nx_request_initialize | ( | nx_request_t * | request | ) |
Initialize fresh unborrowed request storage.
| [out] | request | Fresh storage, not visible to a provider/observer. |
| nx_result_t nx_request_prepare | ( | nx_request_t * | request, |
| nx_time_us_t | deadline ) |
Prepare a READY or consumed SETTLED request.
| [in,out] | request | Storage with no remaining observers or adapter loans. |
| [in] | deadline | Absolute transfer deadline, including queue time. |
| 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.
| [in] | request | Live request storage with no concurrent reuse. |
| [out] | result | Final operation result. |
| [out] | transferred | Valid byte/sample count. |
| void nx_request_settle | ( | nx_request_t * | request, |
| nx_result_t | result, | ||
| size_t | transferred ) |
Release-publish SETTLED as the final provider access.
| [in,out] | request | Borrowed storage after all sources have drained. |
| [in] | result | Final transfer result, not admission status. |
| [in] | transferred | Valid transferred bytes/samples. |
| 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.
| [in,out] | slot | Zero-initialized, unbound adapter-owned slot. |
| [in] | request | Live storage to bind; binding itself is not admission. |
| [out] | epoch | Nonzero identity for later control commands. |
| nx_request_t * nx_request_slot_lookup | ( | const nx_request_slot_t * | slot, |
| uint64_t | expected_epoch ) |
Resolve cancellation using stable storage before dereference.
| [in] | slot | Stable slot protected by adapter synchronization. |
| [in] | expected_epoch | Incarnation named by the command. |
| 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.
| [in,out] | slot | Stable slot whose commands/observers have exited. |
| [in] | expected_epoch | Incarnation to release. |
| nx_request_state_t nx_request_state | ( | const nx_request_t * | request | ) |
Read request state with acquire ordering.
| [in] | request | Initialized storage kept alive by the caller. |
| nx_result_t nx_request_transition | ( | nx_request_t * | request, |
| nx_request_state_t | state ) |
Advance an already admitted request without readmission.
| [in,out] | request | Admitted request owned by the executor. |
| [in] | state | ACTIVE, DRAINING or QUARANTINED. |