Io module

shutdown_write

procedureextensionexperimental2 overloadsSource

Closes the sending side; the peer reads the end of the stream once it has what was sent.

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);
    defer Io.close(client);
    defer Io.close(server);

    Io.write(client, "done");
    Io.shutdown_write(client);

    data, _ := Io.read_all(Io.reader_of(server));
    assert(cast(string) data == "done");
    free(data.data);
});
shutdown_write :: (stream: Tcp_Stream) -> Io_Error

Parameters

stream: Tcp_Stream

Returns

shutdown_write :: (stream: *Pipe_Stream) -> Io_Error

This end will send nothing more: the other end reads what was sent, then 0.

Parameters

stream: *Pipe_Stream

Returns

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

Io.io_run(() {
    client, server := Io.make_pipe();
    defer Io.close(client);
    defer Io.close(server);

    Io.write(client, "bye");
    Io.shutdown_write(client);

    data, _ := Io.read_all(Io.reader_of(server));
    assert(cast(string) data == "bye");
    free(data.data);
});

See also