From 6519b16e46b02a0353580832ddbfee39a9caac9f Mon Sep 17 00:00:00 2001 From: elvis Date: Wed, 16 Mar 2022 23:45:39 +0100 Subject: [PATCH] Added apiFile --- lib/threadpool/apiFile.c | 0 lib/threadpool/apiFile.h | 53 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 lib/threadpool/apiFile.c create mode 100644 lib/threadpool/apiFile.h diff --git a/lib/threadpool/apiFile.c b/lib/threadpool/apiFile.c new file mode 100644 index 0000000..e69de29 diff --git a/lib/threadpool/apiFile.h b/lib/threadpool/apiFile.h new file mode 100644 index 0000000..ac1c0a5 --- /dev/null +++ b/lib/threadpool/apiFile.h @@ -0,0 +1,53 @@ +#pragma once +#ifndef _API_FILE +#define _API_FILE + +#include +/* TODO: include lib di logging */ +/* TODO: finire tutte le descrizioni */ + +/** + * Apri o crea un nuovo file + * \param filepath: nome del file + * \param flags + * \param q: queue in cui inserire il file + * \param fd_c: + * \param logFileT: + */ +void openFile(char *filepath, int flags, queueT *q, long fd_c, logT *logFileT); + +// Leggi un file e invialo al client +void readFile(char *filepath, queueT *q, long fd_c, logT *logFileT); + +// Invia al client $n file qualsiasi dalla queue +void readNFiles(char *numStr, queueT *q, long fd_c, logT *logFileT); + +// Scrivi dati su un file giĆ  creato (append o overwrite) +void writeFile(char *filepath, size_t size, queueT *q, long fd_c, logT *logFileT, int append); + +// Acquisisci lock di un file +void lockFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); + +// Rilascia una Lock di un file +void unlockFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); + +// Chiudi un file +void closeFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); + +// Rimuovi un file +void removeFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); + + +// Funzione ausiliaria che invia un file al client +int sendFile(fileT *f, long fd_c, logT *logFileT); + +// Aggiunge una coppia client/file alla coda in attesa di ottenere una lock +int addWaiting(waitingT **waiting, char *file, int fd); + +// Ottiene il primo client in attesa su una lock di un determinato file +int removeFirstWaiting(waitingT **waiting, char *file); + +// Distrugge la lista d'attesa e ne libera la memoria +void clearWaiting(waitingT **waiting); + +#endif // _API_FILE