summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-01-15 09:32:18 +0100
committerVictor Stinner <victor.stinner@gmail.com>2015-01-15 09:32:18 +0100
commita250b11f2162c5cbf1f58397bfbb1c5c452b7870 (patch)
treeff3c181a393d5a7270cddc01ea863818a8621ca8
parent3835c52709c0f5c0bb567f648c86455e00c4c7b7 (diff)
downloadtrollius-a250b11f2162c5cbf1f58397bfbb1c5c452b7870.tar.gz
StreamWriter: close() now clears the reference to the transport
StreamWriter now raises an exception if it is closed: write(), writelines(), write_eof(), can_write_eof(), get_extra_info(), drain().
-rw-r--r--asyncio/streams.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/asyncio/streams.py b/asyncio/streams.py
index 7ff16a4..12ab1c5 100644
--- a/asyncio/streams.py
+++ b/asyncio/streams.py
@@ -258,8 +258,22 @@ class StreamWriter:
self._reader = reader
self._loop = loop
+ def close(self):
+ if self._transport is None:
+ return
+ self._transport.close()
+ self._transport = None
+
+ def _check_closed(self):
+ if self._transport is None:
+ raise RuntimeError('StreamWriter is closed')
+
def __repr__(self):
- info = [self.__class__.__name__, 'transport=%r' % self._transport]
+ info = [self.__class__.__name__]
+ if self._transport is not None:
+ info.append('transport=%r' % self._transport)
+ else:
+ info.append('closed')
if self._reader is not None:
info.append('reader=%r' % self._reader)
return '<%s>' % ' '.join(info)
@@ -269,21 +283,23 @@ class StreamWriter:
return self._transport
def write(self, data):
+ self._check_closed()
self._transport.write(data)
def writelines(self, data):
+ self._check_closed()
self._transport.writelines(data)
def write_eof(self):
+ self._check_closed()
return self._transport.write_eof()
def can_write_eof(self):
+ self._check_closed()
return self._transport.can_write_eof()
- def close(self):
- return self._transport.close()
-
def get_extra_info(self, name, default=None):
+ self._check_closed()
return self._transport.get_extra_info(name, default)
@coroutine
@@ -295,6 +311,7 @@ class StreamWriter:
w.write(data)
yield from w.drain()
"""
+ self._check_closed()
if self._reader is not None:
exc = self._reader.exception()
if exc is not None: