protocol.ml1 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109(** Async_rpc protocol types, for internal use only *) (* WARNING: do not change any of these types without good reason *) open Bin_prot.Std open Sexplib.Std module Rpc_tag : Core_kernel.Identifiable = Core_kernel.String module Query_id = Core_kernel.Unique_id.Int63 () module Unused_query_id : sig type t [@@deriving bin_io, sexp_of] val t : t end = struct type t = Query_id.t [@@deriving bin_io, sexp_of] let t = Query_id.create () end module Rpc_error : sig open Core_kernel type t = | Bin_io_exn of Sexp.t | Connection_closed | Write_error of Sexp.t | Uncaught_exn of Sexp.t | Unimplemented_rpc of Rpc_tag.t * [`Version of int] | Unknown_query_id of Query_id.t [@@deriving bin_io, sexp, compare] include Comparable.S with type t := t end = struct module T = struct type t = | Bin_io_exn of Core_kernel.Sexp.t | Connection_closed | Write_error of Core_kernel.Sexp.t | Uncaught_exn of Core_kernel.Sexp.t | Unimplemented_rpc of Rpc_tag.t * [`Version of Core_kernel.Int.Stable.V1.t] | Unknown_query_id of Query_id.t [@@deriving bin_io, sexp, compare] let%expect_test "stable" = print_endline [%bin_digest: t]; [%expect {| 8cc766befa2cf565ea147d9fcd5eaaab |}] ;; end include T include Core_kernel.Comparable.Make(T) end module Rpc_result = struct type 'a t = ('a, Rpc_error.t) Core_kernel.Result.t [@@deriving bin_io, sexp_of] end module Header = Protocol_version_header module Query = struct type 'a needs_length = { tag : Rpc_tag.t ; version : int ; id : Query_id.t ; data : 'a } [@@deriving bin_io, sexp_of] type 'a t = 'a needs_length [@@deriving bin_read] end module Response = struct type 'a needs_length = { id : Query_id.t ; data : 'a Rpc_result.t } [@@deriving bin_io, sexp_of] type 'a t = 'a needs_length [@@deriving bin_read] end module Stream_query = struct type 'a needs_length = [`Query of 'a | `Abort ] [@@deriving bin_io] type 'a t = 'a needs_length [@@deriving bin_read] type nat0_t = Nat0.t needs_length [@@deriving bin_read, bin_write] end module Stream_initial_message = struct type ('response, 'error) t = { unused_query_id : Unused_query_id.t ; initial : ('response, 'error) Core_kernel.Result.t } [@@deriving bin_io, sexp_of] end module Stream_response_data = struct type 'a needs_length = [`Ok of 'a | `Eof] [@@deriving bin_io] type 'a t = 'a needs_length [@@deriving bin_read] type nat0_t = Nat0.t needs_length [@@deriving bin_read, bin_write] end module Message = struct type 'a needs_length = | Heartbeat | Query of 'a Query. needs_length | Response of 'a Response.needs_length [@@deriving bin_io, sexp_of] type 'a t = 'a needs_length [@@deriving bin_read, sexp_of] type nat0_t = Nat0.t needs_length [@@deriving bin_read, bin_write] end