Exemple #1
0
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()
Exemple #2
0
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