async def main(): server = Server(port=12001) server.start() # Create endpoints # /foo accepts an int, a float, and a MIDI packet foo = server.route('/foo', [int, float, Midi]) ex = server.route('/exit') address = Address(port=12001) for i in range(5): address.send(foo, i, float(i), Midi(i, i, i, i)) # Notify subscriptions to exit in 1 sec address.delay(1, ex) # Subscribe to messages for any of the routes subs = foo.sub() | ex.sub() async for route, data in subs: print(f'echo_server: {str(route.path)} received {data}') if route == ex: await subs.unsub() server.stop()
async def test_bundle_delayed(server): address = Address(url=server.url) foo = server.route('/foo', 's') task = create_task(subscribe(foo.sub(), 1)) address.bundle([ Message(foo, 'now'), Bundle([Message(foo, 'later')], timetag=now() + datetime.timedelta(seconds=0.5)) ]) address.delay(1, foo, 'later than later') results = list(await task) assert results == [['now']] assert server.events_pending assert 0 < server.next_event_delay < 1 task = create_task(subscribe(foo.sub(), 1)) results = list(await task) assert results == [['later']] assert server.events_pending assert 0 < server.next_event_delay < 1 task = create_task(subscribe(foo.sub(), 1)) results = list(await task) assert results == [['later than later']] assert not server.events_pending