mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
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().
This commit is contained in:
parent
caa12dab69
commit
e7a35717d2
1 changed files with 21 additions and 4 deletions
|
@ -258,8 +258,22 @@ class StreamWriter:
|
||||||
self._reader = reader
|
self._reader = reader
|
||||||
self._loop = loop
|
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):
|
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:
|
if self._reader is not None:
|
||||||
info.append('reader=%r' % self._reader)
|
info.append('reader=%r' % self._reader)
|
||||||
return '<%s>' % ' '.join(info)
|
return '<%s>' % ' '.join(info)
|
||||||
|
@ -269,21 +283,23 @@ class StreamWriter:
|
||||||
return self._transport
|
return self._transport
|
||||||
|
|
||||||
def write(self, data):
|
def write(self, data):
|
||||||
|
self._check_closed()
|
||||||
self._transport.write(data)
|
self._transport.write(data)
|
||||||
|
|
||||||
def writelines(self, data):
|
def writelines(self, data):
|
||||||
|
self._check_closed()
|
||||||
self._transport.writelines(data)
|
self._transport.writelines(data)
|
||||||
|
|
||||||
def write_eof(self):
|
def write_eof(self):
|
||||||
|
self._check_closed()
|
||||||
return self._transport.write_eof()
|
return self._transport.write_eof()
|
||||||
|
|
||||||
def can_write_eof(self):
|
def can_write_eof(self):
|
||||||
|
self._check_closed()
|
||||||
return self._transport.can_write_eof()
|
return self._transport.can_write_eof()
|
||||||
|
|
||||||
def close(self):
|
|
||||||
return self._transport.close()
|
|
||||||
|
|
||||||
def get_extra_info(self, name, default=None):
|
def get_extra_info(self, name, default=None):
|
||||||
|
self._check_closed()
|
||||||
return self._transport.get_extra_info(name, default)
|
return self._transport.get_extra_info(name, default)
|
||||||
|
|
||||||
@coroutine
|
@coroutine
|
||||||
|
@ -295,6 +311,7 @@ class StreamWriter:
|
||||||
w.write(data)
|
w.write(data)
|
||||||
yield from w.drain()
|
yield from w.drain()
|
||||||
"""
|
"""
|
||||||
|
self._check_closed()
|
||||||
if self._reader is not None:
|
if self._reader is not None:
|
||||||
exc = self._reader.exception()
|
exc = self._reader.exception()
|
||||||
if exc is not None:
|
if exc is not None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue