Skip to content

Commit b98d611

Browse files
committed
add a Eio_unix.Net.Sockopt.pp as well
1 parent a44bdb5 commit b98d611

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

lib_eio/unix/net.ml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,29 @@ module Sockopt = struct
9999
| Unix_optint : Unix.socket_optint_option -> int option Eio.Net.Sockopt.t
100100
| Unix_float : Unix.socket_float_option -> float Eio.Net.Sockopt.t
101101

102+
let pp : type a. a Eio.Net.Sockopt.t -> Format.formatter -> a -> unit = fun opt f v ->
103+
(match opt with
104+
| Unix_bool Unix.SO_DEBUG -> Fmt.pf f "Unix.SO_DEBUG = %b" v
105+
| Unix_bool Unix.SO_BROADCAST -> Fmt.pf f "Unix.SO_BROADCAST = %b" v
106+
| Unix_bool Unix.SO_REUSEADDR -> Fmt.pf f "Unix.SO_REUSEADDR = %b" v
107+
| Unix_bool Unix.SO_KEEPALIVE -> Fmt.pf f "Unix.SO_KEEPALIVE = %b" v
108+
| Unix_bool Unix.SO_DONTROUTE -> Fmt.pf f "Unix.SO_DONTROUTE = %b" v
109+
| Unix_bool Unix.SO_OOBINLINE -> Fmt.pf f "Unix.SO_OOBINLINE = %b" v
110+
| Unix_bool Unix.SO_ACCEPTCONN -> Fmt.pf f "Unix.SO_ACCEPTCONN = %b" v
111+
| Unix_bool Unix.TCP_NODELAY -> Fmt.pf f "Unix.TCP_NODELAY = %b" v
112+
| Unix_bool Unix.IPV6_ONLY -> Fmt.pf f "Unix.IPV6_ONLY = %b" v
113+
| Unix_bool Unix.SO_REUSEPORT -> Fmt.pf f "Unix.SO_REUSEPORT = %b" v
114+
| Unix_int Unix.SO_SNDBUF -> Fmt.pf f "Unix.SO_SNDBUF = %d" v
115+
| Unix_int Unix.SO_RCVBUF -> Fmt.pf f "Unix.SO_RCVBUF = %d" v
116+
| Unix_int Unix.SO_ERROR -> Fmt.pf f "Unix.SO_ERROR = %d" v
117+
| Unix_int Unix.SO_TYPE -> Fmt.pf f "Unix.SO_TYPE = %d" v
118+
| Unix_int Unix.SO_RCVLOWAT -> Fmt.pf f "Unix.SO_RCVLOWAT = %d" v
119+
| Unix_int Unix.SO_SNDLOWAT -> Fmt.pf f "Unix.SO_SNDLOWAT = %d" v
120+
| Unix_optint Unix.SO_LINGER -> Fmt.(pf f "Unix.SO_LINGER = %a" (option ~none:(any "<none>") int) v)
121+
| Unix_float Unix.SO_RCVTIMEO -> Fmt.pf f "Unix.SO_RCVTIMEO = %f" v
122+
| Unix_float Unix.SO_SNDTIMEO -> Fmt.pf f "Unix.SO_SNDTIMEO = %f" v
123+
| _ -> Eio.Net.Sockopt.pp opt f v) [@alert "-deprecated"]
124+
102125
let set : type a. Fd.t -> a Eio.Net.Sockopt.t -> a -> unit = fun fd opt v ->
103126
Fd.use_exn "setsockopt" fd @@ fun fd ->
104127
match opt with

lib_eio/unix/net.mli

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ module Sockopt : sig
116116
| Unix_float : Unix.socket_float_option -> float Eio.Net.Sockopt.t
117117
(** Wrap any Unix float socket option *)
118118

119+
val pp : 'a Eio.Net.Sockopt.t -> Format.formatter -> 'a -> unit
120+
(** [pp opt f v] formats socket option [opt] with value [v] to formatter [f].
121+
Handles Unix-specific socket options with a [Unix] prefix to distinguish them from native Eio options. *)
122+
119123
val set : Fd.t -> 'a Eio.Net.Sockopt.t -> 'a -> unit
120124
(** [set fd opt v] sets socket option [opt] to value [v] on file descriptor [fd].
121125

lib_eio_linux/low_level.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ module Sockopt = struct
708708
| `Probe -> "Probe"
709709
in
710710
Fmt.pf f "IP_MTU_DISCOVER = %s" s
711-
| _ -> Eio.Net.Sockopt.pp opt f v
711+
| _ -> Eio_unix.Net.Sockopt.pp opt f v
712712

713713
let with_fd_set fd fn =
714714
Fd.use_exn "setsockopt" fd fn

0 commit comments

Comments
 (0)