/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "server/packet/packet.h" #include "server/networked/networkedserverclient.h" typedef struct server_s server_t; typedef enum { SERVER_CLIENT_STATE_DISCONNECTED, SERVER_CLIENT_STATE_ACCEPTING, SERVER_CLIENT_STATE_CONNECTED, SERVER_CLIENT_STATE_DISCONNECTING, } serverclientstate_t; typedef struct serverclientaccept_s { server_t *server; union { networkedserverclientaccept_t networked; }; } serverclientaccept_t; typedef struct serverclient_s { server_t *server; serverclientstate_t state; union { networkedserverclient_t networked; }; } serverclient_t; /** * Accepts an incoming connection from a server client. * * @param client Pointer to the server client structure. * @param accept Accept structure containing client information. * @return Error code indicating success or failure. */ errorret_t serverClientAccept( serverclient_t *client, const serverclientaccept_t accept ); /** * Closes the connection to a server client. Waits for the thread to finish. * * @param client Pointer to the server client structure. */ void serverClientClose(serverclient_t *client);