Skip to content

Commit

Permalink
simplify acceptor setup logic
Browse files Browse the repository at this point in the history
After reading run_until_complete doc :)
  • Loading branch information
Jim Fulton committed Jul 7, 2016
1 parent edb198a commit b4ecd30
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions src/ZEO/asyncio/server.py
Expand Up @@ -224,22 +224,19 @@ def __init__(self, storage_server, addr, ssl):
cr = loop.create_unix_server(self.factory, addr, ssl=ssl)

f = asyncio.async(cr, loop=loop)
server = loop.run_until_complete(f)

self.server = server
if isinstance(addr, tuple) and addr[1] == 0:
addrs = [s.getsockname() for s in server.sockets]
addrs = [a for a in addrs if len(a) == len(addr)]
if addrs:
self.addr = addrs[0]
else:
self.addr = server.sockets[0].getsockname()[:len(addr)]

@f.add_done_callback
def listenting(f):
server = f.result()
self.server = server
if isinstance(addr, tuple) and addr[1] == 0:
addrs = [s.getsockname() for s in server.sockets]
addrs = [a for a in addrs if len(a) == len(addr)]
if addrs:
self.addr = addrs[0]
else:
self.addr = server.sockets[0].getsockname()[:len(addr)]
logger.info("listening on %s", str(addr))

loop.run_until_complete(f)

def factory(self):
try:
logger.debug("Accepted connection")
Expand Down

0 comments on commit b4ecd30

Please sign in to comment.