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:
36
data.c
36
data.c
@@ -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;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user