Files
@ 8296efe1f4dd
Branch filter:
Location: CSY/reowolf/reowolf.h
8296efe1f4dd
4.8 KiB
text/x-chdr
cbindgen fix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /* CBindgen generated */
#ifndef REOWOLF_HEADER_DEFINED
#define REOWOLF_HEADER_DEFINED
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
typedef enum {
Active,
Passive,
} EndpointPolarity;
typedef enum {
Putter,
Getter,
} Polarity;
typedef struct Arc_ProtocolDescription Arc_ProtocolDescription;
typedef struct Connector Connector;
typedef int32_t ErrorCode;
typedef uint32_t ConnectorId;
typedef uint32_t PortSuffix;
typedef struct {
ConnectorId connector_id;
PortSuffix u32_suffix;
} PortId;
/**
* Given
* - an initialized connector in setup or connecting state,
* - a string slice for the component's identifier in the connector's configured protocol description,
* - a set of ports (represented as a slice; duplicates are ignored) in the native component's interface,
* the connector creates a new (internal) protocol component C, such that the set of native ports are moved to C.
* Usable in {setup, communication} states.
*/
ErrorCode connector_add_component(Connector *connector,
const uint8_t *ident_ptr,
uintptr_t ident_len,
const PortId *ports_ptr,
uintptr_t ports_len);
/**
* Given
* - an initialized connector in setup or connecting state,
* - a utf-8 encoded socket address,
* - the logical polarity of P,
* - the "physical" polarity in {Active, Passive} of the endpoint through which P's peer will be discovered,
* returns P, a port newly added to the native interface.
*/
ErrorCode connector_add_net_port(Connector *connector,
PortId *port,
const uint8_t *addr_str_ptr,
uintptr_t addr_str_len,
Polarity port_polarity,
EndpointPolarity endpoint_polarity);
/**
* Given an initialized connector in setup or connecting state,
* - Creates a new directed port pair with logical channel putter->getter,
* - adds the ports to the native component's interface,
* - and returns them using the given out pointers.
* Usable in {setup, communication} states.
*/
void connector_add_port_pair(Connector *connector, PortId *out_putter, PortId *out_getter);
/**
* Connects this connector to the distributed system of connectors reachable through endpoints,
* Usable in setup state, and changes the state to communication.
*/
ErrorCode connector_connect(Connector *connector, int64_t timeout_millis);
/**
* Destroys the given a pointer to the connector on the heap, freeing its resources.
* Usable in {setup, communication} states.
*/
void connector_destroy(Connector *connector);
ErrorCode connector_get(Connector *connector, PortId port);
const uint8_t *connector_gotten_bytes(Connector *connector, PortId port, uintptr_t *out_len);
/**
* Initializes `out` with a new connector using the given protocol description as its configuration.
* The connector uses the given (internal) connector ID.
*/
Connector *connector_new(const Arc_ProtocolDescription *pd);
Connector *connector_new_logging(const Arc_ProtocolDescription *pd,
const uint8_t *path_ptr,
uintptr_t path_len);
intptr_t connector_next_batch(Connector *connector);
void connector_print_debug(Connector *connector);
/**
* Convenience function combining the functionalities of
* "payload_new" with "connector_put_payload".
*/
ErrorCode connector_put_bytes(Connector *connector,
PortId port,
const uint8_t *bytes_ptr,
uintptr_t bytes_len);
intptr_t connector_sync(Connector *connector, int64_t timeout_millis);
/**
* Given an initialized protocol description, initializes `out` with a clone which can be independently created or destroyed.
*/
Arc_ProtocolDescription *protocol_description_clone(const Arc_ProtocolDescription *pd);
/**
* Destroys the given initialized protocol description and frees its resources.
*/
void protocol_description_destroy(Arc_ProtocolDescription *pd);
/**
* Parses the utf8-encoded string slice to initialize a new protocol description object.
* - On success, initializes `out` and returns 0
* - On failure, stores an error string (see `reowolf_error_peek`) and returns -1
*/
Arc_ProtocolDescription *protocol_description_parse(const uint8_t *pdl, uintptr_t pdl_len);
/**
* Returns length (via out pointer) and pointer (via return value) of the last Reowolf error.
* - pointer is NULL iff there was no last error
* - data at pointer is null-delimited
* - len does NOT include the length of the null-delimiter
* If len is NULL, it will not written to.
*/
const uint8_t *reowolf_error_peek(uintptr_t *len);
#endif /* REOWOLF_HEADER_DEFINED */
|