Waits for data and reads what is there, up to buffer.count bytes. 0 means the peer closed its
end. An error comes with 0 bytes.
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);
defer Io.close(client);
defer Io.close(server);
Io.write(client, "hello");
buffer: [16] u8;
count, error := Io.read(server, buffer);
assert(error == .NONE && string.{ count, buffer.data } == "hello");
});read :: (stream: Tcp_Stream, buffer: [] u8) -> (s64, Io_Error)
Parameters
- stream: Tcp_Stream
- buffer: [] u8
Returns
- s64
read :: (stream: *Pipe_Stream, buffer: [] u8) -> (s64, Io_Error)
Waits for bytes and reads what is there, up to buffer.count. 0 means the other end closed
and everything it sent has been read.
Parameters
- stream: *Pipe_Stream
- buffer: [] u8
Returns
- s64
read :: (file: *Io_File, buffer: [] u8) -> (s64, Io_Error)
Reads up to buffer.count bytes at the file's position. 0 at the end of the file.
Parameters
- file: *Io_File
- buffer: [] u8
Returns
- s64
Io :: #import "Extensions/Io";
#import "File";
Io.io_run(() {
Io.write_file("/tmp/jacket-io-read.txt", "hello");
file, _ := Io.open_file("/tmp/jacket-io-read.txt");
defer Io.close(*file);
buffer: [16] u8;
count, error := Io.read(*file, buffer);
assert(error == .NONE && string.{ count, buffer.data } == "hello");
});
file_delete("/tmp/jacket-io-read.txt");Doesn't run in the browser (only on linux, macos).
read :: (reader: Reader, buffer: [] u8) -> (s64, Io_Error)
Waits for bytes and reads what is there, up to buffer.count. 0 means the end of the source.
Parameters
- reader: Reader
- buffer: [] u8
Returns
- s64
Io :: #import "Extensions/Io";
Io.io_run(() {
near, far := Io.make_pipe();
defer Io.close(near);
defer Io.close(far);
Io.write(Io.writer_of(far), "hello");
buffer: [16] u8;
count, error := Io.read(Io.reader_of(near), buffer);
assert(error == .NONE && string.{ count, buffer.data } == "hello");
});