Frama-C API - Main
Server Main Process
type json = Frama_c_kernel.Json.tval string_of_kind : kind -> stringval pp_kind : Stdlib.Format.formatter -> kind -> unitRequest Registry
Signals Registry
val signal : string -> signalval signal_name : signal -> stringServer Main Process
type 'a request = [ | `Poll| `Request of 'a * string * json| `Kill of 'a| `SigOn of string| `SigOff of string| `Shutdown
]Type of request messages. Parametrized by the type of request identifiers.
type 'a response = [ | `Data of 'a * json| `Error of 'a * string| `Killed of 'a| `Rejected of 'a| `Signal of string| `CmdLineOn| `CmdLineOff
]Type of response messages. Parametrized by the type of request identifiers.
A paired request-response message. The callback will be called exactly once for each received message.
val create : pretty:(Stdlib.Format.formatter -> 'a -> unit) -> ?equal:('a -> 'a -> bool) -> fetch:(unit -> 'a message option) -> unit -> 'a serverRun a server with the provided low-level network primitives to actually exchange data. Logs are monitored unless ~logs:false is specified.
Default equality is the standard `(=)` one.
val start : 'a server -> unitStart the server in background.
The function returns immediately after installing a daemon that (only) accepts GET requests received by the server on calls to Async.yield().
Shall be scheduled at command line main stage via Boot.Main.extend extension point.
val stop : 'a server -> unitStop the server if it is running in background.
Can be invoked to force server shutdown at any time.
It shall be typically scheduled via Extlib.safe_at_exit along with other system cleanup operations to make sure the server is property shutdown before Frama-C main process exits.
val run : 'a server -> unitRun the server forever. The server would now accept any kind of requests and start handling them. While executing an `EXEC request, the server would continue to handle (only) `GET pending requests on Async.yield() at every server.polling time interval.
The function will not return until the server is actually shutdown.
Shall be scheduled at normal command line termination via Cmdline.at_normal_exit extension point.
val emit : signal -> unitEmit the server signal to the client.
val on_signal : signal -> (bool -> unit) -> unitRegister a callback on signal listening.
The callback is invoked with true on SIGON command and false on SIGOFF.
Register a callback to listen for server activity. All callbacks are executed in their order of registration. Callbacks shall never raise any exception.
Register a callback to listen for server initialization. All callbacks are executed once, in their order of registration, and before activity callbacks. Callbacks shall never raise any exception.
val async : ('a -> 'b) -> 'a -> 'b Frama_c_kernel.Task.taskRegister an asynchronous task on the server. When the server is not working in background, this is equivalent to Task.call ; otherwise, the continuation is scheduled on the server like an `EXEC request.
