diff --git a/quinn-proto/src/connection/streams/send.rs b/quinn-proto/src/connection/streams/send.rs index df6a9333b..1ffdd54bf 100644 --- a/quinn-proto/src/connection/streams/send.rs +++ b/quinn-proto/src/connection/streams/send.rs @@ -135,37 +135,6 @@ impl Send { } } -/// A source of one or more buffers which can be converted into `Bytes` buffers on demand -/// -/// The purpose of this data type is to defer conversion as long as possible, -/// so that no heap allocation is required in case no data is writable. -pub trait BytesSource { - /// Returns the next chunk from the source of owned chunks. - /// - /// This method will consume parts of the source. - /// Calling it will yield `Bytes` elements up to the configured `limit`. - /// - /// The method returns a tuple: - /// - The first item is the yielded `Bytes` element. The element will be - /// empty if the limit is zero or no more data is available. - /// - The second item returns how many complete chunks inside the source had - /// had been consumed. This can be less than 1, if a chunk inside the - /// source had been truncated in order to adhere to the limit. It can also - /// be more than 1, if zero-length chunks had been skipped. - fn pop_chunk(&mut self, limit: usize) -> (Bytes, usize); -} - -/// Indicates how many bytes and chunks had been transferred in a write operation -#[derive(Debug, Default, PartialEq, Eq, Clone, Copy)] -pub struct Written { - /// The amount of bytes which had been written - pub bytes: usize, - /// The amount of full chunks which had been written - /// - /// If a chunk was only partially written, it will not be counted by this field. - pub chunks: usize, -} - /// A [`BytesSource`] implementation for `&'a mut [Bytes]` /// /// The type allows to dequeue [`Bytes`] chunks from an array of chunks, up to @@ -246,6 +215,37 @@ impl<'a> BytesSource for ByteSlice<'a> { } } +/// A source of one or more buffers which can be converted into `Bytes` buffers on demand +/// +/// The purpose of this data type is to defer conversion as long as possible, +/// so that no heap allocation is required in case no data is writable. +pub trait BytesSource { + /// Returns the next chunk from the source of owned chunks. + /// + /// This method will consume parts of the source. + /// Calling it will yield `Bytes` elements up to the configured `limit`. + /// + /// The method returns a tuple: + /// - The first item is the yielded `Bytes` element. The element will be + /// empty if the limit is zero or no more data is available. + /// - The second item returns how many complete chunks inside the source had + /// had been consumed. This can be less than 1, if a chunk inside the + /// source had been truncated in order to adhere to the limit. It can also + /// be more than 1, if zero-length chunks had been skipped. + fn pop_chunk(&mut self, limit: usize) -> (Bytes, usize); +} + +/// Indicates how many bytes and chunks had been transferred in a write operation +#[derive(Debug, Default, PartialEq, Eq, Clone, Copy)] +pub struct Written { + /// The amount of bytes which had been written + pub bytes: usize, + /// The amount of full chunks which had been written + /// + /// If a chunk was only partially written, it will not be counted by this field. + pub chunks: usize, +} + /// Errors triggered while writing to a send stream #[derive(Debug, Error, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] pub enum WriteError {