Esempio n. 1
0
    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)
         )
     )
Esempio n. 4
0
 def complete(self, cbid: str, err: Optional[str], result: Any) -> Any:
     return self.provider.complete(
         CompleteRequest(cbid=cbid, err=err, result=result))