isNanoSocket

Undocumented in source.
enum isNanoSocket (
T
)

Examples

Examples: set/get option

auto sock = NanoSocket(NanoSocket.Protocol.subscribe);
sock.getOption!int(NanoSocket.Option.sendTimeoutMs).shouldEqual(-1);
sock.setOption(NanoSocket.Option.sendTimeoutMs, 42);
sock.getOption!int(NanoSocket.Option.sendTimeoutMs).shouldEqual(42);

publish/subscribe

const uri = "inproc://test_pubsub";
auto pub = NanoSocket(NanoSocket.Protocol.publish, BindTo(uri));
auto sub = NanoSocket(NanoSocket.Protocol.subscribe, ConnectTo(uri));
sub.setOption(NanoSocket.Option.subscribeTopic, "foo");

// messages that start with the subscription topic should be received
pub.send("foo/hello");
sub.receive(No.blocking).shouldEqual("foo/hello");

// but not messages that don't
pub.send("bar/oops");
sub.receive(No.blocking).shouldBeEmpty;

// after unsubscribing, messages are no longer received
sub.setOption(NanoSocket.Option.unsubscribeTopic, "foo");
pub.send("foo/hello");
sub.receive(No.blocking).shouldBeEmpty;

request/response

import std.concurrency: spawnLinked, send;

const uri = "inproc://test_reqrep";
const requester = NanoSocket(NanoSocket.Protocol.request, ConnectTo(uri));

enum timeoutMs = 50;
requester.setOption(NanoSocket.Option.receiveTimeoutMs, timeoutMs);

auto tid = spawnLinked(&responder, uri, timeoutMs);
requester.send("shake?").shouldEqual("shake? yep!");
tid.send(Stop());

Meta