diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt
new file mode 100644
index 0000000..e2217ee
--- /dev/null
+++ b/src/client/CMakeLists.txt
@@ -0,0 +1,12 @@
+# Copyright (c) 2025 Dominic Masters
+#
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# Sources
+target_sources(${DUSK_TARGET_NAME}
+ PRIVATE
+ client.c
+)
+
+# Subdirs
\ No newline at end of file
diff --git a/src/client/client.c b/src/client/client.c
new file mode 100644
index 0000000..e69de29
diff --git a/src/client/client.h b/src/client/client.h
new file mode 100644
index 0000000..35a89f9
--- /dev/null
+++ b/src/client/client.h
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) 2025 Dominic Masters
+ *
+ * This software is released under the MIT License.
+ * https://opensource.org/licenses/MIT
+ */
+
+#pragma once
diff --git a/src/server/networked/CMakeLists.txt b/src/server/networked/CMakeLists.txt
index 0825cb8..3d440ea 100644
--- a/src/server/networked/CMakeLists.txt
+++ b/src/server/networked/CMakeLists.txt
@@ -6,6 +6,6 @@
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
- networkedclient.c
+ networkedserverclient.c
networkedserver.c
)
\ No newline at end of file
diff --git a/src/server/networked/networkedserver.c b/src/server/networked/networkedserver.c
index a7d6f44..f75861f 100644
--- a/src/server/networked/networkedserver.c
+++ b/src/server/networked/networkedserver.c
@@ -183,7 +183,7 @@ void * networkedServerThread(void *arg) {
.state = SERVER_CLIENT_STATE_ACCEPTING
};
packetDisconnectCreate(&packet, PACKET_DISCONNECT_REASON_SERVER_FULL);
- networkedClientWritePacket(&tempClient, &packet);
+ networkedServerClientWritePacket(&tempClient, &packet);
if(errorCheck()) errorPrint();
consolePrint("Client %i disconnected: Server full.");
close(clientSocket);
diff --git a/src/server/networked/networkedclient.c b/src/server/networked/networkedserverclient.c
similarity index 82%
rename from src/server/networked/networkedclient.c
rename to src/server/networked/networkedserverclient.c
index 230ba75..7dea028 100644
--- a/src/server/networked/networkedclient.c
+++ b/src/server/networked/networkedserverclient.c
@@ -11,7 +11,7 @@
#include "console/console.h"
#include <sys/socket.h>
-errorret_t networkedClientAccept(
+errorret_t networkedServerClientAccept(
serverclient_t *client,
const serverclientaccept_t accept
) {
@@ -33,7 +33,7 @@ errorret_t networkedClientAccept(
int32_t ret = pthread_create(
&client->networked.thread,
NULL,
- networkedClientThread,
+ networkedServerClientThread,
client
);
if(ret != 0) {
@@ -49,14 +49,14 @@ errorret_t networkedClientAccept(
&client->networked.timeout,
sizeof(client->networked.timeout)
) < 0) {
- networkedClientCloseOnThread(client, "Failed to set socket timeout");
+ networkedServerClientCloseOnThread(client, "Failed to set socket timeout");
return error("Failed to set socket timeout");
}
return ERROR_OK;
}
-void networkedClientClose(serverclient_t *client) {
+void networkedServerClientClose(serverclient_t *client) {
assertIsMainThread("Server client close must be on main thread.");
assertNotNull(client, "Client is NULL");
assertTrue(
@@ -88,7 +88,7 @@ void networkedClientClose(serverclient_t *client) {
consolePrint("Client %d disconnected.", client->networked.socket);
}
-void networkedClientCloseOnThread(
+void networkedServerClientCloseOnThread(
serverclient_t *client,
const char_t *reason
) {
@@ -112,7 +112,7 @@ void networkedClientCloseOnThread(
pthread_exit(NULL);
}
-ssize_t networkedClientRead(
+ssize_t networkedServerClientRead(
serverclient_t * client,
uint8_t *buffer,
const size_t len
@@ -136,7 +136,7 @@ ssize_t networkedClientRead(
return recv(client->networked.socket, buffer, len, 0);
}
-errorret_t networkedClientWrite(
+errorret_t networkedServerClientWrite(
serverclient_t * client,
const uint8_t *data,
const size_t len
@@ -158,7 +158,7 @@ errorret_t networkedClientWrite(
return ERROR_OK;
}
-errorret_t networkedClientWritePacket(
+errorret_t networkedServerClientWritePacket(
serverclient_t * client,
const packet_t *packet
) {
@@ -172,10 +172,10 @@ errorret_t networkedClientWritePacket(
size_t fullSize = sizeof(packet_t) - sizeof(packet->data) + packet->length;
assertTrue(fullSize <= sizeof(packet_t), "Packet size is too large (2)");
- return networkedClientWrite(client, (const uint8_t *)packet, fullSize);
+ return networkedServerClientWrite(client, (const uint8_t *)packet, fullSize);
}
-void * networkedClientThread(void *arg) {
+void * networkedServerClientThread(void *arg) {
assertNotNull(arg, "Client is NULL");
assertNotMainThread("Client thread must not be main thread");
@@ -199,37 +199,37 @@ void * networkedClientThread(void *arg) {
// the server version.
{
const char_t *expecting = "DUSK|"DUSK_VERSION;
- read = networkedClientRead(client, buffer, sizeof(buffer));
+ read = networkedServerClientRead(client, buffer, sizeof(buffer));
if(read <= 0) {
packetDisconnectCreate(&packet, PACKET_DISCONNECT_REASON_INVALID_VERSION);
- err = networkedClientWritePacket(client, &packet);
- networkedClientCloseOnThread(client, "Failed to receive version");
+ err = networkedServerClientWritePacket(client, &packet);
+ networkedServerClientCloseOnThread(client, "Failed to receive version");
return NULL;
}
buffer[read] = '\0'; // Null-terminate the string
if(strncmp(buffer, expecting, strlen(expecting)) != 0) {
packetDisconnectCreate(&packet, PACKET_DISCONNECT_REASON_INVALID_VERSION);
- err = networkedClientWritePacket(client, &packet);
- networkedClientCloseOnThread(client, "Invalid version");
+ err = networkedServerClientWritePacket(client, &packet);
+ networkedServerClientCloseOnThread(client, "Invalid version");
return NULL;
}
}
// Send DUSK back!
packetWelcomeCreate(&packet);
- err = networkedClientWritePacket(client, &packet);
+ err = networkedServerClientWritePacket(client, &packet);
if(err != ERROR_OK) {
- networkedClientCloseOnThread(client, "Failed to send welcome message");
+ networkedServerClientCloseOnThread(client, "Failed to send welcome message");
return NULL;
}
client->state = SERVER_CLIENT_STATE_CONNECTED;
while(client->state == SERVER_CLIENT_STATE_CONNECTED) {
- read = networkedClientRead(client, buffer, sizeof(buffer));
+ read = networkedServerClientRead(client, buffer, sizeof(buffer));
if(read <= 0) {
- networkedClientCloseOnThread(client, "Failed to receive data");
+ networkedServerClientCloseOnThread(client, "Failed to receive data");
break;
}
@@ -238,7 +238,7 @@ void * networkedClientThread(void *arg) {
if(SERVER.state != SERVER_STATE_RUNNING) {
- networkedClientCloseOnThread(client, "Server is shutting down");
+ networkedServerClientCloseOnThread(client, "Server is shutting down");
break;
}
}
@@ -247,7 +247,7 @@ void * networkedClientThread(void *arg) {
&packet,
PACKET_DISCONNECT_REASON_SERVER_SHUTDOWN
);
- networkedClientWritePacket(client, &packet);
+ networkedServerClientWritePacket(client, &packet);
if(errorCheck()) errorPrint();
client->state = SERVER_CLIENT_STATE_DISCONNECTED;
diff --git a/src/server/networked/networkedclient.h b/src/server/networked/networkedserverclient.h
similarity index 74%
rename from src/server/networked/networkedclient.h
rename to src/server/networked/networkedserverclient.h
index 6f5a896..d2a85ce 100644
--- a/src/server/networked/networkedclient.h
+++ b/src/server/networked/networkedserverclient.h
@@ -13,40 +13,40 @@ typedef struct serverclientaccept_s serverclientaccept_t;
typedef struct {
int32_t socket;
-} networkedclientaccept_t;
+} networkedserverclientaccept_t;
typedef struct {
int32_t socket;
pthread_t thread;
struct timeval timeout;
-} networkedclient_t;
+} networkedserverclient_t;
/**
- * Accepts an incoming connection from a networked client.
+ * Accepts an incoming connection from a networked 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 networkedClientAccept(
+errorret_t networkedServerClientAccept(
serverclient_t *client,
const serverclientaccept_t accept
);
/**
- * Closes the connection to a networked client. Waits for the thread to finish.
+ * Closes the connection to a networked server client. Waits for the thread to finish.
*
* @param client Pointer to the server client structure.
*/
-void networkedClientClose(serverclient_t *client);
+void networkedServerClientClose(serverclient_t *client);
/**
- * Closes the connection to a networked client on the thread.
+ * Closes the connection to a networked server client on the thread.
*
* @param client Pointer to the server client structure.
* @param reason Reason for closing the connection.
*/
-void networkedClientCloseOnThread(
+void networkedServerClientCloseOnThread(
serverclient_t *client,
const char_t *reason
);
@@ -59,7 +59,7 @@ void networkedClientCloseOnThread(
* @param len Max length of the buffer.
* @return Number of bytes received. 0 or less indicates an error.
*/
-ssize_t networkedClientRead(
+ssize_t networkedServerClientRead(
serverclient_t * client,
uint8_t *buffer,
const size_t len
@@ -73,7 +73,7 @@ ssize_t networkedClientRead(
* @param len Length of the data to send.
* @return Error code indicating success or failure.
*/
-errorret_t networkedClientWrite(
+errorret_t networkedServerClientWrite(
serverclient_t * client,
const uint8_t *data,
const size_t len
@@ -86,15 +86,15 @@ errorret_t networkedClientWrite(
* @param packet Pointer to the packet to send.
* @return Error code indicating success or failure.
*/
-errorret_t networkedClientWritePacket(
+errorret_t networkedServerClientWritePacket(
serverclient_t * client,
const packet_t *packet
);
/**
- * Thread function for handling a networked client.
+ * Thread function for handling a networked server client.
*
* @param arg Pointer to the server client structure.
* @return NULL.
*/
-void * networkedClientThread(void *arg);
\ No newline at end of file
+void * networkedServerClientThread(void *arg);
\ No newline at end of file
diff --git a/src/server/server.h b/src/server/server.h
index 8d77bd9..13395ab 100644
--- a/src/server/server.h
+++ b/src/server/server.h
@@ -9,7 +9,7 @@
#include "serverclient.h"
#include "server/networked/networkedserver.h"
-#define SERVER_MAX_CLIENTS 1
+#define SERVER_MAX_CLIENTS 32
typedef enum {
SERVER_STATE_STOPPED,
diff --git a/src/server/serverclient.c b/src/server/serverclient.c
index 5ebcb5e..9f54212 100644
--- a/src/server/serverclient.c
+++ b/src/server/serverclient.c
@@ -22,8 +22,7 @@ errorret_t serverClientAccept(
switch(accept.server->type) {
case SERVER_TYPE_NETWORKED:
- return networkedClientAccept(client, accept);
- break;
+ return networkedServerClientAccept(client, accept);
default:
assertUnreachable("Unknown server type");
@@ -37,8 +36,9 @@ void serverClientClose(serverclient_t *client) {
switch(client->server->type) {
case SERVER_TYPE_NETWORKED:
- networkedClientClose(client);
+ networkedServerClientClose(client);
break;
+
default:
assertUnreachable("Unknown server type");
}
diff --git a/src/server/serverclient.h b/src/server/serverclient.h
index 1e2130e..bacad8f 100644
--- a/src/server/serverclient.h
+++ b/src/server/serverclient.h
@@ -7,7 +7,7 @@
#pragma once
#include "server/packet/packet.h"
-#include "server/networked/networkedclient.h"
+#include "server/networked/networkedserverclient.h"
typedef struct server_s server_t;
@@ -21,7 +21,7 @@ typedef enum {
typedef struct serverclientaccept_s {
server_t *server;
union {
- networkedclientaccept_t networked;
+ networkedserverclientaccept_t networked;
};
} serverclientaccept_t;
@@ -29,7 +29,7 @@ typedef struct serverclient_s {
server_t *server;
serverclientstate_t state;
union {
- networkedclient_t networked;
+ networkedserverclient_t networked;
};
} serverclient_t;