async def register_with_response(self, events): """Register events Each `RegisterEvent` from `events` is paired with results `Event` if new event was successfuly created or `None` is new event could not be created. Args: events (List[common.RegisterEvent]): register events Returns: List[Optional[common.Event]] Raises: chatter.ConnectionClosedError: closed chatter connection Exception """ conv = self._conn.send(chatter.Data( module='HatEvent', type='MsgRegisterReq', data=[common.register_event_to_sbs(i) for i in events]), last=False) response_future = asyncio.Future() self._conv_futures[conv] = response_future return await response_future
async def test_client_register(server_address): register_events = [ common.RegisterEvent(event_type=('a', 'b', 'c'), source_timestamp=common.now(), payload=common.EventPayload( common.EventPayloadType.JSON, i)) for i in range(10) ] server = await create_server(server_address) client = await hat.event.client.connect(server_address) conn = await server.get_connection() client.register([]) msg = await conn.receive() assert msg.first is True assert msg.last is True assert msg.data == chatter.Data('HatEvent', 'MsgRegisterReq', []) client.register(register_events) msg = await conn.receive() assert msg.first is True assert msg.last is True assert msg.data == chatter.Data( 'HatEvent', 'MsgRegisterReq', [common.register_event_to_sbs(i) for i in register_events]) await conn.async_close() await client.async_close() await server.async_close() with pytest.raises(ConnectionError): client.register(register_events)
def register(self, events: typing.List[common.RegisterEvent]): """Register events Raises: ConnectionError """ msg_data = chatter.Data( module='HatEvent', type='MsgRegisterReq', data=[common.register_event_to_sbs(i) for i in events]) self._conn.send(msg_data)
async def test_client_register_with_response(server_address): register_events = [ common.RegisterEvent(event_type=('a', 'b', 'c'), source_timestamp=common.now(), payload=common.EventPayload( common.EventPayloadType.JSON, i)) for i in range(10) ] events = [ common.Event(event_id=common.EventId(1, 2), event_type=register_event.event_type, timestamp=common.now(), source_timestamp=register_event.source_timestamp, payload=register_event.payload) for register_event in register_events ] events = [event if i % 2 else None for i, event in enumerate(events)] server = await create_server(server_address) client = await hat.event.client.connect(server_address) conn = await server.get_connection() register_future = asyncio.ensure_future(client.register_with_response([])) msg = await conn.receive() assert msg.first is True assert msg.last is False assert msg.data == chatter.Data('HatEvent', 'MsgRegisterReq', []) assert not register_future.done() conn.send_register_res(msg.conv, []) received = await register_future assert received == [] register_future = asyncio.ensure_future( client.register_with_response(register_events)) msg = await conn.receive() assert msg.first is True assert msg.last is False assert msg.data == chatter.Data( 'HatEvent', 'MsgRegisterReq', [common.register_event_to_sbs(i) for i in register_events]) assert not register_future.done() conn.send_register_res(msg.conv, events) received = await register_future assert received == events await conn.async_close() await client.async_close() await server.async_close() with pytest.raises(ConnectionError): await client.register_with_response(register_events)
def register(self, events): """Register events Args: events (List[common.RegisterEvent]): register events Raises: chatter.ConnectionClosedError: closed chatter connection Exception """ self._conn.send( chatter.Data( module='HatEvent', type='MsgRegisterReq', data=[common.register_event_to_sbs(i) for i in events]))
async def register_with_response( self, events: typing.List[common.RegisterEvent] ) -> typing.List[typing.Optional[common.Event]]: # NOQA """Register events Each `common.RegisterEvent` from `events` is paired with results `common.Event` if new event was successfuly created or ``None`` is new event could not be created. Raises: ConnectionError """ msg_data = chatter.Data( module='HatEvent', type='MsgRegisterReq', data=[common.register_event_to_sbs(i) for i in events]) conv = self._conn.send(msg_data, last=False) return await self._wait_conv_res(conv)