@@ -219,7 +219,7 @@ async def create_poll_or_cancel_coroutine(self, handle) -> bytes | None:
219
219
return self .must_take_notification (handle )
220
220
221
221
# Nothing ready yet, let's try to make some progress
222
- do_progress_response = self .vm .do_progress ([handle , CANCEL_HANDLE ])
222
+ do_progress_response = self .vm .do_progress ([handle ])
223
223
if isinstance (do_progress_response , PyDoProgressAnyCompleted ):
224
224
# One of the handles completed, we can continue
225
225
continue
@@ -339,14 +339,16 @@ def do_call(self,
339
339
key : Optional [str ] = None ,
340
340
send_delay : Optional [timedelta ] = None ,
341
341
send : bool = False ,
342
- idempotency_key : str | None = None ) -> Awaitable [O ] | SendHandle :
342
+ idempotency_key : str | None = None ,
343
+ headers : typing .List [typing .Tuple [str , str ]] | None = None
344
+ ) -> Awaitable [O ] | SendHandle :
343
345
"""Make an RPC call to the given handler"""
344
346
target_handler = handler_from_callable (tpe )
345
347
service = target_handler .service_tag .name
346
348
handler = target_handler .name
347
349
input_serde = target_handler .handler_io .input_serde
348
350
output_serde = target_handler .handler_io .output_serde
349
- return self .do_raw_call (service , handler , parameter , input_serde , output_serde , key , send_delay , send , idempotency_key )
351
+ return self .do_raw_call (service , handler , parameter , input_serde , output_serde , key , send_delay , send , idempotency_key , headers )
350
352
351
353
352
354
def do_raw_call (self ,
@@ -358,23 +360,25 @@ def do_raw_call(self,
358
360
key : Optional [str ] = None ,
359
361
send_delay : Optional [timedelta ] = None ,
360
362
send : bool = False ,
361
- idempotency_key : str | None = None
363
+ idempotency_key : str | None = None ,
364
+ headers : typing .List [typing .Tuple [str , str ]] | None = None
362
365
) -> Awaitable [O ] | SendHandle :
363
366
"""Make an RPC call to the given handler"""
364
367
parameter = input_serde .serialize (input_param )
365
368
if send_delay :
366
369
ms = int (send_delay .total_seconds () * 1000 )
367
- send_handle = self .vm .sys_send (service , handler , parameter , key , delay = ms , idempotency_key = idempotency_key )
370
+ send_handle = self .vm .sys_send (service , handler , parameter , key , delay = ms , idempotency_key = idempotency_key , headers = headers )
368
371
return ServerSendHandle (self , send_handle )
369
372
if send :
370
- send_handle = self .vm .sys_send (service , handler , parameter , key , idempotency_key = idempotency_key )
373
+ send_handle = self .vm .sys_send (service , handler , parameter , key , idempotency_key = idempotency_key , headers = headers )
371
374
return ServerSendHandle (self , send_handle )
372
375
373
376
handle = self .vm .sys_call (service = service ,
374
377
handler = handler ,
375
378
parameter = parameter ,
376
379
key = key ,
377
- idempotency_key = idempotency_key )
380
+ idempotency_key = idempotency_key ,
381
+ headers = headers )
378
382
379
383
async def await_point (s : ServerInvocationContext , h , o : Serde [O ]):
380
384
"""Wait for this handle to be resolved, and deserialize the response."""
@@ -386,52 +390,75 @@ async def await_point(s: ServerInvocationContext, h, o: Serde[O]):
386
390
def service_call (self ,
387
391
tpe : Callable [[Any , I ], Awaitable [O ]],
388
392
arg : I ,
389
- idempotency_key : str | None = None
393
+ idempotency_key : str | None = None ,
394
+ headers : typing .List [typing .Tuple [str , str ]] | None = None
390
395
) -> Awaitable [O ]:
391
- coro = self .do_call (tpe , arg , idempotency_key = idempotency_key )
396
+ coro = self .do_call (tpe , arg , idempotency_key = idempotency_key , headers = headers )
392
397
assert not isinstance (coro , SendHandle )
393
398
return coro
394
399
395
- def service_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None ) -> SendHandle :
396
- send = self .do_call (tpe = tpe , parameter = arg , send_delay = send_delay , send = True , idempotency_key = idempotency_key )
400
+ def service_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None , headers : typing . List [ typing . Tuple [ str , str ]] | None = None ) -> SendHandle :
401
+ send = self .do_call (tpe = tpe , parameter = arg , send_delay = send_delay , send = True , idempotency_key = idempotency_key , headers = headers )
397
402
assert isinstance (send , SendHandle )
398
403
return send
399
404
400
405
def object_call (self ,
401
406
tpe : Callable [[Any , I ],Awaitable [O ]],
402
407
key : str ,
403
408
arg : I ,
404
- idempotency_key : str | None = None
409
+ idempotency_key : str | None = None ,
410
+ headers : typing .List [typing .Tuple [str , str ]] | None = None
405
411
) -> Awaitable [O ]:
406
- coro = self .do_call (tpe , arg , key , idempotency_key = idempotency_key )
412
+ coro = self .do_call (tpe , arg , key , idempotency_key = idempotency_key , headers = headers )
407
413
assert not isinstance (coro , SendHandle )
408
414
return coro
409
415
410
- def object_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], key : str , arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None ) -> SendHandle :
411
- send = self .do_call (tpe = tpe , key = key , parameter = arg , send_delay = send_delay , send = True , idempotency_key = idempotency_key )
416
+ def object_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], key : str , arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None , headers : typing . List [ typing . Tuple [ str , str ]] | None = None ) -> SendHandle :
417
+ send = self .do_call (tpe = tpe , key = key , parameter = arg , send_delay = send_delay , send = True , idempotency_key = idempotency_key , headers = headers )
412
418
assert isinstance (send , SendHandle )
413
419
return send
414
420
415
421
def workflow_call (self ,
416
422
tpe : Callable [[Any , I ], Awaitable [O ]],
417
423
key : str ,
418
424
arg : I ,
419
- idempotency_key : str | None = None
425
+ idempotency_key : str | None = None ,
426
+ headers : typing .List [typing .Tuple [str , str ]] | None = None
420
427
) -> Awaitable [O ]:
421
- return self .object_call (tpe , key , arg , idempotency_key = idempotency_key )
428
+ return self .object_call (tpe , key , arg , idempotency_key = idempotency_key , headers = headers )
422
429
423
- def workflow_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], key : str , arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None ) -> SendHandle :
424
- send = self .object_send (tpe , key , arg , send_delay , idempotency_key = idempotency_key )
430
+ def workflow_send (self , tpe : Callable [[Any , I ], Awaitable [O ]], key : str , arg : I , send_delay : timedelta | None = None , idempotency_key : str | None = None , headers : typing . List [ typing . Tuple [ str , str ]] | None = None ) -> SendHandle :
431
+ send = self .object_send (tpe , key , arg , send_delay , idempotency_key = idempotency_key , headers = headers )
425
432
assert isinstance (send , SendHandle )
426
433
return send
427
434
428
- def generic_call (self , service : str , handler : str , arg : bytes , key : str | None = None , idempotency_key : str | None = None ) -> Awaitable [bytes ]:
435
+ def generic_call (self , service : str , handler : str , arg : bytes , key : str | None = None , idempotency_key : str | None = None , headers : typing . List [ typing . Tuple [ str , str ]] | None = None ) -> Awaitable [bytes ]:
429
436
serde = BytesSerde ()
430
- return self .do_raw_call (service , handler , arg , serde , serde , key , idempotency_key ) # type: ignore
431
-
432
- def generic_send (self , service : str , handler : str , arg : bytes , key : str | None = None , send_delay : timedelta | None = None , idempotency_key : str | None = None ) -> SendHandle :
437
+ call_handle = self .do_raw_call (service = service ,
438
+ handler = handler ,
439
+ input_param = arg ,
440
+ input_serde = serde ,
441
+ output_serde = serde ,
442
+ key = key ,
443
+ idempotency_key = idempotency_key ,
444
+ headers = headers )
445
+ assert not isinstance (call_handle , SendHandle )
446
+ return call_handle
447
+
448
+ def generic_send (self , service : str , handler : str , arg : bytes , key : str | None = None , send_delay : timedelta | None = None , idempotency_key : str | None = None , headers : typing .List [typing .Tuple [str , str ]] | None = None ) -> SendHandle :
433
449
serde = BytesSerde ()
434
- return self .do_raw_call (service , handler , arg , serde , serde , key , send_delay , True , idempotency_key ) # type: ignore
450
+ send_handle = self .do_raw_call (service = service ,
451
+ handler = handler ,
452
+ input_param = arg ,
453
+ input_serde = serde ,
454
+ output_serde = serde ,
455
+ key = key ,
456
+ send_delay = send_delay ,
457
+ send = True ,
458
+ idempotency_key = idempotency_key ,
459
+ headers = headers )
460
+ assert isinstance (send_handle , SendHandle )
461
+ return send_handle
435
462
436
463
def awakeable (self ,
437
464
serde : typing .Optional [Serde [I ]] = JsonSerde ()) -> typing .Tuple [str , Awaitable [Any ]]:
0 commit comments