# find an un-used connection for this host
connection = next(
(conn for conn in connections if not conn.in_use), None)
+ #if connection:
+ # log.debug('reusing %s', connection)
if connection is None:
# disconnect the least-recently-used un-used connection to make space
# for a new connection. There will be at least one.
if not conn.in_use:
await conn.close()
break
-
- log.debug('about to connect %s', host)
- reader, writer = await asyncio.wait_for(
- asyncio.open_connection(server, port),
- timeout
- )
- log.info('Connected to %s:%s', host[0], host[1])
+ if server[0] in ['/', '@']:
+ log.debug('about to connect unix socket %s', server)
+ reader, writer = await asyncio.wait_for(
+ asyncio.open_unix_connection(path=server),
+ timeout
+ )
+ else:
+ log.debug('about to connect tcp socket %s:%s', *host)
+ reader, writer = await asyncio.wait_for(
+ asyncio.open_connection(server, port),
+ timeout
+ )
+ #log.debug('Connected to %s:%s', host[0], host[1])
connection = Connection(self, host, reader, writer)
await connection._hello()
connections.append(connection)
"""Close all connections"""
connections = [c for cs in self._connections.values() for c in cs]
self._connections = OrderedDict()
+ log.info('Closing all connections')
for connection in connections:
await connection.close()
self.version = rcv.split('\n')[0][len(HELLO_PREFIX):]
log.info('protocol version: %s', self.version)
-
def __getattr__(self, name: str) -> Any:
"""All unknown attributes are delegated to the reader and writer"""
if self._closed or not self.in_use: