The file as a Reader. Reading advances the file's position. The reader points at the Io_File, which must outlive it.
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
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