Ticket #6559 enhancement new

Opened 11 months ago

lineLengthExceeded() doesn't really need the entire rest of the buffer

Reported by: zooko Owned by:
Priority: normal Milestone:
Component: core Keywords:
Cc: zooko Branch:
Author: Launchpad Bug:


As I mentioned on IRC, I would like to change the contract of lineLengthExceeded to not promise to send the entire contents of its internal buffer, but instead to send "The thing we received that violated the max-length constraint".

My reasoning for this is:

1. "The rest of my internal buffer" is an internal matter and not really appropriate for a contract that I offer to you.

2. Optimized internal representations (such as I am working on for #6357) don't necessarily have the rest of the buffer in a single string at that time, and have to go through some code complication and runtime costs to preserve and/or reconstruct it in order to pass it to lineLengthExceeded.

3. Apparently no clients are actually depending on this contract at the moment, since both LineReceiver (#6536) and LineOnlyReceiver (#6558) satisfy that contract only some of the time.

Please, someone who has the authority to commit patches to Twisted trunk, let me know if there is any point in me writing a patch for this ticket that changes the documentation of the arguments to lineLengthExceeded, changes the unit tests (that I just wrote and attached to #6536 and #6558) so they no longer require the code-under-test to deliver the entire remnant of the buffer, and changes the implementations of LineReceiver and LineOnlyReceiver to deliver only the part of their buffer that violated the constraint (and throw away the rest of their buffer).

Note: See TracTickets for help on using tickets.