sig
val create :
?name:string -> unit -> ('a, 'b) Session.st * ('b, 'a) Session.st
val close : Session.et -> unit
val send :
'm -> ('m * ('a, 'b) Session.st) Session.ot -> ('b, 'a) Session.st
val receive :
('m * ('a, 'b) Session.st) Session.it -> 'm * ('a, 'b) Session.st
val select :
(('a, 'b) Session.st -> 'm) -> 'm Session.ot -> ('b, 'a) Session.st
val select_true :
[> `True of ('a, 'b) Session.st ] Session.ot -> ('b, 'a) Session.st
val select_false :
[> `False of ('a, 'b) Session.st ] Session.ot -> ('b, 'a) Session.st
val branch : ([> ] as 'm) Session.it -> 'm
val is_valid : ('a, 'b) Session.st -> bool
val acquire : ('a, 'b) Session.st -> ('a, 'b) Session.st
val try_acquire : ('a, 'b) Session.st -> ('a, 'b) Session.st option
val same_session : ('a, 'b) Session.st -> ('c, 'd) Session.st -> bool
val string_of_endpoint : ('a, 'b) Session.st -> string
val ( @= ) :
(('a, 'b) Session.st -> 'm * Session.et) ->
((('a, 'b) Session.st, ('c, 'd) Session.st) Session.seq,
(('b, 'a) Session.st, ('d, 'c) Session.st) Session.seq)
Session.st -> 'm * ('c, 'd) Session.st
val ( @> ) :
(('a, 'b) Session.st -> Session.et) ->
((('a, 'b) Session.st, ('c, 'd) Session.st) Session.seq,
(('b, 'a) Session.st, ('d, 'c) Session.st) Session.seq)
Session.st -> ('c, 'd) Session.st
end