libfetch 0.0.0
A lightweight asynchronous HTTP/1.1 client library implementing a subset of the WHATWG Fetch API.
Loading...
Searching...
No Matches
stream.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  fetch_stream_chunk_t
 
struct  stream_buffer_t
 
struct  fetch_readable_stream_controller
 

Typedefs

typedef struct fetch_readable_stream fetch_readable_stream_t
 
typedef struct fetch_writable_stream fetch_writable_stream_t
 
typedef struct fetch_transform_stream fetch_transform_stream_t
 
typedef struct fetch_stream_reader fetch_stream_reader_t
 
typedef struct fetch_stream_writer fetch_stream_writer_t
 
typedef struct fetch_readable_stream_controller fetch_readable_stream_controller_t
 
typedef void(* fetch_readable_stream_start_fn) (fetch_readable_stream_controller_t *controller, void *userdata)
 

Enumerations

enum  fetch_stream_result_t { FETCH_STREAM_OK = 0 , FETCH_STREAM_ERROR = 1 }
 
enum  fetch_stream_state_t { FETCH_STREAM_STATE_READABLE = 0 , FETCH_STREAM_STATE_CLOSED = 1 , FETCH_STREAM_STATE_ERRORED = 2 }
 

Functions

fetch_stream_result_t fetch_readable_stream_controller_enqueue (fetch_readable_stream_controller_t *controller, const void *value, size_t size)
 
void fetch_readable_stream_controller_close (fetch_readable_stream_controller_t *controller)
 
void fetch_readable_stream_controller_error (fetch_readable_stream_controller_t *controller, const char *error)
 
fetch_readable_stream_tfetch_readable_stream_new (fetch_readable_stream_start_fn start, void *userdata)
 
void fetch_readable_stream_free (fetch_readable_stream_t *stream)
 
bool fetch_readable_stream_locked (const fetch_readable_stream_t *stream)
 
fetch_stream_reader_tfetch_readable_stream_get_reader (fetch_readable_stream_t *stream)
 
void fetch_readable_stream_cancel (fetch_readable_stream_t *stream, const char *reason)
 
fetch_stream_result_t fetch_readable_stream_pipe_to (fetch_readable_stream_t *readable, fetch_writable_stream_t *writable)
 
fetch_readable_stream_tfetch_readable_stream_pipe_through (fetch_readable_stream_t *readable, fetch_transform_stream_t *transform)
 
fetch_readable_stream_tfetch_readable_stream_tee (fetch_readable_stream_t *stream)
 
fetch_writable_stream_tfetch_writable_stream_new (void)
 
void fetch_writable_stream_free (fetch_writable_stream_t *stream)
 
bool fetch_writable_stream_locked (const fetch_writable_stream_t *stream)
 
fetch_stream_writer_tfetch_writable_stream_get_writer (fetch_writable_stream_t *stream)
 
fetch_stream_result_t fetch_writable_stream_abort (fetch_writable_stream_t *stream, const char *reason)
 
fetch_stream_result_t fetch_writable_stream_close (fetch_writable_stream_t *stream)
 
fetch_transform_stream_tfetch_transform_stream_new (void)
 
void fetch_transform_stream_free (fetch_transform_stream_t *stream)
 
fetch_readable_stream_tfetch_transform_stream_readable (fetch_transform_stream_t *stream)
 
fetch_writable_stream_tfetch_transform_stream_writable (fetch_transform_stream_t *stream)
 
void fetch_stream_reader_free (fetch_stream_reader_t *reader)
 
bool fetch_stream_reader_closed (const fetch_stream_reader_t *reader)
 
fetch_stream_chunk_t fetch_stream_reader_read (fetch_stream_reader_t *reader)
 
void fetch_stream_reader_cancel (fetch_stream_reader_t *reader, const char *reason)
 
void fetch_stream_reader_release_lock (fetch_stream_reader_t *reader)
 
void fetch_stream_writer_free (fetch_stream_writer_t *writer)
 
bool fetch_stream_writer_closed (const fetch_stream_writer_t *writer)
 
fetch_stream_state_t fetch_stream_writer_ready (const fetch_stream_writer_t *writer)
 
fetch_stream_result_t fetch_stream_writer_write (fetch_stream_writer_t *writer, const void *chunk, size_t size)
 
fetch_stream_result_t fetch_stream_writer_close (fetch_stream_writer_t *writer)
 
fetch_stream_result_t fetch_stream_writer_abort (fetch_stream_writer_t *writer, const char *reason)
 
void fetch_stream_writer_release_lock (fetch_stream_writer_t *writer)
 
stream_buffer_t fetch_readable_stream_consume_all (fetch_readable_stream_t *stream, size_t initial_capacity)
 
stream_buffer_t fetch_readable_stream_consume_all_default (fetch_readable_stream_t *stream)
 
void stream_buffer_free (stream_buffer_t *buffer)
 
void fetch_stream_chunk_free (fetch_stream_chunk_t *chunk)
 

Typedef Documentation

◆ fetch_readable_stream_controller_t

◆ fetch_readable_stream_start_fn

typedef void(* fetch_readable_stream_start_fn) (fetch_readable_stream_controller_t *controller, void *userdata)

◆ fetch_readable_stream_t

◆ fetch_stream_reader_t

◆ fetch_stream_writer_t

◆ fetch_transform_stream_t

◆ fetch_writable_stream_t

Enumeration Type Documentation

◆ fetch_stream_result_t

Enumerator
FETCH_STREAM_OK 
FETCH_STREAM_ERROR 

◆ fetch_stream_state_t

Enumerator
FETCH_STREAM_STATE_READABLE 
FETCH_STREAM_STATE_CLOSED 
FETCH_STREAM_STATE_ERRORED 

