iofree package¶
iofree is an easy-to-use and powerful library to help you implement network protocols and binary parsers.
-
class
iofree.LinkedNode(parser: iofree.Parser, next_: Optional[LinkedNode])[source]¶ Bases:
object-
next¶
-
parser¶
-
-
class
iofree.Parser(gen: Generator)[source]¶ Bases:
object-
property
has_result¶
-
respond(*, data: bytes = b'', close: bool = False, exc: Optional[Exception] = None, result: Any = <object object>) → None[source]¶ produce some event data to interact with a stream: data: bytes to send to the peer close: whether the socket should be closed exc: raise an exception to break the loop result: result to return
-
property
-
class
iofree.ParserChain(*parsers: iofree.Parser)[source]¶ Bases:
object
-
iofree.get_parser() → Generator[tuple, iofree.Parser, iofree.Parser][source]¶ get current parser object
-
iofree.peek(nbytes: int = 1, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ peek many bytes without taking them away from buffer
-
iofree.read(nbytes: int = 0, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ if nbytes = 0, read as many as possible, empty bytes is valid; if nbytes > 0, read exactly
nbytes
-
iofree.read_int(nbytes: int, byteorder: str = 'big', *, signed: bool = False, from_=None) → Generator[tuple, int, int][source]¶ read some bytes as integer
-
iofree.read_more(nbytes: int = 1, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ read at least
nbytes
-
iofree.read_raw_struct(struct_obj: Struct, *, from_=None) → Generator[tuple, tuple, tuple][source]¶ read raw struct formatted data
-
iofree.read_struct(fmt: str, *, from_=None) → Generator[tuple, tuple, tuple][source]¶ read specific formatted data
-
iofree.read_until(data: bytes, *, return_tail: bool = True, from_=None) → Generator[tuple, bytes, bytes][source]¶ read until some bytes appear