static void write_stream(HioOutputStream *stream, const StreamDesc *desc) { StreamGenerator generator; gsize remaining; stream_generator_init(&generator, desc->seed); remaining = desc->length; while (remaining > 0) { char buf[48]; gsize count; HrtBuffer *buffer; count = MIN(G_N_ELEMENTS(buf), remaining); stream_generator_generate(&generator, &buf[0], count); buffer = hrt_buffer_new(HRT_BUFFER_ENCODING_UTF8, &allocator, NULL, NULL); hrt_buffer_append_ascii(buffer, &buf[0], count); hrt_buffer_lock(buffer); hio_output_stream_write(stream, buffer); hrt_buffer_unref(buffer); g_assert(count <= remaining); remaining -= count; } }
void hio_response_http_write(HioResponseHttp *http, HrtBuffer *buffer) { /* this has to be more complex for chunked encoding, which is why * we don't allow direct access to the body stream. */ hio_output_stream_write(http->body_stream, buffer); }
static void write_to_header(HioResponseHttp *http, const char *s) { HrtBuffer *buffer; buffer = hrt_buffer_new_static_utf8_locked(s); hio_output_stream_write(http->header_stream, buffer); hrt_buffer_unref(buffer); }