%PDF- %PDF-
Direktori : /data/old/usr/lib/python3.4/site-packages/aioh2/ |
Current File : //data/old/usr/lib/python3.4/site-packages/aioh2/helper.py |
import socket import asyncio from .protocol import H2Protocol __all__ = ['open_connection', 'start_server'] if hasattr(socket, 'AF_UNIX'): __all__.extend(['open_unix_connection', 'start_unix_server']) PROTOCOL_KWARGS = ('concurrency', 'functional_timeout') class _None: pass def _split_kwargs(kwargs): rv = {} for key in PROTOCOL_KWARGS: val = kwargs.pop(key, _None) if val is not _None: rv[key] = val return rv @asyncio.coroutine def open_connection(host=None, port=None, *, cls=H2Protocol, loop=None, **kwargs): if loop is None: loop = asyncio.get_event_loop() # noinspection PyArgumentList rv = cls(True, loop=loop, **_split_kwargs(kwargs)) # noinspection PyArgumentList yield from loop.create_connection(lambda: rv, host, port, **kwargs) return rv @asyncio.coroutine def start_server(client_connected_cb, host=None, port=None, *, cls=H2Protocol, loop=None, **kwargs): if loop is None: loop = asyncio.get_event_loop() args = _split_kwargs(kwargs) def factory(): # noinspection PyArgumentList rv = cls(False, loop=loop, **args) rv.set_handler(client_connected_cb(rv)) return rv # noinspection PyArgumentList return (yield from loop.create_server(factory, host, port, **kwargs)) if hasattr(socket, 'AF_UNIX'): @asyncio.coroutine def open_unix_connection(path=None, *, loop=None, **kwargs): if loop is None: loop = asyncio.get_event_loop() # noinspection PyArgumentList rv = H2Protocol(True, loop=loop, **_split_kwargs(kwargs)) # noinspection PyArgumentList yield from loop.create_unix_connection(lambda: rv, path, **kwargs) return rv @asyncio.coroutine def start_unix_server(client_connected_cb, path=None, *, loop=None, **kwargs): if loop is None: loop = asyncio.get_event_loop() args = _split_kwargs(kwargs) def factory(): # noinspection PyArgumentList rv = H2Protocol(False, loop=loop, **args) rv.set_handler(client_connected_cb(rv)) return rv # noinspection PyArgumentList return (yield from loop.create_unix_server(factory, path, **kwargs)) if hasattr(asyncio, 'ensure_future'): # Python >= 3.5 async_task = asyncio.ensure_future else: async_task = asyncio.async