Exemple #1
0
    def traceback(self, timeout=None):
        """See future.Future.traceback for specification."""
        with self._condition:
            if self._cancelled:
                raise future.CancelledError()
            if self._computed:
                return self._traceback

            condition = threading.Condition()

            def notify_condition(unused_future):
                with condition:
                    condition.notify()

            self._callbacks.append(notify_condition)

        with condition:
            condition.wait(timeout=timeout)

        with self._condition:
            if self._cancelled:
                raise future.CancelledError()
            elif self._computed:
                return self._traceback
            else:
                raise future.TimeoutError()
 def traceback(self, timeout=None):
     try:
         return self._future.traceback(timeout=timeout)
     except grpc.FutureTimeoutError:
         raise future.TimeoutError()
     except grpc.FutureCancelledError:
         raise future.CancelledError()
Exemple #3
0
    def result(self, timeout=None):
        """See future.Future.result for specification."""
        with self._condition:
            if self._cancelled:
                raise future.CancelledError()
            if self._computed:
                if self._payload is None:
                    raise self._exception  # pylint: disable=raising-bad-type
                else:
                    return self._payload

            condition = threading.Condition()

            def notify_condition(unused_future):
                with condition:
                    condition.notify()

            self._callbacks.append(notify_condition)

        with condition:
            condition.wait(timeout=timeout)

        with self._condition:
            if self._cancelled:
                raise future.CancelledError()
            elif self._computed:
                if self._payload is None:
                    raise self._exception  # pylint: disable=raising-bad-type
                else:
                    return self._payload
            else:
                raise future.TimeoutError()
Exemple #4
0
    def exception(self, timeout=None):
        """See future.Future.exception for specification."""
        with self._lock:
            if self._cancelled:
                raise future.CancelledError()
            elif self._computed:
                return self._exception

            condition = threading.Condition()

            def notify_condition(unused_future):
                with condition:
                    condition.notify()

            self._waiting.append(notify_condition)

        with condition:
            condition.wait(timeout=timeout)

        with self._lock:
            if self._cancelled:
                raise future.CancelledError()
            elif self._computed:
                return self._exception
            else:
                raise future.TimeoutError()
Exemple #5
0
 def exception(self, timeout=None):
     try:
         rpc_error_call = self._future.exception(timeout=timeout)
         return _abortion_error(rpc_error_call)
     except grpc.FutureTimeoutError:
         raise future.TimeoutError()
     except grpc.FutureCancelledError:
         raise future.CancelledError()
 def result(self, timeout=None):
     try:
         return self._future.result(timeout=timeout)
     except grpc.RpcError as rpc_error_call:
         raise _abortion_error(rpc_error_call)
     except grpc.FutureTimeoutError:
         raise future.TimeoutError()
     except grpc.FutureCancelledError:
         raise future.CancelledError()
Exemple #7
0
def _wait_once_until(condition, until):
    if until is None:
        condition.wait()
    else:
        remaining = until - time.time()
        if remaining < 0:
            raise future.TimeoutError()
        else:
            condition.wait(timeout=remaining)
 def _block(self, timeout):
     until = None if timeout is None else time.time() + timeout
     with self._condition:
         while True:
             if self._cancelled:
                 raise future.CancelledError()
             elif self._matured:
                 return
             else:
                 if until is None:
                     self._condition.wait()
                 else:
                     remaining = until - time.time()
                     if remaining < 0:
                         raise future.TimeoutError()
                     else:
                         self._condition.wait(timeout=remaining)