// El servicio de conteo: cuántos bytes, palabras y líneas tiene lo recibido.
#ifndef WC_SERVICE_H
#define WC_SERVICE_H

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

struct wc_counts {
    uint64_t bytes;
    uint64_t words;
    uint64_t lines;
    bool in_word;  // ¿el pedazo anterior terminó a la mitad de una palabra?
};

// Agrega un pedazo al conteo. Guarda estado porque una palabra puede quedar
// partida entre dos recv.
void wc_update(struct wc_counts *counts, const char *buf, size_t n);

// Atiende a un cliente: lee hasta el fin del stream y responde con una línea.
// Devuelve 0, o -1 si hubo un error de red. No cierra conn.
int wc_serve_client(int conn);

#endif
