Utility to write network protocol parser without any I/O
Project description
Utility library to write network protocol parser, sans I/O.
Ohne I/O (without I/O in German) is a library using asyncio corouting programming style.
ohneio allows you to write protocol parsers the way you would write an asyncio protocol:
>>> import base64
>>> import ohneio
>>>
>>> def wait_for(s):
... while True:
... data = yield from ohneio.peek()
... pos = data.find(s)
... if pos >= 0:
... return pos
... yield from ohneio.wait()
...
>>> def read_until(s):
... pos = yield from wait_for(s)
... data = yield from ohneio.read(pos)
... return data
...
>>> @ohneio.protocol
... def echo_base64(separator):
... while True:
... segment = yield from read_until(separator)
... yield from ohneio.read(len(separator))
... yield from ohneio.write(base64.b64encode(segment) + separator)
...
>>> connection = echo_base64(b'\r\n')
>>> connection.send(b'hello')
>>> connection.read()
b''
>>> connection.send(b'\r\nworld\r\n')
>>> connection.read()
b'aGVsbG8=\r\nd29ybGQ=\r\n'
The example above also shows how ohneio allows you to combine primitives into bigger parsing functions (like wait_for and read_until).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ohneio-0.8.1.tar.gz
(3.5 kB
view hashes)