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;
|
typedef struct Buffer Buffer;
|
||||||
struct 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
|
// Contient les données du tampon, c'est-à-dire
|
||||||
// les données en attente de vidage dans le fichier
|
// les données en attente de vidage dans le fichier
|
||||||
char data;
|
char data;
|
||||||
|
|
||||||
// Nombre de bits utilisés dans le tampon. Si ce
|
// Nombre de bits utilisés dans le tampon. Si ce
|
||||||
// nombre vaut 8, le tampon est plein
|
// nombre vaut 8, le tampon est plein
|
||||||
int used_bits;
|
size_t used_bits;
|
||||||
|
|
||||||
// Fichier dans lequel le tampon est vidé à l'appel
|
// Fichier dans lequel le tampon est vidé à l'appel
|
||||||
// de `flushBuffer` ou au débordement
|
// de `flushBuffer` ou au débordement
|
||||||
|
@ -31,7 +34,12 @@ Buffer createBuffer(FILE*);
|
||||||
* Pousse le bit donné dans le tampon passé.
|
* Pousse le bit donné dans le tampon passé.
|
||||||
* Si le tampon déborde, le vide dans le fichier lié
|
* 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
|
* Vide le tampon dans son fichier et le réinitialise
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
Buffer createBuffer(FILE* file) {
|
Buffer createBuffer(FILE* file) {
|
||||||
Buffer buffer = {
|
Buffer buffer = {
|
||||||
|
.flushed_bytes = 0,
|
||||||
.data = 0,
|
.data = 0,
|
||||||
.used_bits = 0,
|
.used_bits = 0,
|
||||||
.linked_file = file
|
.linked_file = file
|
||||||
|
@ -13,6 +14,10 @@ Buffer createBuffer(FILE* file) {
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t getFlushedBytes(Buffer* buffer) {
|
||||||
|
return buffer->flushed_bytes;
|
||||||
|
}
|
||||||
|
|
||||||
void flushBuffer(Buffer* buffer) {
|
void flushBuffer(Buffer* buffer) {
|
||||||
// FIXME: gérer les erreurs d'écriture
|
// FIXME: gérer les erreurs d'écriture
|
||||||
|
|
||||||
|
@ -22,9 +27,10 @@ void flushBuffer(Buffer* buffer) {
|
||||||
|
|
||||||
buffer->data = 0;
|
buffer->data = 0;
|
||||||
buffer->used_bits = 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
|
// Si le tampon déborde, écriture dans le fichier
|
||||||
if (buffer->used_bits == 8) {
|
if (buffer->used_bits == 8) {
|
||||||
flushBuffer(buffer);
|
flushBuffer(buffer);
|
||||||
|
|
Loading…
Reference in New Issue