def initialize(cls): signal_callback_map = dict(GET_SIGNAL=cls.do_get, CREATE_SIGNAL=cls.do_create, UPDATE_SIGNAL=cls.do_update, DELETE_SIGNAL=cls.do_delete, CREATE_OR_UPDATE=cls.do_create_or_update) for signal, callback in signal_callback_map.items(): if getattr(cls, signal, None): dispatcher.register(callback, getattr(cls, signal))
def initialize(cls): signal_callback_map = dict( GET_SIGNAL=cls.do_get, CREATE_SIGNAL=cls.do_create, UPDATE_SIGNAL=cls.do_update, DELETE_SIGNAL=cls.do_delete, CREATE_OR_UPDATE=cls.do_create_or_update ) for signal, callback in signal_callback_map.items(): if getattr(cls, signal, None): dispatcher.register(callback, getattr(cls, signal))
def _delete(cls, data): task_id = cls.get_task_id(data) future = asyncio.Future() def callback(signal, data, taskid=None): if taskid == task_id: future.set_result(data) dispatcher.register(callback, signal=cls.DELETED_SIGNAL) dispatcher.send(cls.DELETE_SIGNAL, data, taskid=task_id) result = yield from future return result
def _get(cls, data): task_id = cls.get_task_id(data) fut = asyncio.Future() def callback(signal, data, taskid=None): if taskid == task_id: fut.set_result(data) dispatcher.register(callback, signal=cls.GOT_SIGNAL) dispatcher.send(cls.GET_SIGNAL, data, taskid=task_id) result = yield from fut return fut.result()
dispatcher.register(callback, signal=cls.GOT_SIGNAL) dispatcher.send(cls.GET_SIGNAL, data, taskid=task_id) result = yield from fut return fut.result() @classmethod def _create(cls, data, async=False): task_id = cls.get_task_id(data) fut = asyncio.Future() def callback(signal, data, taskid=None): if taskid == task_id: fut.set_result(data) dispatcher.register(callback, signal=cls.CREATED_SIGNAL) dispatcher.send(cls.CREATE_SIGNAL, data, taskid=task_id) result = yield from fut return fut.result() @classmethod def _update(cls, data): task_id = cls.get_task_id(data) future = asyncio.Future() def callback(signal, data, taskid=None): if taskid == task_id: future.set_result(data) dispatcher.register(callback, signal=cls.UPDATED_SIGNAL) dispatcher.send(cls.UPDATE_SIGNAL, data, taskid=task_id)