add get_peer_info() and close() coroutines

pull/8/head
Nicolas Jouanin 2015-08-01 22:15:56 +02:00
rodzic bdb0f2e4e5
commit db5a9fd5d1
1 zmienionych plików z 33 dodań i 0 usunięć

Wyświetl plik

@ -41,6 +41,16 @@ class WriterAdapter:
Let the write buffer of the underlying transport a chance to be flushed. Let the write buffer of the underlying transport a chance to be flushed.
""" """
def get_peer_info(self):
"""
Return peer socket info (remote address and remote port as tuple
"""
@asyncio.coroutine
def close(self):
"""
Close the protocol connection
"""
class WebSocketsReader(ReaderAdapter): class WebSocketsReader(ReaderAdapter):
""" """
@ -94,6 +104,14 @@ class WebSocketsWriter(WriterAdapter):
yield from self._protocol.send(self._stream.getbuffer()) yield from self._protocol.send(self._stream.getbuffer())
self._stream = io.BytesIO(b'') self._stream = io.BytesIO(b'')
def get_peer_info(self):
extra_info = self._protocol.writer.get_extra_info('peername')
return extra_info[0], extra_info[1]
@asyncio.coroutine
def close(self):
yield from self._protocol.close()
class StreamReaderAdapter(ReaderAdapter): class StreamReaderAdapter(ReaderAdapter):
""" """
@ -125,6 +143,14 @@ class StreamWriterAdapter(WriterAdapter):
def drain(self): def drain(self):
yield from self._writer.drain() yield from self._writer.drain()
def get_peer_info(self):
extra_info = self._writer.get_extra_info('peername')
return extra_info[0], extra_info[1]
@asyncio.coroutine
def close(self):
self._writer.close()
class BufferReader(ReaderAdapter): class BufferReader(ReaderAdapter):
""" """
@ -159,3 +185,10 @@ class BufferWriter(WriterAdapter):
def get_buffer(self): def get_buffer(self):
return self._stream.getbuffer() return self._stream.getbuffer()
def get_peer_info(self):
return "BufferWriter", 0
@asyncio.coroutine
def close(self):
self._stream.close()