64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
/**
|
|
* Copyright (c) 2025 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "packet/packet.h"
|
|
#include "server/networked/networkedserverclient.h"
|
|
#include "packet/packetqueue.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;
|
|
packetqueue_t packetQueue;
|
|
|
|
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
|
|
);
|
|
|
|
/**
|
|
* Handles the main thread updating of this server client. This is where all
|
|
* the packets will be handled and processed.
|
|
*
|
|
* @param client Pointer to the server client structure.
|
|
*/
|
|
void serverClientUpdate(serverclient_t *client);
|
|
|
|
/**
|
|
* 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); |