Source file socket.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open Riot

type t = {
  socket : Net.Socket.stream_socket;
  transport : (module Transport.Intf);
  buffer_size : int;
}

let make socket transport buffer_size = { socket; transport; buffer_size }

let handshake ({ socket; transport = (module T : Transport.Intf); _ } as t) =
  match T.handshake socket with Ok () -> Ok t | Error reason -> Error reason

let receive
    { socket; transport = (module T : Transport.Intf); buffer_size = len }
    ~timeout =
  T.receive ~timeout ~len socket

let send { socket; transport = (module T : Transport.Intf); _ } data =
  T.send data socket