diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f3af3925..15bdda06 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,10 +10,10 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ocamlVersion: [4_12, 4_13, 4_14, 5_00] + ocamlVersion: [4_14, 5_0, 5_1] steps: - - uses: actions/checkout@v2 - - uses: cachix/install-nix-action@v17 + - uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v22 with: extra_nix_config: | extra-substituters = https://anmonteiro.nix-cache.workers.dev diff --git a/eio/websocketaf_eio.ml b/eio/websocketaf_eio.ml index 27998afd..028f0406 100644 --- a/eio/websocketaf_eio.ml +++ b/eio/websocketaf_eio.ml @@ -9,19 +9,21 @@ module Server = struct let create_connection_handler ?(config = Httpaf.Config.default) ~websocket_handler - ~error_handler = fun client_addr socket -> - let connection = - Websocketaf.Server_connection.create - ~sha1 - ~error_handler:(error_handler client_addr) - (websocket_handler client_addr) - in - Gluten_eio.Server.create_connection_handler - ~read_buffer_size:config.read_buffer_size - ~protocol:(module Websocketaf.Server_connection) - connection - client_addr - socket + ~error_handler ~sw = + fun client_addr socket -> + let connection = + Websocketaf.Server_connection.create + ~sha1 + ~error_handler:(error_handler client_addr) + (websocket_handler client_addr) + in + Gluten_eio.Server.create_connection_handler + ~read_buffer_size:config.read_buffer_size + ~protocol:(module Websocketaf.Server_connection) + ~sw + connection + client_addr + socket end module Client = struct diff --git a/eio/websocketaf_eio.mli b/eio/websocketaf_eio.mli index f0afbe81..85d03b6e 100644 --- a/eio/websocketaf_eio.mli +++ b/eio/websocketaf_eio.mli @@ -6,7 +6,8 @@ module Server : sig : ?config : Httpaf.Config.t -> websocket_handler : (Eio.Net.Sockaddr.stream -> Wsd.t -> Websocket_connection.input_handlers) -> error_handler : (Eio.Net.Sockaddr.stream -> Server_connection.error_handler) - -> (Eio.Net.Sockaddr.stream -> Eio.Flow.two_way -> unit) + -> sw:Eio.Switch.t + -> (Eio.Net.Sockaddr.stream -> #Eio.Flow.two_way -> unit) end module Client : sig @@ -22,7 +23,7 @@ module Client : sig -> resource : string -> error_handler : (Client_connection.error -> unit) -> websocket_handler : (Wsd.t -> Websocket_connection.input_handlers) - -> Eio.Flow.two_way + -> #Eio.Flow.two_way -> t val is_closed : t -> bool diff --git a/examples/eio/echo_server.ml b/examples/eio/echo_server.ml index ef0a7c90..67e5f497 100644 --- a/examples/eio/echo_server.ml +++ b/examples/eio/echo_server.ml @@ -1,4 +1,4 @@ -let connection_handler : Eio.Net.Sockaddr.stream -> Eio.Net.stream_socket -> unit = +let connection_handler ~sw : Eio.Net.Sockaddr.stream -> Eio.Net.stream_socket -> unit = let module Body = Httpaf.Body in let module Headers = Httpaf.Headers in let module Reqd = Httpaf.Reqd in @@ -42,6 +42,7 @@ let connection_handler : Eio.Net.Sockaddr.stream -> Eio.Net.stream_socket -> uni ?config:None ~websocket_handler ~error_handler + ~sw let () = @@ -69,7 +70,7 @@ let () = while true do Eio.Net.accept_fork socket ~sw ~on_error:(fun _ -> assert false) (fun client_sock client_addr -> (* let p, u = Eio.Promise.create () in *) - connection_handler client_addr client_sock) + connection_handler ~sw client_addr client_sock) done; `Stop_daemon))) done; diff --git a/examples/eio/echo_server_upgrade.ml b/examples/eio/echo_server_upgrade.ml index 1d261b77..bea1e77c 100644 --- a/examples/eio/echo_server_upgrade.ml +++ b/examples/eio/echo_server_upgrade.ml @@ -103,7 +103,7 @@ let () = while true do Eio.Net.accept_fork socket ~sw ~on_error:(fun _ -> assert false) (fun client_sock client_addr -> (* let p, u = Eio.Promise.create () in *) - connection_handler client_addr client_sock) + connection_handler ~sw client_addr client_sock) done; `Stop_daemon))) done; diff --git a/flake.lock b/flake.lock index c2c2860b..1a0fe38b 100644 --- a/flake.lock +++ b/flake.lock @@ -1,12 +1,15 @@ { "nodes": { "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1687709756, + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", "type": "github" }, "original": { @@ -17,11 +20,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1678109515, - "narHash": "sha256-C2X+qC80K2C1TOYZT8nabgo05Dw2HST/pSn6s+n6BO8=", + "lastModified": 1687178632, + "narHash": "sha256-HS7YR5erss0JCaUijPeyg2XrisEb959FIct3n2TMGbE=", "owner": "numtide", "repo": "nix-filter", - "rev": "aa9ff6ce4a7f19af6415fb3721eaa513ea6c763c", + "rev": "d90c75e8319d0dd9be67d933d8eb9d0894ec9174", "type": "github" }, "original": { @@ -38,32 +41,33 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1678411924, - "narHash": "sha256-WMaDh78yZyS5NAV5sESSjSbSUsM+D4UF4PdZ9/1VF9o=", + "lastModified": 1688874406, + "narHash": "sha256-D+cbqCLZ7bOlSbf+lshMuBwQ5uXcp8IG/4tAfA32KjY=", "owner": "anmonteiro", "repo": "nix-overlays", - "rev": "631dddbcbb2c6314fe804b014e4793cab3f47799", + "rev": "7f1558c4fef22bd20cbe636d9f86942281bf24f2", "type": "github" }, "original": { "owner": "anmonteiro", + "ref": "anmonteiro/update-gluten-piaf", "repo": "nix-overlays", "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1678391195, - "narHash": "sha256-OYgv21pWLws7sbVLxvFiPwdGLMv4B/4CN1pnsbWRxtU=", + "lastModified": 1688784496, + "narHash": "sha256-s/EWMtzAJhS0gicB3epoKpAEooRdcZwsS24yqOQsX4s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b0e4a1d6f0c5baac6b2c246ca3122d8c803be999", + "rev": "038752b14eab3aa316537ae67d7c470b37e27fa3", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "b0e4a1d6f0c5baac6b2c246ca3122d8c803be999", + "rev": "038752b14eab3aa316537ae67d7c470b37e27fa3", "type": "github" } }, @@ -73,6 +77,21 @@ "nix-filter": "nix-filter", "nixpkgs": "nixpkgs" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index fa44f223..10090953 100644 --- a/flake.nix +++ b/flake.nix @@ -4,12 +4,12 @@ inputs.nix-filter.url = "github:numtide/nix-filter"; inputs.flake-utils.url = "github:numtide/flake-utils"; inputs.nixpkgs.inputs.flake-utils.follows = "flake-utils"; - inputs.nixpkgs.url = "github:anmonteiro/nix-overlays"; + inputs.nixpkgs.url = "github:anmonteiro/nix-overlays/anmonteiro/update-gluten-piaf"; outputs = { self, nixpkgs, flake-utils, nix-filter }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages."${system}".extend (self: super: { + pkgs = nixpkgs.legacyPackages.${system}.extend (self: super: { ocamlPackages = super.ocaml-ng.ocamlPackages_5_0; }); in