def ainvoke(self, obj: Referenceable, method: str, args: Optional[List[Any]] = None) -> Any: if args is None: args = [] promise = self.provider.begin( BeginRequest( objref=obj.__jsii_ref__, method=method, args=_make_reference_for_native(self, args), )) if isinstance(promise, Callback): promise = _callback_till_result(self, promise, BeginResponse) callbacks = self.provider.callbacks(CallbacksRequest()).callbacks while callbacks: for callback in callbacks: try: result = _handle_callback(self, callback) except Exception as exc: # TODO: Maybe we want to print the whole traceback here? complete = self.provider.complete( CompleteRequest(cbid=callback.cbid, err=str(exc))) else: complete = self.provider.complete( CompleteRequest(cbid=callback.cbid, result=result)) assert complete.cbid == callback.cbid callbacks = self.provider.callbacks(CallbacksRequest()).callbacks return self.provider.end( EndRequest(promiseid=promise.promiseid)).result
def sync_complete( self, cbid: str, err: Optional[str], result: Any, response_type: Type[KernelResponse] ) -> Any: return self.provider.sync_complete( CompleteRequest( cbid=cbid, err=err, result=_make_reference_for_native(self, result)), response_type=response_type )
def complete( self, cbid: str, err: Optional[str], result: Any ) -> Any: return self.provider.complete( CompleteRequest( cbid=cbid, err=err, result=_make_reference_for_native(self, result) ) )
def complete(self, cbid: str, err: Optional[str], result: Any) -> Any: return self.provider.complete( CompleteRequest(cbid=cbid, err=err, result=result))