Skip to main content

LspCodec

Struct LspCodec 

Source
pub struct LspCodec { /* private fields */ }
Expand description

LSP wire protocol codec implementing Content-Length framing.

This codec handles encoding and decoding of LSP Message types using the Content-Length header framing specified by the LSP wire protocol.

§Encoding

Messages are serialized to JSON, then prefixed with a Content-Length header:

Content-Length: {byte_length}\r\n\r\n{json_body}

§Decoding

The decoder handles partial reads by maintaining state between calls:

  • Returns Ok(None) if the header is incomplete
  • Returns Ok(None) if the body is incomplete
  • Returns Ok(Some(message)) when a complete message is available

§Thread Safety

LspCodec maintains internal parsing state and should not be shared between concurrent readers. Use one codec instance per direction (read/write) or use Framed which handles this correctly.

Implementations§

Source§

impl LspCodec

Source

pub fn new() -> Self

Creates a new LspCodec ready to encode and decode messages.

Trait Implementations§

Source§

impl Debug for LspCodec

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Decoder for LspCodec

Source§

type Item = Message

The type of decoded frames.
Source§

type Error = Error

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 Default for LspCodec

Source§

fn default() -> LspCodec

Returns the “default value” for a type. Read more
Source§

impl Encoder<Message> for LspCodec

Source§

type Error = Error

The type of encoding errors. Read more
Source§

fn encode( &mut self, item: Message, 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> 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, 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.