"server_error_handler": "server_error_handler"
}
+{ "rpc_type": "rpc",
+ "rpc_server": "server",
+ "rpc_doc": "documentation",
+ "rpc_version": "string",
+
+ "rpc_request": { "request_name": "request0",
+ "request_doc": "documentation",
+ "request_handler": "request0_handler",
+ "request_params": []
+ },
+
+ "rpc_response": { "response_doc": "documentation",
+ "response_handler": "response0_handler",
+ "response_value": { "param_name": "resp1",
+ "param_doc": "documentation",
+ "param_type": "resp1_type"
+ }
+ },
+
+ "rpc_deprecated": "string",
+ "rpc_label_arguments": false
+}
+
{ "rpc_type": "rpc",
"rpc_server": "server",
"rpc_doc": "documentation",
(* Finally, implement the server-side call dispatch structure. *)
module S = struct
+ let req0_handler () = Some true
+
let req1_handler arg1 =
if arg1 < 5 then None
else if arg1 < 10 then Some false
2, Printexc.to_string e, Some (Json.String "details")
let server_impl =
- { Server.request1_handler = req1_handler;
+ { Server.request0_handler = req0_handler;
+ Server.request1_handler = req1_handler;
Server.request2_handler = req2_handler;
Server.not1_handler = not1_handler;
Server.server_error_handler = error_handler
rpc_invoke req resp_fun
let test_server () =
+ let req0_checker test_id () =
+ let req = C.jrpc_request0 () in
+ let exp_resp = S.req0_handler () in
+ let resp_to_str r = match r with |None -> "None" | Some b -> if b then "Some true" else "Some false" in
+ let resp_checker r =
+ let got_resp = resp1_type_of_json r in
+ if got_resp <> exp_resp
+ then raise (Failure (Printf.sprintf "req1, test %s: got \"%s\", expected \"%s\"!"
+ test_id (resp_to_str got_resp) (resp_to_str exp_resp)))
+ in
+ test_invoke req resp_checker
+ in
+ req0_checker "1" ();
+
let req1_checker test_id arg1 =
let req = C.jrpc_request1 arg1 in
let exp_resp = S.req1_handler arg1 in