Struct protobuf_native::io::CodedInputStream
source · pub struct CodedInputStream<'a> { /* private fields */ }
Expand description
Type which reads and decodes binary data which is composed of varint- encoded integers and fixed-width pieces.
Wraps a ZeroCopyInputStream
. Most users will not need to deal with
CodedInputStream
.
Most methods of CodedInputStream
that return a Result
return an error if
an underlying I/O error occurs or if the data is malformed. Once such a
failure occurs, the CodedInputStream
is broken and is no longer useful.
Implementations§
source§impl<'a> CodedInputStream<'a>
impl<'a> CodedInputStream<'a>
sourcepub fn new(
input: Pin<&'a mut dyn ZeroCopyInputStream>,
) -> Pin<Box<CodedInputStream<'a>>>
pub fn new( input: Pin<&'a mut dyn ZeroCopyInputStream>, ) -> Pin<Box<CodedInputStream<'a>>>
Creates a CodedInputStream
that reads from the given
ZeroCopyInputStream
.
sourcepub fn is_flat(&self) -> bool
pub fn is_flat(&self) -> bool
Reports whether this coded input stream reads from a flat array instead
of a ZeroCopyInputStream
.
sourcepub fn read_varint32(self: Pin<&mut Self>) -> Result<u32, OperationFailedError>
pub fn read_varint32(self: Pin<&mut Self>) -> Result<u32, OperationFailedError>
Reads an unsigned integer with varint encoding, truncating to 32 bits.
Reading a 32-bit value is equivalent to reading a 64-bit one and casting
it to u32
, but may be more efficient.
sourcepub fn read_varint64(self: Pin<&mut Self>) -> Result<u64, OperationFailedError>
pub fn read_varint64(self: Pin<&mut Self>) -> Result<u64, OperationFailedError>
Reads an unsigned 64-bit integer with varint encoding.
sourcepub fn read_tag(self: Pin<&mut Self>) -> Result<u32, OperationFailedError>
pub fn read_tag(self: Pin<&mut Self>) -> Result<u32, OperationFailedError>
Reads a tag.
This calls read_varint32
and returns the result. Also updates the
last tag value, which can be checked with last_tag_was
.
sourcepub fn read_tag_no_last_tag(
self: Pin<&mut Self>,
) -> Result<u32, OperationFailedError>
pub fn read_tag_no_last_tag( self: Pin<&mut Self>, ) -> Result<u32, OperationFailedError>
Like read_tag
, but does not update the last tag
value.
sourcepub fn last_tag_was(self: Pin<&mut Self>, expected: u32) -> bool
pub fn last_tag_was(self: Pin<&mut Self>, expected: u32) -> bool
Reports whether the last call to read_tag
or
read_tag_with_cutoff
returned the given value.
read_tag_no_last_tag
and read_tag_with_cutoff_no_last_tag
do not
preserve the last returned value.
This is needed because parsers for some types of embedded messages (with
field type TYPE_GROUP
) don’t actually know that they’ve reached the
end of a message until they see an ENDGROUP
tag, which was actually
part of the enclosing message. The enclosing message would like to check
that tag to make sure it had the right number, so it calls
last_tag_was
on return from the embedded parser to check.
sourcepub fn consumed_entire_message(self: Pin<&mut Self>) -> bool
pub fn consumed_entire_message(self: Pin<&mut Self>) -> bool
When parsing a message (but NOT a group), this method must be called
immediately after MessageLite::merge_from_coded_stream
returns (if
it returns true) to further verify that the message ended in a
legitimate way.
For example, this verifies that parsing did not end on an end-group tag.
It also checks for some cases where, due to optimizations,
merge_from_coded_stream
can incorrectly return true.
sourcepub fn current_position(&self) -> usize
pub fn current_position(&self) -> usize
Returns the stream’s current position relative to the beginning of the input.
Trait Implementations§
source§impl<'a> Drop for CodedInputStream<'a>
impl<'a> Drop for CodedInputStream<'a>
source§impl<'a> Read for Pin<&mut CodedInputStream<'a>>
impl<'a> Read for Pin<&mut CodedInputStream<'a>>
source§fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>
1.36.0 · source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf
. Read more1.0.0 · source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf
. Read more1.6.0 · source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moresource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read more