(Merge 3.4) asyncio, tulip issue 203: Add _FlowControlMixin.get_write_buffer_limits()

method
This commit is contained in:
Victor Stinner 2014-08-26 00:23:23 +02:00
commit 54c69c2fe3
3 changed files with 17 additions and 0 deletions

View File

@ -121,6 +121,16 @@ WriteTransport
Return the current size of the output buffer used by the transport. Return the current size of the output buffer used by the transport.
.. method:: get_write_buffer_limits()
Get the *high*- and *low*-water limits for write flow control. Return a
tuple ``(low, high)`` where *low* and *high* are positive number of
bytes.
Use :meth:`set_write_buffer_limits` to set the limits.
.. versionadded:: 3.4.2
.. method:: set_write_buffer_limits(high=None, low=None) .. method:: set_write_buffer_limits(high=None, low=None)
Set the *high*- and *low*-water limits for write flow control. Set the *high*- and *low*-water limits for write flow control.
@ -141,6 +151,8 @@ WriteTransport
reduces opportunities for doing I/O and computation reduces opportunities for doing I/O and computation
concurrently. concurrently.
Use :meth:`get_write_buffer_limits` to get the limits.
.. method:: write(data) .. method:: write(data)
Write some *data* bytes to the transport. Write some *data* bytes to the transport.

View File

@ -273,6 +273,9 @@ class _FlowControlMixin(Transport):
'protocol': self._protocol, 'protocol': self._protocol,
}) })
def get_write_buffer_limits(self):
return (self._low_water, self._high_water)
def _set_write_buffer_limits(self, high=None, low=None): def _set_write_buffer_limits(self, high=None, low=None):
if high is None: if high is None:
if low is None: if low is None:

View File

@ -79,9 +79,11 @@ class TransportTests(unittest.TestCase):
transport.set_write_buffer_limits(high=1024, low=128) transport.set_write_buffer_limits(high=1024, low=128)
self.assertFalse(transport._protocol_paused) self.assertFalse(transport._protocol_paused)
self.assertEqual(transport.get_write_buffer_limits(), (128, 1024))
transport.set_write_buffer_limits(high=256, low=128) transport.set_write_buffer_limits(high=256, low=128)
self.assertTrue(transport._protocol_paused) self.assertTrue(transport._protocol_paused)
self.assertEqual(transport.get_write_buffer_limits(), (128, 256))
if __name__ == '__main__': if __name__ == '__main__':