Buffers
Bloques de memoria genéricos, reservados dinámicamente.
Funciones
Buffer* | buffer_create (...) |
Buffer* | buffer_with_data (...) |
Buffer | buffer_read (...) |
void | buffer_destroy (...) |
uint32_t | buffer_size (...) |
byte_t* | buffer_data (...) |
const byte_t* | buffer_const (...) |
void | buffer_write (...) |
Los objetos Buffer son, sencillamente, bloques de memoria reservados dinámicamente y almacenados en el Segmento Heap (Figura 1). Son útiles para compartir datos genéricos entre diferentes funciones o hilos. Para este último caso, deben estar protegidos por un Mutex si varias hebras concurrentes pudiesen acceder a él (no son thread-safe). Son de tamaño fijo. Una vez creados no se pueden re-dimensionar, aunque pueden ser re-escritos cuantas veces sea necesario.
- Utiliza buffer_create para crear un bloque de memoria dinámica.
- Utiliza buffer_destroy para liberar un bloque de memoria dinámica.
- Utiliza buffer_data para obtener un puntero al bloque de memoria.
- Utiliza buffer_read para leer desde un stream.
- Utiliza buffer_write para escribir en un stream.
buffer_create ()
Crea un nuevo búfer.
Buffer* buffer_create(const uint32_t size);
size | Tamaño del búfer en bytes. |
Retorna
El nuevo búfer.
buffer_with_data ()
Crea un nuevo búfer y lo inicializa.
Buffer* buffer_with_data(const byte_t *data, const uint32_t size);
data | Datos para inicializar el búfer. |
size | Tamaño del búfer en bytes. |
Retorna
El nuevo búfer.
buffer_read ()
Lee un búfer desde un stream.
Buffer buffer_read(Stream *stream);
stream | Un stream de lectura. |
Retorna
El búfer.
buffer_destroy ()
Destruye el búfer.
void buffer_destroy(Buffer **buffer);
buffer | El búfer. Será puesto a |
buffer_size ()
Obtiene el tamaño del búfer.
uint32_t buffer_size(const Buffer *buffer);
buffer | Búfer. |
Retorna
El tamaño del búfer en bytes.
buffer_data ()
Obtiene un puntero al contenido del búfer.
byte_t* buffer_data(Buffer *buffer);
buffer | Búfer. |
Retorna
Puntero al contenido del búfer que puede ser utilizado para leer o escribir.
buffer_const ()
Obtiene un puntero const al contenido del búfer.
const byte_t* buffer_const(const Buffer *buffer);
buffer | Búfer. |
Retorna
Puntero al contenido del búfer que puede ser utilizado solo para leer.
buffer_write ()
Escribe un búfer en un stream.
void buffer_write(Stream *stream, const Buffer *buffer);
stream | Un stream de escritura. |
buffer | El búfer. |