Add native GNS server bridge

This commit is contained in:
Nomads_Reach
2026-08-16 00:19:32 -04:00
parent 56c8984845
commit 2a05e3466b
5 changed files with 964 additions and 0 deletions
@@ -0,0 +1,88 @@
#pragma once
#include <stddef.h>
#include <stdint.h>
#if defined(_WIN32)
#if defined(CO_GNS_BRIDGE_BUILD)
#define CO_GNS_API __declspec(dllexport)
#else
#define CO_GNS_API __declspec(dllimport)
#endif
#else
#define CO_GNS_API __attribute__((visibility("default")))
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef void* co_gns_server_handle;
enum co_gns_event_type
{
CO_GNS_EVENT_NONE = 0,
CO_GNS_EVENT_CONNECTED = 1,
CO_GNS_EVENT_DISCONNECTED = 2,
CO_GNS_EVENT_MESSAGE = 3,
CO_GNS_EVENT_OVERSIZE_MESSAGE = 4
};
enum co_gns_delivery
{
CO_GNS_DELIVERY_UNRELIABLE_SEQUENCED = 0,
CO_GNS_DELIVERY_RELIABLE_ORDERED = 1
};
enum co_gns_send_result
{
CO_GNS_SEND_ERROR = -1,
CO_GNS_SEND_SENT = 0,
CO_GNS_SEND_DROPPED = 1,
CO_GNS_SEND_BACKPRESSURE = 2,
CO_GNS_SEND_NOT_CONNECTED = 3,
CO_GNS_SEND_TOO_LARGE = 4
};
typedef struct co_gns_event
{
uint32_t type;
uint32_t connection_id;
int32_t reason;
uint32_t payload_size;
char debug[128];
} co_gns_event;
CO_GNS_API int co_gns_server_create(
const char* bind_host,
uint16_t port,
co_gns_server_handle* out_handle,
char* error_buffer,
size_t error_buffer_size);
CO_GNS_API void co_gns_server_destroy(co_gns_server_handle handle);
CO_GNS_API uint16_t co_gns_server_local_port(co_gns_server_handle handle);
CO_GNS_API uint32_t co_gns_server_connection_count(co_gns_server_handle handle);
CO_GNS_API int co_gns_server_poll(
co_gns_server_handle handle,
co_gns_event* out_event,
void* payload_buffer,
uint32_t payload_capacity);
CO_GNS_API int co_gns_server_send(
co_gns_server_handle handle,
uint32_t connection_id,
const void* payload,
uint32_t payload_size,
uint32_t delivery);
CO_GNS_API int co_gns_server_disconnect(
co_gns_server_handle handle,
uint32_t connection_id,
int32_t reason,
const char* debug);
#ifdef __cplusplus
}
#endif