@@ -39,6 +39,18 @@ let request_exn client request arg =
3939 | Error e -> raise (Dune_rpc.Version_error. E e)
4040;;
4141
42+ let notify_exn client notification arg =
43+ let open Fiber.O in
44+ let * res =
45+ Client.Versioned. prepare_notification
46+ client
47+ (Dune_rpc.Decl.Notification. witness notification)
48+ in
49+ match res with
50+ | Ok decl -> Client. notification client decl arg
51+ | Error e -> raise (Dune_rpc.Version_error. E e)
52+ ;;
53+
4254let client_term builder f =
4355 let builder = Common.Builder. forbid_builds builder in
4456 let builder = Common.Builder. disable_log_file builder in
@@ -97,6 +109,17 @@ let warn_ignore_arguments lock_held_by =
97109 ]
98110;;
99111
112+ let should_warn ~warn_forwarding builder =
113+ warn_forwarding && not (Common.Builder. equal builder Common.Builder. default)
114+ ;;
115+
116+ let send_request ~f connection name =
117+ Dune_rpc_impl.Client. client
118+ connection
119+ (Dune_rpc.Initialize.Request. create ~id: (Dune_rpc.Id. make (Sexp. Atom name)))
120+ ~f
121+ ;;
122+
100123let fire_request
101124 ~name
102125 ~wait
@@ -108,12 +131,23 @@ let fire_request
108131 =
109132 let open Fiber.O in
110133 let * connection = establish_client_session ~wait in
111- if warn_forwarding && not (Common.Builder. equal builder Common.Builder. default)
112- then warn_ignore_arguments lock_held_by;
113- Dune_rpc_impl.Client. client
114- connection
115- (Dune_rpc.Initialize.Request. create ~id: (Dune_rpc.Id. make (Sexp. Atom name)))
116- ~f: (fun client -> request_exn client request arg)
134+ if should_warn ~warn_forwarding builder then warn_ignore_arguments lock_held_by;
135+ send_request connection name ~f: (fun client -> request_exn client request arg)
136+ ;;
137+
138+ let fire_notification
139+ ~name
140+ ~wait
141+ ?(warn_forwarding = true )
142+ ?(lock_held_by = Dune_util.Global_lock.Lock_held_by. Unknown )
143+ builder
144+ notification
145+ arg
146+ =
147+ let open Fiber.O in
148+ let * connection = establish_client_session ~wait in
149+ if should_warn ~warn_forwarding builder then warn_ignore_arguments lock_held_by;
150+ send_request connection name ~f: (fun client -> notify_exn client notification arg)
117151;;
118152
119153let wrap_build_outcome_exn ~print_on_success build_outcome =
0 commit comments