Function Documentation

◆ fetch_readable_stream_cancel()

void fetch_readable_stream_cancel ( fetch_readable_stream_t * stream,
const char * reason )

◆ fetch_readable_stream_consume_all()

stream_buffer_t fetch_readable_stream_consume_all ( fetch_readable_stream_t * stream,
size_t initial_capacity )

Consume entire readable stream into a contiguous buffer This is a blocking operation that reads until the stream is closed

Parameters
streamThe readable stream to consume
initial_capacityInitial buffer capacity (will grow as needed)
Returns
stream_buffer_t containing the data, or {NULL, 0, 0} on error

Note: Caller must free the returned buffer with stream_buffer_free()

◆ fetch_readable_stream_consume_all_default()

stream_buffer_t fetch_readable_stream_consume_all_default ( fetch_readable_stream_t * stream)

Convenience function with default initial capacity (4KB)

◆ fetch_readable_stream_controller_close()

void fetch_readable_stream_controller_close ( fetch_readable_stream_controller_t * controller)

◆ fetch_readable_stream_controller_enqueue()

fetch_stream_result_t fetch_readable_stream_controller_enqueue ( fetch_readable_stream_controller_t * controller,
const void * value,
size_t size )

◆ fetch_readable_stream_controller_error()

void fetch_readable_stream_controller_error ( fetch_readable_stream_controller_t * controller,
const char * error )

◆ fetch_readable_stream_free()

void fetch_readable_stream_free ( fetch_readable_stream_t * stream)

◆ fetch_readable_stream_get_reader()

fetch_stream_reader_t * fetch_readable_stream_get_reader ( fetch_readable_stream_t * stream)

◆ fetch_readable_stream_locked()

bool fetch_readable_stream_locked ( const fetch_readable_stream_t * stream)

◆ fetch_readable_stream_new()

fetch_readable_stream_t * fetch_readable_stream_new ( fetch_readable_stream_start_fn start,
void * userdata )

◆ fetch_readable_stream_pipe_through()

fetch_readable_stream_t * fetch_readable_stream_pipe_through ( fetch_readable_stream_t * readable,
fetch_transform_stream_t * transform )

◆ fetch_readable_stream_pipe_to()

fetch_stream_result_t fetch_readable_stream_pipe_to ( fetch_readable_stream_t * readable,
fetch_writable_stream_t * writable )

◆ fetch_readable_stream_tee()

fetch_readable_stream_t * fetch_readable_stream_tee ( fetch_readable_stream_t * stream)

◆ fetch_stream_chunk_free()

void fetch_stream_chunk_free ( fetch_stream_chunk_t * chunk)

◆ fetch_stream_reader_cancel()

void fetch_stream_reader_cancel ( fetch_stream_reader_t * reader,
const char * reason )

◆ fetch_stream_reader_closed()

bool fetch_stream_reader_closed ( const fetch_stream_reader_t * reader)

◆ fetch_stream_reader_free()

void fetch_stream_reader_free ( fetch_stream_reader_t * reader)

◆ fetch_stream_reader_read()

fetch_stream_chunk_t fetch_stream_reader_read ( fetch_stream_reader_t * reader)

◆ fetch_stream_reader_release_lock()

void fetch_stream_reader_release_lock ( fetch_stream_reader_t * reader)

◆ fetch_stream_writer_abort()

fetch_stream_result_t fetch_stream_writer_abort ( fetch_stream_writer_t * writer,
const char * reason )

◆ fetch_stream_writer_close()

fetch_stream_result_t fetch_stream_writer_close ( fetch_stream_writer_t * writer)

◆ fetch_stream_writer_closed()

bool fetch_stream_writer_closed ( const fetch_stream_writer_t * writer)

◆ fetch_stream_writer_free()

void fetch_stream_writer_free ( fetch_stream_writer_t * writer)

◆ fetch_stream_writer_ready()

fetch_stream_state_t fetch_stream_writer_ready ( const fetch_stream_writer_t * writer)

◆ fetch_stream_writer_release_lock()

void fetch_stream_writer_release_lock ( fetch_stream_writer_t * writer)

◆ fetch_stream_writer_write()

fetch_stream_result_t fetch_stream_writer_write ( fetch_stream_writer_t * writer,
const void * chunk,
size_t size )

◆ fetch_transform_stream_free()

void fetch_transform_stream_free ( fetch_transform_stream_t * stream)

◆ fetch_transform_stream_new()

fetch_transform_stream_t * fetch_transform_stream_new ( void )

◆ fetch_transform_stream_readable()

fetch_readable_stream_t * fetch_transform_stream_readable ( fetch_transform_stream_t * stream)

◆ fetch_transform_stream_writable()

fetch_writable_stream_t * fetch_transform_stream_writable ( fetch_transform_stream_t * stream)

◆ fetch_writable_stream_abort()

fetch_stream_result_t fetch_writable_stream_abort ( fetch_writable_stream_t * stream,
const char * reason )

◆ fetch_writable_stream_close()

fetch_stream_result_t fetch_writable_stream_close ( fetch_writable_stream_t * stream)

◆ fetch_writable_stream_free()

void fetch_writable_stream_free ( fetch_writable_stream_t * stream)

◆ fetch_writable_stream_get_writer()

fetch_stream_writer_t * fetch_writable_stream_get_writer ( fetch_writable_stream_t * stream)

◆ fetch_writable_stream_locked()

bool fetch_writable_stream_locked ( const fetch_writable_stream_t * stream)

◆ fetch_writable_stream_new()

fetch_writable_stream_t * fetch_writable_stream_new ( void )

◆ stream_buffer_free()

void stream_buffer_free ( stream_buffer_t * buffer)

Free a stream buffer