123456789101112131415161718192021222324252627282930313233343536373839404142434445moduletypeT=sigtype'atmoduleDeferred:sigtypenonrec'at='atvalreturn:'a->'atvalcatch:(unit->'at)->('a,exn)resulttvaldon't_wait_for:(unit->unitt)->unitvalsleepf:float->unittvalfail:exn->'atmoduleInfix:sigval(>>=):'at->('a->'bt)->'bt(* Determined, whenever either of the deferred becomes determined *)val(<?>):'at->'at->'atendendmoduleCondition:sigtype'atvalcreate:unit->'atvalwait:'at->'aDeferred.tvalsignal:'at->'a->unitendmoduleMailbox:sigtype'atvalcreate:unit->'atvalsend:'at->'a->unitvalrecv:'at->'aDeferred.tendmoduleFd:sigtypet(* Wrap the given unix file_deser *)valcreate:Unix.file_descr->t(** Wait for the fd to become readable.
It is important that all waiters on the socket are woken up,
and not just one, as the fd is used as a broadcast mechanism.
The Fd must _NOT_ be closed, as its owned by Zmq.
*)valwait_readable:t->unitDeferred.tvalrelease:t->unitDeferred.tendend