2022-03-21 01:51:45 +01:00
|
|
|
#pragma once
|
|
|
|
|
#ifndef _TAGLIALEGNA
|
|
|
|
|
#define _TAGLIALEGNA
|
|
|
|
|
|
2022-04-09 00:37:56 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <pthread.h>
|
|
|
|
|
|
2022-03-21 01:51:45 +01:00
|
|
|
#include <fileQueue.h>
|
|
|
|
|
|
|
|
|
|
typedef struct taglia_s {
|
|
|
|
|
FILE *file;
|
|
|
|
|
size_t max_files;
|
|
|
|
|
long max_size;
|
|
|
|
|
size_t cache_misses;
|
|
|
|
|
pthread_mutex_t m; // per sincronizzare le scritture al file
|
|
|
|
|
} taglia_t;
|
|
|
|
|
|
|
|
|
|
// crea una nuova istanza
|
|
|
|
|
// \param file: file su cui scrivere i dati
|
|
|
|
|
// \param n: numero di parametri opzionali
|
|
|
|
|
// parametri opzionali in questo ordine:
|
|
|
|
|
// max_files, max_size, cache_misses
|
|
|
|
|
// \return istanza creata, NULL se errore
|
|
|
|
|
taglia_t *taglia_init(char *file, int n, ...);
|
|
|
|
|
|
|
|
|
|
// elimina un'istanza deallocando e chiudendo le rispettive risorse
|
|
|
|
|
void taglia_del(taglia_t *taglia);
|
|
|
|
|
|
|
|
|
|
// scrive quello contenuto dentro a buf sul file
|
|
|
|
|
// \return numero di char scritti, -1 se errore
|
|
|
|
|
size_t taglia_write(taglia_t *taglia, char *buf);
|
|
|
|
|
|
|
|
|
|
// scrive il contenuto di buf sul file con ora associata
|
|
|
|
|
size_t taglia_log(taglia_t *taglia, char *buf);
|
|
|
|
|
|
|
|
|
|
// update delle statistiche
|
|
|
|
|
// \return 0 successo, -1 errore
|
|
|
|
|
int taglia_update(taglia_t *taglia, queueT *queue, int miss);
|
|
|
|
|
|
|
|
|
|
// print delle statistiche attuali su stream
|
|
|
|
|
int taglia_stats(taglia_t *taglia, FILE *stream);
|
|
|
|
|
|
|
|
|
|
#endif /* _TAGLIALEGNA */
|