Skip to main content

NetconfCodec

Struct NetconfCodec 

Source
pub struct NetconfCodec { /* private fields */ }

Implementations§

Source§

impl NetconfCodec

tokio_util codec for NETCONF message framing.

Implements the Decoder trait from tokio_util, which defines how to extract discrete messages from a continuous TCP byte stream.

We don’t call decode() directly. Instead, we pass this codec to FramedRead, which handles the I/O loop:

let reader = FramedRead::new(read_half, NetconfCodec::new(…)); while let Some(msg) = reader.next().await { … }

FramedRead reads bytes from the network into an internal buffer, calls our decode() to check for a complete message, and yields messages as a Stream. We only need to implement the framing logic – “is there a complete message in this buffer?” – and FramedRead handles everything else (buffer management, read loops, EOF).

decode() is called repeatedly. It owns the internal buffer. When decode() returns Ok(None), FramedRead reads more bytes from the underlying AsyncRead into the buffer and calls decode() again. When decode() returns Ok(Some(item)), the item is yielded to the consumer. The key invariant is: decode() must consume (via split_to() or advance()) exactly the bytes belonging to the returned message. Any leftover bytes in src remain for the next decode() call.

Returns Bytes (not String) because UTF-8 validation is deferred to the XML parser. This avoids a redundant O(n) validation pass at the framing layer

Source

pub fn new(framing_mode: FramingMode, config: CodecConfig) -> Self

Source

pub fn set_mode(&mut self, framing_mode: FramingMode)

Source

pub fn framing_mode(&self) -> FramingMode

Trait Implementations§

Source§

impl Decoder for NetconfCodec

Source§

type Item = Bytes

The type of decoded frames.
Source§

type Error = FramingError

The type of unrecoverable frame decoding errors. Read more
Source§

fn decode( &mut self, src: &mut BytesMut, ) -> Result<Option<Self::Item>, Self::Error>

Attempts to decode a frame from the provided buffer of bytes. Read more
Source§

fn decode_eof( &mut self, buf: &mut BytesMut, ) -> Result<Option<Self::Item>, Self::Error>

A default method available to be called when there are no more bytes available to be read from the underlying I/O. Read more
Source§

fn framed<T>(self, io: T) -> Framed<T, Self>
where T: AsyncRead + AsyncWrite, Self: Sized,

Provides a Stream and Sink interface for reading and writing to this Io object, using Decode and Encode to read and write the raw data. Read more
Source§

impl Encoder<Bytes> for NetconfCodec

Source§

type Error = FramingError

The type of encoding errors. Read more
Source§

fn encode(&mut self, item: Bytes, dst: &mut BytesMut) -> Result<(), Self::Error>

Encodes a frame into the buffer provided. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Classify for T

Source§

type Classified = T

Source§

fn classify(self) -> T

Source§

impl<T> Declassify for T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V