On Tuesday, 3 November 2015 at 23:16:59 UTC, bertg wrote:
Running the following code I get 3 different tid's, multiple
"sock in" messages printed, but no receives. I am supposed to
get a "received!" for each "sock in", but I am getting hung up
on "receiving...".
[...]
while (true) {
writeln("receiving...");
std.concurrency.receive(
(string msg) {
writeln("conn: received ws message: " ~
msg);
}
);
writeln("received!");
}
Unless I'm reading it wrong, you want
std.concurrency.receiveTimeout.
import core.time;
import std.concurrency;
bool received = receiveTimeout(1.seconds, // negative makes
it not wait at all
(string msg) {
writeln("conn: received ws message: " ~ msg);
});
if (received) {
writeln("received!");
}
else {
writeln("timed out...");
// stuff?
}
}
Tries to receive but will give up if no matches arrive within
duration. Won't wait at all if provided core.time.Duration is
negative.