msgba/src/client_connection_data.c

49 lines
1.7 KiB
C
Raw Permalink Normal View History

2023-03-13 00:06:19 +01:00
#include <pthread.h>
2023-03-10 23:37:11 +01:00
#include <msgba/core_controller.h>
#include <msgba/client_connection_data.h>
#include <msgba/packet/save_request.h>
2023-03-10 23:37:11 +01:00
struct msClientConnectionData *
msClientConnectionDataNew(size_t numberOfThread, int clientFd) {
struct msClientConnectionData *data = malloc (sizeof *data);
data->numberOfThread = numberOfThread;
data->clientFd = clientFd;
data->coreController = NULL;
2023-03-13 00:06:19 +01:00
data->mutexSendPacket = malloc(sizeof *data->mutexSendPacket);
2023-03-25 15:21:27 +01:00
data->mutexPressKey = malloc(sizeof *data->mutexPressKey);
data->mutexSaveRequests = malloc(sizeof *data->mutexSaveRequests);
data->saveRequests = NULL;
data->saveRequestsLen = 0;
2023-04-02 17:27:49 +02:00
data->numberFrame = 0;
data->lastFrameDate = calloc(sizeof *data->lastFrameDate, 1);
2023-03-13 00:06:19 +01:00
pthread_mutex_init(data->mutexSendPacket, NULL);
2023-03-25 15:21:27 +01:00
pthread_mutex_init(data->mutexPressKey, NULL);
pthread_mutex_init(data->mutexSaveRequests, NULL);
2023-03-10 23:37:11 +01:00
return data;
}
void
msClientConnectionDataDestroy(struct msClientConnectionData **data) {
if ((*data)->coreController) {
msCoreControllerDestroy(&(*data)->coreController);
}
2023-03-25 15:21:27 +01:00
pthread_mutex_destroy((*data)->mutexSendPacket);
pthread_mutex_destroy((*data)->mutexPressKey);
pthread_mutex_destroy((*data)->mutexSaveRequests);
2023-03-13 00:06:19 +01:00
free((*data)->mutexSendPacket);
2023-03-25 15:21:27 +01:00
free((*data)->mutexPressKey);
free((*data)->mutexSaveRequests);
if ((*data)->saveRequests) {
for (size_t i = 0; i<(*data)->saveRequestsLen; i++) {
msPacketSaveRequestDataDestroy(&(*data)->saveRequests[i]);
}
free((*data)->saveRequests);
}
2023-03-13 00:06:19 +01:00
(*data)->mutexSendPacket = NULL;
2023-03-25 15:21:27 +01:00
(*data)->mutexPressKey = NULL;
(*data)->mutexSaveRequests = NULL;
2023-03-10 23:37:11 +01:00
free(*data);
*data = NULL;
}