uasyncio: Add StreamWriter.get_extra_info() to get peername.

This is the standard way of getting the name of the client that is
connected.
pull/26/head
Damien George 2015-06-03 13:25:27 +00:00
rodzic b8092c1838
commit 72d1f5ecfa
1 zmienionych plików z 8 dodań i 3 usunięć

Wyświetl plik

@ -95,8 +95,9 @@ class StreamReader:
class StreamWriter:
def __init__(self, s):
def __init__(self, s, extra):
self.s = s
self.extra = extra
def awrite(self, buf):
# This method is called awrite (async write) to not proliferate
@ -130,6 +131,9 @@ class StreamWriter:
yield IOWriteDone(self.s)
self.s.close()
def get_extra_info(self, name, default=None):
return self.extra.get(name, default)
def __repr__(self):
return "<StreamWriter %r>" % self.s
@ -153,7 +157,7 @@ def open_connection(host, port):
assert s2.fileno() == s.fileno()
if __debug__:
log.debug("open_connection: After iowait: %s", s)
return StreamReader(s), StreamWriter(s)
return StreamReader(s), StreamWriter(s, {})
def start_server(client_coro, host, port, backlog=10):
@ -176,7 +180,8 @@ def start_server(client_coro, host, port, backlog=10):
s2.setblocking(False)
if __debug__:
log.debug("start_server: After accept: %s", s2)
yield client_coro(StreamReader(s2), StreamWriter(s2))
extra = {"peername": client_addr}
yield client_coro(StreamReader(s2), StreamWriter(s2, extra))
import uasyncio.core