Source file msgpack_unix.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
open Async
open Core
module Unix_socket : sig
include Msgpack_rpc.Connection
val with_socket_file
: string
-> ((t -> 'a Deferred.t) -> 'a Deferred.t) Tcp.with_connect_options
val open_from_filename : string -> t Deferred.t
end = struct
type t =
{ reader : Reader.t
; writer : Writer.t
}
[@@deriving fields]
let with_socket_file
fname
?buffer_age_limit
?interrupt
?reader_buffer_size
?writer_buffer_size
?timeout
f
=
let addr = Tcp.Where_to_connect.of_file fname in
Tcp.with_connection
addr
?buffer_age_limit
?interrupt
?reader_buffer_size
?writer_buffer_size
?timeout
(fun _ reader writer -> f { reader; writer })
;;
let open_from_filename fname =
let addr = Tcp.Where_to_connect.of_file fname in
let%map _sock, reader, writer = Tcp.connect addr in
{ reader; writer }
;;
end
module M = Msgpack_rpc.Make (Unix_socket) ()
include M