Add Cloth Config plugin management screen
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# Native ABI v1
|
||||
|
||||
Every native plugin is a Go `main` package built with `-buildmode=c-shared` and
|
||||
exports three C symbols:
|
||||
|
||||
```c
|
||||
int32_t gmb_abi_version(void);
|
||||
|
||||
int32_t gmb_call(
|
||||
int32_t operation,
|
||||
const uint8_t *input,
|
||||
uint64_t input_length,
|
||||
uint8_t **output,
|
||||
uint64_t *output_length
|
||||
);
|
||||
|
||||
void gmb_free(void *pointer);
|
||||
```
|
||||
|
||||
Plugin authors do not implement these symbols. Importing the Go SDK includes
|
||||
their native implementation in the final `c-shared` library.
|
||||
|
||||
`gmb_call` receives UTF-8 JSON and returns a buffer allocated by the plugin. The
|
||||
host copies the buffer and always returns it through `gmb_free`. A zero C status
|
||||
means the transport succeeded. Go callback errors and panics are represented in
|
||||
the JSON response rather than the C status.
|
||||
|
||||
## Operations
|
||||
|
||||
| Code | Name | Input |
|
||||
|---:|---|---|
|
||||
| 1 | metadata | empty |
|
||||
| 2 | init | `InitEvent` |
|
||||
| 3 | tick | `ServerSnapshot` |
|
||||
| 4 | chat | `ChatEvent` |
|
||||
| 5 | death | `DeathEvent` |
|
||||
| 6 | system call result | `SystemCallResult` |
|
||||
| 7 | deinit | `DeinitEvent` |
|
||||
|
||||
Every successful transport response uses this envelope:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"error": "",
|
||||
"stack": "",
|
||||
"data": null,
|
||||
"logs": [],
|
||||
"actions": [],
|
||||
"systemCalls": [],
|
||||
"snapshot": null
|
||||
}
|
||||
```
|
||||
|
||||
`status` is one of `ok`, `error`, or `panic`. The host disables a plugin after a
|
||||
panic. An ordinary handler error is logged but does not disable an already-running
|
||||
plugin.
|
||||
|
||||
All memory ownership stays on its allocating side. Java objects, Go pointers,
|
||||
and Go structs never cross the boundary. JSON is the v1 transport for clarity;
|
||||
the same ABI can carry a versioned binary codec in a later protocol revision.
|
||||
Reference in New Issue
Block a user