Io module

reader_of

procedureextensionexperimental3 overloadsSource

The file as a Reader. Reading advances the file's position. The reader points at the Io_File, which must outlive it.

Example
Io :: #import "Extensions/Io";
#import "File";

path := "/tmp/jacket-io-reader-of.txt";
Io.io_run(() {
    Io.write_file("/tmp/jacket-io-reader-of.txt", "hello");

    file, _ := Io.open_file("/tmp/jacket-io-reader-of.txt");
    defer Io.close(*file);

    data, error := Io.read_all(Io.reader_of(*file));
    assert(error == .NONE && cast(string) data == "hello");
    free(data.data);
});
file_delete(path);

Doesn't run in the browser (only on linux, macos).

reader_of :: (file: *Io_File) -> Reader

Parameters

file: *Io_File

Returns

reader_of :: (stream: Tcp_Stream) -> Reader

The TCP stream as a Reader; it can wait_readable. The reader carries the socket handle, so closing the reader closes the stream.

Parameters

stream: Tcp_Stream

Returns

Example↗
Io :: #import "Extensions/Io";

Io.io_run(() {
    listener, _ := Io.tcp_listen("127.0.0.1:0");
    defer Io.close(listener);

    address, _ := Io.local_address(listener);
    client, _ := Io.connect(address);
    server, _ := Io.accept(listener);

    assert(Io.can_wait_readable(Io.reader_of(server)));

    Io.close(client);
    Io.close(server);
});
reader_of :: (stream: *Pipe_Stream) -> Reader

One end of a pipe from make_pipe as a Reader. The reader points at the pipe end, which must outlive it.

Parameters

stream: *Pipe_Stream

Returns

See also