def service(self, group, method, context, output_operator): adapted_method = self._adapted_methods.get((group, method), None) if adapted_method is not None: return adapted_method(output_operator, context) elif self._adapted_multi_method is not None: try: return self._adapted_multi_method(group, method, output_operator, context) except face.NoSuchMethodError: raise base.NoSuchMethodError(None, None) else: raise base.NoSuchMethodError(None, None)
def service(self, group, method, context, output_operator): try: return self._delegate.service(group, method, context, output_operator) except base.NoSuchMethodError as e: if e.code is None and e.details is None: raise base.NoSuchMethodError( interfaces.StatusCode.UNIMPLEMENTED, b'Method "%s" of service "%s" not implemented!' % (method, group)) else: raise
def service(self, group, method, context, output_operator): with self._condition: controller = self._controllers.pop(0) if group != self._group or method != self._method: controller.fail('%s != %s or %s != %s' % (group, self._group, method, self._method)) raise base.NoSuchMethodError() else: operator = _Operator(controller, controller.on_service_advance, self._pool, output_operator) outcome = context.add_termination_callback( controller.service_on_termination) if outcome is not None: controller.service_on_termination(outcome) return utilities.full_subscription(operator)