mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-23 03:35:14 +00:00
quinn-proto: reorder code from bytes_source module
This commit is contained in:
committed by
Benjamin Saunders
parent
4abf5a64e0
commit
62924202fa
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user