Struct bsp_server::Connection
source · [−]Expand description
Connection is just a pair of channels of LSP messages.
Fields
sender: Sender<Message>receiver: Receiver<Message>Implementations
sourceimpl Connection
impl Connection
sourcepub fn stdio() -> (Connection, IoThreads)
pub fn stdio() -> (Connection, IoThreads)
Create connection over standard in/standard out.
Use this to create a real language server.
sourcepub fn connect<A: ToSocketAddrs>(addr: A) -> Result<(Connection, IoThreads)>
pub fn connect<A: ToSocketAddrs>(addr: A) -> Result<(Connection, IoThreads)>
Open a connection over tcp. This call blocks until a connection is established.
sourcepub fn listen<A: ToSocketAddrs>(addr: A) -> Result<(Connection, IoThreads)>
pub fn listen<A: ToSocketAddrs>(addr: A) -> Result<(Connection, IoThreads)>
Listen for a connection over tcp. This call blocks until a connection is established.
sourcepub fn memory() -> (Connection, Connection)
pub fn memory() -> (Connection, Connection)
Creates a pair of connected connections in memory for testing.
sourcepub fn initialize<V: Serialize>(
&self,
process: impl FnOnce(&InitializeBuild) -> V
) -> Result<InitializeBuild, ProtocolError>
pub fn initialize<V: Serialize>(
&self,
process: impl FnOnce(&InitializeBuild) -> V
) -> Result<InitializeBuild, ProtocolError>
Initialize the connection. Sends the server initialize response
to the client and returns the serialized client capabilities
on success. If more fine-grained initialization is required use
initialize_start/initialize_finish.
Example
use std::error::Error;
use build_server_protocol::types::InitializeBuildResult;
use build_server_protocol::server::{Connection, Message, Request, RequestId, Response};
fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
// Create the transport
let (conn, io_threads) = Connection::stdio();
// Run the server
conn.initialize(|_params| {
Ok(InitializeBuildResult::new_simple(
"MyBuildServer",
"0.1",
"2.0",
ServerCapabilities::default()))
})?;
// ... Run main loop ...
Ok(())
}sourcepub fn handle_shutdown(&self, req: &Request) -> Result<bool, ProtocolError>
pub fn handle_shutdown(&self, req: &Request) -> Result<bool, ProtocolError>
If req is Shutdown, respond to it and return true, otherwise return false
sourcepub fn send<T: Into<Message>>(&self, msg: T) -> Result<(), SendError<Message>>
pub fn send<T: Into<Message>>(&self, msg: T) -> Result<(), SendError<Message>>
delegates to self.sender
sourcepub fn try_send<T: Into<Message>>(
&self,
msg: T
) -> Result<(), TrySendError<Message>>
pub fn try_send<T: Into<Message>>(
&self,
msg: T
) -> Result<(), TrySendError<Message>>
delegates to self.sender
sourcepub fn send_timeout<T: Into<Message>>(
&self,
msg: T,
timeout: Duration
) -> Result<(), SendTimeoutError<Message>>
pub fn send_timeout<T: Into<Message>>(
&self,
msg: T,
timeout: Duration
) -> Result<(), SendTimeoutError<Message>>
delegates to self.sender
sourcepub fn send_deadline<T: Into<Message>>(
&self,
msg: T,
deadline: Instant
) -> Result<(), SendTimeoutError<Message>>
pub fn send_deadline<T: Into<Message>>(
&self,
msg: T,
deadline: Instant
) -> Result<(), SendTimeoutError<Message>>
delegates to self.sender
Auto Trait Implementations
impl RefUnwindSafe for Connection
impl Send for Connection
impl Sync for Connection
impl Unpin for Connection
impl UnwindSafe for Connection
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more