Http module

pipe_link

procedure · 1 overloadSource

A Link over one end of an in-memory pipe from Io.make_pipe; the test client connects an App this way. peer is the loopback address with port 0.

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

main :: () {
    Io.io_run(() {
        near, far := Io.make_pipe();
        client := pipe_link(near);
        server := pipe_link(far);

        Io.write(client.writer, "ping");

        buffer: [8] u8;
        count, error := Io.read(server.reader, buffer);
        assert(error == .NONE && string.{ count, buffer.data } == "ping");

        close(client);
        close(server);
    });
}

Doesn't run in the browser (skipped on wasm).

pipe_link :: (pipe: *Io.Pipe_Stream) -> Link

A Link over one end of an in-memory pipe from Io.make_pipe; the test client connects an App this way. peer is the loopback address with port 0.

Parameters

Returns

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

main :: () {
    Io.io_run(() {
        near, far := Io.make_pipe();
        client := pipe_link(near);
        server := pipe_link(far);

        Io.write(client.writer, "ping");

        buffer: [8] u8;
        count, error := Io.read(server.reader, buffer);
        assert(error == .NONE && string.{ count, buffer.data } == "ping");

        close(client);
        close(server);
    });
}

Doesn't run in the browser (skipped on wasm).

See also