sig
type json = Json.t
type kind = [ `EXEC | `GET | `SET ]
val string_of_kind : Main.kind -> string
val pp_kind : Format.formatter -> Main.kind -> unit
val register : Main.kind -> string -> (Main.json -> Main.json) -> unit
val find : string -> (Main.kind * (Main.json -> Main.json)) option
val exec : string -> Main.json -> Main.json
type signal
val signal : string -> Main.signal
type 'a request =
[ `Kill of 'a
| `Poll
| `Request of 'a * string * Main.json
| `Shutdown
| `SigOff of string
| `SigOn of string ]
type 'a response =
[ `Data of 'a * Main.json
| `Error of 'a * string
| `Killed of 'a
| `Rejected of 'a
| `Signal of string ]
type 'a message = {
requests : 'a Main.request list;
callback : 'a Main.response list -> unit;
}
type 'a server
val create :
pretty:(Format.formatter -> 'a -> unit) ->
?equal:('a -> 'a -> bool) ->
fetch:(unit -> 'a Main.message option) -> unit -> 'a Main.server
val run : 'a Main.server -> unit
val start : 'a Main.server -> unit
val stop : 'a Main.server -> unit
val kill : unit -> 'a
val emit : Main.signal -> unit
val on_signal : Main.signal -> (bool -> unit) -> unit
val on : (bool -> unit) -> unit
end