Ajout d'un compteur d'octets écrits dans les tampons
This commit is contained in:
parent
f8f9ae667e
commit
bd0c0afd89
12
inc/buffer.h
12
inc/buffer.h
|
@ -9,13 +9,16 @@
|
|||
*/
|
||||
typedef struct Buffer Buffer;
|
||||
struct Buffer {
|
||||
// Compte le nombre d'octets écrits dans le fichier
|
||||
size_t flushed_bytes;
|
||||
|
||||
// Contient les données du tampon, c'est-à-dire
|
||||
// les données en attente de vidage dans le fichier
|
||||
char data;
|
||||
|
||||
// Nombre de bits utilisés dans le tampon. Si ce
|
||||
// nombre vaut 8, le tampon est plein
|
||||
int used_bits;
|
||||
size_t used_bits;
|
||||
|
||||
// Fichier dans lequel le tampon est vidé à l'appel
|
||||
// de `flushBuffer` ou au débordement
|
||||
|
@ -31,7 +34,12 @@ Buffer createBuffer(FILE*);
|
|||
* Pousse le bit donné dans le tampon passé.
|
||||
* Si le tampon déborde, le vide dans le fichier lié
|
||||
*/
|
||||
void pushToBuffer(int bit, Buffer*);
|
||||
void pushToBuffer(char bit, Buffer*);
|
||||
|
||||
/**
|
||||
* Récupère le nombre de fois qu'on a écrit un octet dans le fichier lié
|
||||
*/
|
||||
size_t getFlushedBytes(Buffer*);
|
||||
|
||||
/**
|
||||
* Vide le tampon dans son fichier et le réinitialise
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
Buffer createBuffer(FILE* file) {
|
||||
Buffer buffer = {
|
||||
.flushed_bytes = 0,
|
||||
.data = 0,
|
||||
.used_bits = 0,
|
||||
.linked_file = file
|
||||
|
@ -13,6 +14,10 @@ Buffer createBuffer(FILE* file) {
|
|||
return buffer;
|
||||
}
|
||||
|
||||
size_t getFlushedBytes(Buffer* buffer) {
|
||||
return buffer->flushed_bytes;
|
||||
}
|
||||
|
||||
void flushBuffer(Buffer* buffer) {
|
||||
// FIXME: gérer les erreurs d'écriture
|
||||
|
||||
|
@ -22,9 +27,10 @@ void flushBuffer(Buffer* buffer) {
|
|||
|
||||
buffer->data = 0;
|
||||
buffer->used_bits = 0;
|
||||
buffer->flushed_bytes += 1;
|
||||
}
|
||||
|
||||
void pushToBuffer(int bit, Buffer* buffer) {
|
||||
void pushToBuffer(char bit, Buffer* buffer) {
|
||||
// Si le tampon déborde, écriture dans le fichier
|
||||
if (buffer->used_bits == 8) {
|
||||
flushBuffer(buffer);
|
||||
|
|
Loading…
Reference in New Issue