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
Go to the documentation of this file.
1#ifndef FETCH_STREAM_H
2#define FETCH_STREAM_H
3
4#include <stdbool.h>
5#include <stddef.h>
6#include <stdint.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12// =============================================================================
13// FORWARD DECLARATIONS (OPAQUE TYPES)
14// =============================================================================
15
16// These remain opaque to users - internal implementation details
22
23// =============================================================================
24// PUBLIC STRUCTURES
25// =============================================================================
26
27// Stream chunk - users need to understand this structure
28typedef struct {
29 void *value;
30 size_t size;
31 bool done;
33
34// Stream results
39
40// Stream states
46
47// Stream buffer for consume operations
48typedef struct {
49 void *data;
50 size_t size;
51 size_t capacity;
53
54// Controller structure - users need to interact with this
56 fetch_readable_stream_t *stream; // Points to the associated stream
57 void *_internal; // Reserved for internal use
59
60// =============================================================================
61// READABLE STREAM CONTROLLER
62// =============================================================================
63
65 fetch_readable_stream_controller_t *controller, const void *value,
66 size_t size);
70 fetch_readable_stream_controller_t *controller, const char *error);
71
72// =============================================================================
73// READABLE STREAM
74// =============================================================================
75
77 fetch_readable_stream_controller_t *controller, void *userdata);
78
82
83// Properties
85
86// Methods
90 const char *reason);
93 fetch_writable_stream_t *writable);
96 fetch_transform_stream_t *transform);
99
100// =============================================================================
101// WRITABLE STREAM
102// =============================================================================
103
106
107// Properties
109
110// Methods
115 const char *reason);
118
119// =============================================================================
120// TRANSFORM STREAM
121// =============================================================================
122
125
126// Properties
131
132// =============================================================================
133// READER
134// =============================================================================
135
137
138// Properties
140
141// Methods
144 const char *reason);
146
147// =============================================================================
148// WRITER
149// =============================================================================
150
152
153// Properties
157
158// Methods
160 const void *chunk, size_t size);
163 const char *reason);
165
166// =============================================================================
167// HELPER FUNCTIONS
168// =============================================================================
169
182 size_t initial_capacity);
183
189
194
195// =============================================================================
196// UTILITIES
197// =============================================================================
198
200
201#ifdef __cplusplus
202}
203#endif
204
205#endif // FETCH_STREAM_H
fetch_stream_result_t
Return codes for file streaming continue callback.
Definition fetch.h:73
struct fetch_readable_stream_controller fetch_readable_stream_controller_t
bool fetch_writable_stream_locked(const fetch_writable_stream_t *stream)
Definition stream.c:530
void fetch_readable_stream_controller_close(fetch_readable_stream_controller_t *controller)
Definition stream.c:406
fetch_stream_result_t fetch_stream_writer_write(fetch_stream_writer_t *writer, const void *chunk, size_t size)
Definition stream.c:721
fetch_stream_result_t fetch_stream_writer_close(fetch_stream_writer_t *writer)
Definition stream.c:740
void fetch_readable_stream_cancel(fetch_readable_stream_t *stream, const char *reason)
Definition stream.c:484
void fetch_stream_reader_cancel(fetch_stream_reader_t *reader, const char *reason)
Definition stream.c:675
fetch_stream_chunk_t fetch_stream_reader_read(fetch_stream_reader_t *reader)
Definition stream.c:665
void fetch_transform_stream_free(fetch_transform_stream_t *stream)
Definition stream.c:617
stream_buffer_t fetch_readable_stream_consume_all(fetch_readable_stream_t *stream, size_t initial_capacity)
Definition stream.c:767
void fetch_writable_stream_free(fetch_writable_stream_t *stream)
Definition stream.c:521
fetch_transform_stream_t * fetch_transform_stream_new(void)
Definition stream.c:575
fetch_readable_stream_t * fetch_readable_stream_tee(fetch_readable_stream_t *stream)
Definition stream.c:495
fetch_writable_stream_t * fetch_transform_stream_writable(fetch_transform_stream_t *stream)
Definition stream.c:641
bool fetch_readable_stream_locked(const fetch_readable_stream_t *stream)
Definition stream.c:465
fetch_stream_state_t
Definition stream.h:41
@ FETCH_STREAM_STATE_ERRORED
Definition stream.h:44
@ FETCH_STREAM_STATE_CLOSED
Definition stream.h:43
@ FETCH_STREAM_STATE_READABLE
Definition stream.h:42
void fetch_stream_writer_release_lock(fetch_stream_writer_t *writer)
Definition stream.c:755
void fetch_stream_reader_release_lock(fetch_stream_reader_t *reader)
Definition stream.c:683
fetch_stream_result_t fetch_writable_stream_abort(fetch_writable_stream_t *stream, const char *reason)
Definition stream.c:550
fetch_readable_stream_t * fetch_readable_stream_pipe_through(fetch_readable_stream_t *readable, fetch_transform_stream_t *transform)
Definition stream.c:909
fetch_stream_result_t fetch_readable_stream_pipe_to(fetch_readable_stream_t *readable, fetch_writable_stream_t *writable)
Definition stream.c:873
stream_buffer_t fetch_readable_stream_consume_all_default(fetch_readable_stream_t *stream)
Definition stream.c:855
fetch_stream_writer_t * fetch_writable_stream_get_writer(fetch_writable_stream_t *stream)
Definition stream.c:535
void fetch_readable_stream_controller_error(fetch_readable_stream_controller_t *controller, const char *error)
Definition stream.c:415
void(* fetch_readable_stream_start_fn)(fetch_readable_stream_controller_t *controller, void *userdata)
Definition stream.h:76
void stream_buffer_free(stream_buffer_t *buffer)
Definition stream.c:859
fetch_stream_result_t fetch_writable_stream_close(fetch_writable_stream_t *stream)
Definition stream.c:562
fetch_writable_stream_t * fetch_writable_stream_new(void)
Definition stream.c:504
void fetch_readable_stream_free(fetch_readable_stream_t *stream)
Definition stream.c:456
fetch_stream_result_t fetch_stream_writer_abort(fetch_stream_writer_t *writer, const char *reason)
Definition stream.c:747
fetch_stream_state_t fetch_stream_writer_ready(const fetch_stream_writer_t *writer)
Definition stream.c:711
void fetch_stream_chunk_free(fetch_stream_chunk_t *chunk)
Definition stream.c:363
bool fetch_stream_writer_closed(const fetch_stream_writer_t *writer)
Definition stream.c:705
fetch_stream_result_t
Definition stream.h:35
@ FETCH_STREAM_OK
Definition stream.h:36
@ FETCH_STREAM_ERROR
Definition stream.h:37
fetch_readable_stream_t * fetch_readable_stream_new(fetch_readable_stream_start_fn start, void *userdata)
Definition stream.c:430
fetch_stream_reader_t * fetch_readable_stream_get_reader(fetch_readable_stream_t *stream)
Definition stream.c:470
void fetch_stream_writer_free(fetch_stream_writer_t *writer)
Definition stream.c:694
bool fetch_stream_reader_closed(const fetch_stream_reader_t *reader)
Definition stream.c:660
void fetch_stream_reader_free(fetch_stream_reader_t *reader)
Definition stream.c:649
fetch_readable_stream_t * fetch_transform_stream_readable(fetch_transform_stream_t *stream)
Definition stream.c:636
fetch_stream_result_t fetch_readable_stream_controller_enqueue(fetch_readable_stream_controller_t *controller, const void *value, size_t size)
Definition stream.c:391
Definition stream.h:55
void * _internal
Definition stream.h:57
fetch_readable_stream_t * stream
Definition stream.h:56
Definition stream.c:331
Definition stream.h:28
bool done
Definition stream.h:31
void * value
Definition stream.h:29
size_t size
Definition stream.h:30
Definition stream.c:349
Definition stream.c:354
Definition stream.c:343
Definition stream.c:337
Definition stream.h:48
size_t size
Definition stream.h:50
size_t capacity
Definition stream.h:51
void * data
Definition stream.h:49