sig
module P :
sig
type 'a t = {
get : 'a option Join.chan Join.chan;
kill : unit Join.chan;
}
val empty : unit -> 'a JoinCom.P.t
val map : ('a -> 'b) -> 'a JoinCom.P.t -> 'b JoinCom.P.t
val when_none : unit Join.chan -> 'a JoinCom.P.t -> 'a JoinCom.P.t
val of_list : 'a list -> 'a JoinCom.P.t
val to_list : ('a JoinCom.P.t * 'a list Join.chan) Join.chan
val of_text : Pervasives.in_channel -> string JoinCom.P.t
val to_text :
(string JoinCom.P.t * Pervasives.out_channel * unit Join.chan)
Join.chan
val to_text_close :
(string JoinCom.P.t * Pervasives.out_channel) Join.chan
end
module C :
sig
type 'a t = {
put : ('a * bool Join.chan) Join.chan;
close : unit -> unit;
}
end
val connect : ('a JoinCom.P.t * 'a JoinCom.C.t * unit Join.chan) Join.chan
end