Changes between and of Initial VersionVersion 16Ticket #1956


Ignore:
Timestamp:
07/31/2006 10:54:09 AM (8 years ago)
Author:
glyph
Comment:

Updating the description a little bit (everybody else please feel free to add more).

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1956

    • Property Cc itamarst radix jknight added; itamar removed
    • Property Priority changed from normal to highest
  • Ticket #1956 – Description

    initial v16  
    1 The current one is annoying in a bunch of ways. Design one that isn't. 
     1The current producer/consumer API has a couple of problems: 
     2 
     3 * It's impossible to get notifications of buffer size changes, which is important for certain kinds of timeout logic.  For example, if you buffer a bunch of output, and then time out if the peer is inactive (isn't reading any data), then you need to know not just when the buffer is empty but when some data is consumed. 
     4 * The {{{streaming}}} flag doesn't really make sense.  It complicates the implementation of nested producers.  While it doesn't actually break anything, it's just a bug.  There's no reason to have it and it should be removed. 
     5 * It's awkward to chain producers and consumers with each other (XXX: this problem needs better documentation, use case, example of awkward code). 
     6 * IProtocol, ITransport, IProducer and IConsumer all have redundant "here's some data" / "there will be no more data" methods which are subtly different.  These should be unified so that the protocol consuming data from the transport and the transport consuming data from the protocol look the same. 
     7 
     8We should design an API which does not have these problems.