@@ -57,35 +57,23 @@ let ipcclient_exn_wrapper thunk =
5757 fail0 ~kind: (Printf. sprintf " StateIPCClient: Unexpected error making JSON-RPC call: %s" e)
5858 ?inst:None
5959
60- type state = { mutable client : Ezcurl .t option };;
61- let current_state = { client = None };;
60+ type state = { mutable channels : ( string , ( Core.In_channel .t * Core.Out_channel .t )) Caml.Hashtbl .t }
61+ let current_state = { channels = Caml.Hashtbl. create 64 }
6262
63- let http_rpc ~socket_addr (call : Rpc.call ) : Rpc.response M.t =
64- let client = match current_state.client with
65- | Some c -> c
63+ let socket_rpc ~socket_addr (call : Rpc.call ) : Rpc.response M.t =
64+ let (ic, oc) = match ( Caml.Hashtbl. find_opt current_state.channels socket_addr) with
65+ | Some cs -> cs
6666 | None ->
67- let c = Ezcurl. make ( ) in
68- current_state.client < - Some c ;
69- c
67+ let cs = Core_unix. open_connection ( Core_unix. ADDR_UNIX socket_addr ) in
68+ Caml.Hashtbl. replace current_state.channels socket_addr cs ;
69+ cs
7070 in
7171 let msg_buf = Jsonrpc. string_of_call ~version: Jsonrpc. V2 call in
7272 DebugMessage. plog (Printf. sprintf " Sending: %s\n " msg_buf);
73- let exception Http_error of string in
74- let response =
75- match Ezcurl. post ~client ~headers: [" content-type" , " application/json" ] ~content: (`String msg_buf) ~params: [] ~url: socket_addr () with
76- | Ok response -> response
77- | Error (_ , err ) -> (
78- DebugMessage. plog (Printf. sprintf " error calling RPC: %s" err);
79- raise (Http_error (Printf. sprintf " error calling RPC: %s" err))
80- )
81- in
82-
83- let response = if response.code = 200 then response.body else (
84- DebugMessage. plog (Printf. sprintf " error response from RPC: code: %d, body: %s" response.code response.body);
85- raise (Http_error " error response from RPC" )
86- )
87- in
88-
73+ (* Send data to the socket. *)
74+ let _ = send_delimited oc msg_buf in
75+ (* Get response. *)
76+ let response = Caml. input_line ic in
8977 DebugMessage. plog (Printf. sprintf " Response: %s\n " response);
9078 M. return @@ Jsonrpc. response_of_string response
9179
@@ -184,7 +172,7 @@ let fetch ~socket_addr ~fname ~keys ~tp =
184172 let % bind q' = encode_serialized_query q in
185173 let % bind res =
186174 let thunk () =
187- translate_res @@ IPCClient. fetch_state_value (http_rpc ~socket_addr ) q'
175+ translate_res @@ IPCClient. fetch_state_value (socket_rpc ~socket_addr ) q'
188176 in
189177 ipcclient_exn_wrapper thunk
190178 in
@@ -227,7 +215,7 @@ let external_fetch ~socket_addr ~caddr ~fname ~keys ~ignoreval =
227215 let % bind res =
228216 let thunk () =
229217 translate_res
230- @@ IPCClient. fetch_ext_state_value (http_rpc ~socket_addr ) caddr q'
218+ @@ IPCClient. fetch_ext_state_value (socket_rpc ~socket_addr ) caddr q'
231219 in
232220 ipcclient_exn_wrapper thunk
233221 in
@@ -263,7 +251,7 @@ let update ~socket_addr ~fname ~keys ~value ~tp =
263251 let % bind () =
264252 let thunk () =
265253 translate_res
266- @@ IPCClient. update_state_value (http_rpc ~socket_addr ) q' value'
254+ @@ IPCClient. update_state_value (socket_rpc ~socket_addr ) q' value'
267255 in
268256 ipcclient_exn_wrapper thunk
269257 in
@@ -283,7 +271,7 @@ let is_member ~socket_addr ~fname ~keys ~tp =
283271 let % bind q' = encode_serialized_query q in
284272 let % bind res =
285273 let thunk () =
286- translate_res @@ IPCClient. fetch_state_value (http_rpc ~socket_addr ) q'
274+ translate_res @@ IPCClient. fetch_state_value (socket_rpc ~socket_addr ) q'
287275 in
288276 ipcclient_exn_wrapper thunk
289277 in
@@ -306,7 +294,7 @@ let remove ~socket_addr ~fname ~keys ~tp =
306294 let % bind () =
307295 let thunk () =
308296 translate_res
309- @@ IPCClient. update_state_value (http_rpc ~socket_addr ) q' dummy_val
297+ @@ IPCClient. update_state_value (socket_rpc ~socket_addr ) q' dummy_val
310298 in
311299 ipcclient_exn_wrapper thunk
312300 in
@@ -320,7 +308,7 @@ let fetch_bcinfo ~socket_addr ~query_name ~query_args =
320308 let % bind res =
321309 let thunk () =
322310 translate_res
323- @@ IPCClient. fetch_bcinfo (http_rpc ~socket_addr ) query_name query_args
311+ @@ IPCClient. fetch_bcinfo (socket_rpc ~socket_addr ) query_name query_args
324312 in
325313 ipcclient_exn_wrapper thunk
326314 in
0 commit comments