+
+ # Set wether this socket is non blocking
+ fun non_blocking=(value: Bool) `{
+ int flags = fcntl(*self, F_GETFL, 0);
+ if (flags == -1) flags = 0;
+
+ if (value) {
+ flags = flags | O_NONBLOCK;
+ } else if (flags & O_NONBLOCK) {
+ flags = flags - O_NONBLOCK;
+ } else {
+ return;
+ }
+ fcntl(*self, F_SETFL, flags);
+ `}