IDrainand possibly also an
IFount, and provides lots of conveniences to make it easy to implement something that does fancy flow control with just a few methods.
_InFountis the single fount associated with an
_OutDrainis the single
IDrainassociated with an
frames" - discrete chunks of data - into "
segments" - parts of a raw data stream, with framing headers or delimiters attached.
ITransportto work with the protocols in
basic, as a wrapper around a callable taking some data.
IPausethat does nothing.
Flowis a combination of a Fount and a Drain, representing a bi-directional communication channel such as a TCP connection.
Listeneris a drain that accepts
Flows and sets them up.
ITubedelivering the values from an iterable.
_FountProduceris an adapter to
IDrainthat wraps around an object that provides
IConsumer, and delivers data to that transport, and flow-control notifications from the consumer.
IFountthat wraps around an
ITransport, and, with the help of a
_ProtocolPlumbing, delivers any data received by that
Routedis a specification describing another specification that has been wrapped in a
to. As such, it is an incomplete implementation of
(IX)from its input and produces
IXto its outputs.
ITubethat unbuffers a list of items. It is an implementation detail of the way that
drainto point at itself.
byteswhich represents a discrete, separated sequence of bytes within a protocol; contrast with
pauseis a reason that an
IFountis not delivering output to its
drainattribute. This reason may be removed by
byteswhich represents the arbitrarily-sized segments of data that a stream-oriented protocol may deliver; contrast with