@@ -25,10 +25,6 @@ let raise_rpc_error (e : Rpc_error.t) =
2525 ]
2626;;
2727
28- type ('a, 'b) message_kind =
29- | Request : ('a , 'b ) Dune_rpc.Decl .request -> ('a , 'b ) message_kind
30- | Notification : 'a Dune_rpc.Decl .notification -> ('a , unit ) message_kind
31-
3228let request_exn client request arg =
3329 let * decl =
3430 Client.Versioned. prepare_request client (Dune_rpc.Decl.Request. witness request)
@@ -49,18 +45,6 @@ let notify_exn client notification arg =
4945 | Error e -> raise (Dune_rpc.Version_error. E e)
5046;;
5147
52- let prepare_message_and_send : type b . Client. t -> ('a , b ) message_kind -> 'a -> b Fiber. t
53- =
54- fun client message arg ->
55- match message with
56- | Notification witness -> notify_exn client witness arg
57- | Request witness ->
58- let + res = request_exn client witness arg in
59- (match res with
60- | Ok (result : b ) -> result
61- | Error e -> raise_rpc_error e)
62- ;;
63-
6448let client_term builder f =
6549 let builder = Common.Builder. forbid_builds builder in
6650 let builder = Common.Builder. disable_log_file builder in
@@ -109,22 +93,47 @@ let warn_ignore_arguments lock_held_by =
10993 ]
11094;;
11195
112- let fire_message
96+ let should_warn ~warn_forwarding ~builder =
97+ warn_forwarding && not (Common.Builder. equal builder Common.Builder. default)
98+ ;;
99+
100+ let send_request ~f connection name =
101+ Dune_rpc_impl.Client. client
102+ connection
103+ (Dune_rpc.Initialize.Request. create ~id: (Dune_rpc.Id. make (Sexp. Atom name)))
104+ ~f
105+ ;;
106+
107+ let fire_request
113108 ~name
114109 ~wait
115110 ?(warn_forwarding = true )
116111 ?(lock_held_by = Dune_util.Global_lock.Lock_held_by. Unknown )
117112 builder
118- message
113+ request
119114 arg
120115 =
121116 let * connection = establish_client_session ~wait in
122- if warn_forwarding && not (Common.Builder. equal builder Common.Builder. default)
123- then warn_ignore_arguments lock_held_by;
124- Dune_rpc_impl.Client. client
125- connection
126- (Dune_rpc.Initialize.Request. create ~id: (Dune_rpc.Id. make (Sexp. Atom name)))
127- ~f: (fun client -> prepare_message_and_send client message arg)
117+ if should_warn ~warn_forwarding ~builder then warn_ignore_arguments lock_held_by;
118+ send_request connection name ~f: (fun client ->
119+ let + res = request_exn client request arg in
120+ match res with
121+ | Ok result -> result
122+ | Error e -> raise_rpc_error e)
123+ ;;
124+
125+ let fire_notification
126+ ~name
127+ ~wait
128+ ?(warn_forwarding = true )
129+ ?(lock_held_by = Dune_util.Global_lock.Lock_held_by. Unknown )
130+ builder
131+ notification
132+ arg
133+ =
134+ let * connection = establish_client_session ~wait in
135+ if should_warn ~warn_forwarding ~builder then warn_ignore_arguments lock_held_by;
136+ send_request connection name ~f: (fun client -> notify_exn client notification arg)
128137;;
129138
130139let wrap_build_outcome_exn ~print_on_success build_outcome =
0 commit comments