ditto
Close socket
Output range
Output range
Send encoded string
Wrapped socket
static assert(isOutputRange!(SocketOutputRange!void, int)); static assert(isOutputRange!(SocketOutputRange!char, char)); auto pair = socketPair(); auto sender = pair[0]; auto receiver = pair[1]; sender.setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, dur!"seconds"(10)); receiver.setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, dur!"seconds"(10)); auto range = SocketOutputRange!int(sender); put(range, 1); put(range, 2); put(range, 3); range.close(); import std.algorithm; assert(equal(SocketInputRange!int(receiver), [1, 2, 3]));
import std.utf; static if (is(typeof(byUTF!char(""d)))) { auto pair = socketPair(); auto sender = pair[0]; auto receiver = pair[1]; sender.setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, dur!"seconds"(10)); receiver.setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, dur!"seconds"(10)); auto range = SocketOutputRange!wchar(sender); auto data = only("foo", "bar").join(" "); static assert(is(ElementType!(typeof(data)) == dchar)); range.put(data); range.close(); assert(SocketInputRange!wchar(receiver).array == "foo bar"w); } else { pragma(msg, "[WARNING]: std.utf.byUTF is required to use encoded string sender of SocketOutputRange"); }
Output range wrapper