sc_loadout_v1_2.submit
Validate and copy 1..16 unique logical slots and bounded class names into one owner-scoped asynchronous job. Eight jobs total, one per plugin. Admission is not equip completion.
Signature
Section titled “Signature”sco_result (*)(sco_plugin *, const sc_loadout_request *, uint64_t *)Service and availability
Section titled “Service and availability”| Property | Value |
|---|---|
| Symbol | sc_loadout_v1_2.submit |
| Record ID | sc-loadout-v1-2-submit |
| Service | game.loadout |
| Table | sc_loadout_v1_2 |
| Version macro | SC_LOADOUT_VERSION_1_2 |
| Packed table version | 65538 |
| Since / availability | size >= 24; 1.2 |
| Complete member extent (x64 bytes) | 24 |
| Table size (x64 bytes) | 40 |
Parameters and buffers
Section titled “Parameters and buffers”sco_result (*submit)(sco_plugin* self, const sc_loadout_request* request, uint64_t* out_job);
Validate and copy 1..16 unique logical slots and bounded class names into one owner-scoped asynchronous job. Eight jobs total, one per plugin. Admission is not equip completion.
Results and failures
Section titled “Results and failures”OK on accepted submit, observed status or cancellation; BAD_ARG for malformed extent/input/self, TOO_MANY for retained-job capacity, NOT_FOUND for foreign or unknown id, UNAVAILABLE for missing verified provider or admission, FAILED for terminal backend fault.
Absent capability
Section titled “Absent capability”Query absent returns NOT_FOUND. Missing game.loadout.async refuses submit; table publication is not permission to mutate.
Ownership
Section titled “Ownership”Caller-owned full records; copied typed requests, owner-scoped process-unique job ids. One retained job per plugin, eight total. Local player only; no account inventory or XML.
Thread affinity
Section titled “Thread affinity”Game thread only; non-reentrant. No plugin callbacks.
Callback context
Section titled “Callback context”Tick-driven native work; no retained caller pointers or plugin callbacks.
Reentrancy
Section titled “Reentrancy”Recursive mutation and backend Start/Stop refused while a callback owns the provider.
Cleanup and cancellation
Section titled “Cleanup and cancellation”Owner unload and stop cancel jobs. Session/admission loss or 120000ms timeout fails pending work. No retry or rollback. Fault disables mutation until process restart and retains uncertain native resources.
Language mappings
Section titled “Language mappings”Status labels are copied verbatim from the catalogue: direct is native access; typed-wrapper is wrapper-backed; restricted is a subset/adaptation; unsupported means no supported route is established. No status implies universal safety.
| Language | Catalogue status | Source evidence / wrapper tokens |
|---|---|---|
| c | direct | include/sc_loadout.h(*submit) |
| cpp | typed-wrapper | include/scosdk/game/loadout.hppreturn async->submit(self_, &request, &job); |
| csharp | unsupported | docs/game/loadout.mdC# is unsupported for loadout 1.0 |
| lua | unsupported | docs/game/loadout.mdLua mutation is unsupported |
Examples
Section titled “Examples”None identified in the catalogue; this is not proof none can exist.
- tests/abi_game_loadout.c
- tests/game_contracts/loadout/consumer.c
- tests/game_contracts/loadout/routes.cpp
- tests/game_contracts/loadout/test_loadout.cpp
- tests/game_contracts/loadout/native.cpp
- tests/game_contracts/loadout/test_metadata.py
ABI pins prove layout, not semantic behavior or a live game session.