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:
.. highlight:: python
>>> 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.tar.gz
(3.5 kB
view hashes)