Source file transport.ml

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

let ( let* ) = Result.bind

module type Intf = sig
  val handshake :
    socket:Net.Socket.stream_socket ->
    buffer_size:int ->
    ( Connection.t,
      [> `Closed | `Inactive_tls_engine | `No_session_data ] )
    IO.result
end

module Tcp : Intf = struct
  let handshake ~socket ~buffer_size =
    let reader, writer = Net.Socket.(to_reader socket, to_writer socket) in
    let conn = Connection.make ~reader ~writer ~buffer_size () in
    Ok conn
end