[Python-checkins] cpython (3.4): StreamWriter: close() now clears the reference to the transport
victor.stinner
python-checkins at python.org
Thu Jan 15 09:36:31 CET 2015
https://hg.python.org/cpython/rev/6ab2575bc12b
changeset: 94160:6ab2575bc12b
branch: 3.4
parent: 94158:3e4d4c4968bb
user: Victor Stinner <victor.stinner at gmail.com>
date: Thu Jan 15 09:33:50 2015 +0100
summary:
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().
files:
Lib/asyncio/streams.py | 25 +++++++++++++++++++++----
1 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py
--- a/Lib/asyncio/streams.py
+++ b/Lib/asyncio/streams.py
@@ -258,8 +258,22 @@
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 @@
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 @@
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:
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list