Added multithreaded server02 for handling query and insert requests, utility functions for byte operations in data.c, updated tests, and extended project configuration.

This commit is contained in:
2025-07-28 23:16:05 +01:00
parent 84339df5fa
commit bd3d3d6da7
8 changed files with 288 additions and 13 deletions

36
data.c
View File

@@ -10,9 +10,7 @@
SOCKET get_listen_socket() {
WSADATA WSAData;
SOCKET client;
SOCKADDR_IN serverAddr, clientAddr;
SOCKADDR_IN serverAddr;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET server = socket(AF_INET, SOCK_STREAM, 0);
@@ -89,13 +87,27 @@ char *char_array_get_until_char(char_array_t *array, char c) {
char *ret = malloc(idx+1);
memcpy(ret, array->data, idx);
ret[idx] = '\0';
char *temp = calloc(array->capacity, sizeof(char));
size_t new_i = 0;
for (size_t i = idx+1; i < array->size; i++) {
temp[new_i++] = array->data[i];
}
free(array->data);
array->data = temp;
array->size = new_i;
char_array_shift_bytes(array, idx+1);
return ret;
};
};
char *char_array_get_bytes(char_array_t *array, size_t length) {
if (length < array->size) {
return NULL;
}
char *ret = malloc(length);
memcpy(ret, array->data, length);
char_array_shift_bytes(array, length);
return ret;
}
void char_array_shift_bytes(char_array_t *array, size_t length) {
if (length >= array->size) {
array->size = 0;
return;
}
memmove(array->data, array->data + length, array->size - length);
array->size -= length;
}