module Channels : sig..end
An exception that may be raised when trying to create a new channel while the channel count exceed max_virtual_channels. Note that by default max_virtual_channels is set to None so that the exception is never raised.
An exception raised when creating a channel with a name already associated to another channel. It is strictly forbidden to name several channels with the same string.
The abstract type of server-to-client communication channels.
type chan_id = string
The type of channel identifier. Channels are uniquely identified by there chan_id value.
val create : ?name:string -> unit -> t
create () returns a channel with a freshly baked identifier while create ~name () returns a channel with the identifier name after checking for uniqueness. If name is the identifier of an existing channel, the exception Non_unique_channel_name is raised.
val write :
string * Ocsigen_stream.outcome Lwt.u option -> unit
write c (s, u) sends the string s on the channel c. The argument u allow one to observe the result of the operation. If u is None, there is no way to tell if the sending worked as expected. However if u is Some u' then u' will be woken up with the outcome (either `Falure or `Success) of the stream writing process.
val listeners : t -> int
listeners c returns the number of clients currently registered on c A client is "currently registered" on a channel if an actual connection is open for the server to push a message onto. Note that this information is server-based only, and that because it is so, some clients may still be registered as active while they have in fact closed the connection. In such a case, the outcome mechanism in write will report the failure.
get_id c returns the unique identifier associated to c. The client can register to c using the returned identifier.