@@ -144,6 +144,36 @@ def route(controller:, action:)
144
144
nil
145
145
end
146
146
147
+ # Delegates a notification to a server add-on
148
+ sig { params ( server_addon_name : String , request_name : String , params : T . untyped ) . void }
149
+ def delegate_notification ( server_addon_name , request_name , **params )
150
+ send_notification (
151
+ "server_addon/delegate" ,
152
+ request_name : request_name ,
153
+ server_addon_name : server_addon_name ,
154
+ **params ,
155
+ )
156
+ end
157
+
158
+ # Delegates a request to a server add-on
159
+ sig do
160
+ params (
161
+ server_addon_name : String ,
162
+ request_name : String ,
163
+ params : T . untyped ,
164
+ ) . returns ( T . nilable ( T ::Hash [ Symbol , T . untyped ] ) )
165
+ end
166
+ def delegate_request ( server_addon_name , request_name , **params )
167
+ make_request (
168
+ "server_addon/delegate" ,
169
+ server_addon_name : server_addon_name ,
170
+ request_name : request_name ,
171
+ **params ,
172
+ )
173
+ rescue IncompleteMessageError
174
+ nil
175
+ end
176
+
147
177
sig { void }
148
178
def trigger_reload
149
179
$stderr. puts ( "Reloading Rails application" )
@@ -172,24 +202,24 @@ def stopped?
172
202
sig do
173
203
params (
174
204
request : String ,
175
- params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ,
205
+ params : T . untyped ,
176
206
) . returns ( T . nilable ( T ::Hash [ Symbol , T . untyped ] ) )
177
207
end
178
- def make_request ( request , params = nil )
179
- send_message ( request , params )
208
+ def make_request ( request , ** params )
209
+ send_message ( request , ** params )
180
210
read_response
181
211
end
182
212
183
213
# Notifications are like messages, but one-way, with no response sent back.
184
- sig { params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
185
- def send_notification ( request , params = nil ) = send_message ( request , params )
214
+ sig { params ( request : String , params : T . untyped ) . void }
215
+ def send_notification ( request , ** params ) = send_message ( request , ** params )
186
216
187
217
private
188
218
189
- sig { overridable . params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
190
- def send_message ( request , params = nil )
219
+ sig { overridable . params ( request : String , params : T . untyped ) . void }
220
+ def send_message ( request , ** params )
191
221
message = { method : request }
192
- message [ :params ] = params if params
222
+ message [ :params ] = params
193
223
json = message . to_json
194
224
195
225
@mutex . synchronize do
@@ -255,8 +285,8 @@ def rails_root
255
285
256
286
private
257
287
258
- sig { override . params ( request : String , params : T . nilable ( T :: Hash [ Symbol , T . untyped ] ) ) . void }
259
- def send_message ( request , params = nil )
288
+ sig { override . params ( request : String , params : T . untyped ) . void }
289
+ def send_message ( request , ** params )
260
290
# no-op
261
291
end
262
292
0 commit comments