示例#1
0
 def _event_handler(self, evt_cls):
     handler_name = name_handler_method(evt_cls)
     try:
         return getattr(self, handler_name)
     except AttributeError:
         self._logger.critical("Missing handler",
                               handler=handler_name,
                               cls=evt_cls.__name__)
         # Raise the exception as it is a developer error
         raise
示例#2
0
 def _dispatch_evt_to_handler(self, evt):
     handler_name = name_handler_method(evt.__class__)
     try:
         getattr(self, handler_name)(evt)
         return
     except DomainError as e:
         self._abort_operation(
             evt.id, str(e), e.details, evt=evt, traceback=traceback.format_exc()
         )
     except Exception as e:
         self._abort_operation(
             evt.id, str(e), {}, evt=evt, traceback=traceback.format_exc()
         )
示例#3
0
 def _dispatch_cmd_to_handler(self, cmd):
     handler_name = name_handler_method(cmd.__class__)
     try_count = 1
     while try_count > 0:
         try:
             getattr(self, handler_name)(cmd)
             return
         except RepoError as e:
             # TODO: Reaching outside of the loop should trigger an error
             self._logger.error("Repo error", cmd=cmd, error=e)
             try_count -= 1
         except DomainError as e:
             self._abort_operation(
                 cmd.id, str(e), e.details, cmd=cmd, traceback=traceback.format_exc()
             )
             return
         except Exception as e:
             self._abort_operation(
                 cmd.id, str(e), {}, cmd=cmd, traceback=traceback.format_exc()
             )
             return
示例#4
0
 def raise_event(self, controller, evt_cls, *args, **kwargs):
     event = evt_cls(*args, **kwargs)
     getattr(controller, name_handler_method(evt_cls))(event)
示例#5
0
 def _default_handler_factory(self, evt_cls):
     handler_name = name_handler_method(evt_cls)
     return getattr(self, handler_name)