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).
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
ohneio-0.8.1.tar.gz (3.5 kB) Copy SHA256 hash SHA256 | Source | None | Aug 20, 2016 |