sync-lsp 0.1.0

A synchronous LSP library for servers
Documentation
use crate::{Server, TypeProvider};
use crate::connection::Callback;

pub(super) use self::exit::Exit;
pub(super) use self::initialize::Initialize;
pub(super) use self::initialized::Initialized;
pub(super) use self::shutdown::Shutdown;
pub(super) use self::cancel::Cancel;

pub(crate) mod initialize;
mod initialized;
mod shutdown;
mod exit;
mod cancel;

pub(super) struct LifecycleService<T: TypeProvider> {
    pub(super) initialize: Initialize<T>,
    pub(super) initialized: Initialized<T>,
    pub(super) shutdown: Shutdown<T>,
    pub(super) exit: Exit<T>,
    pub(super) cancel: Cancel<T>
}

impl<T: TypeProvider> LifecycleService<T> {
    pub(super) fn resolve(&self, method: &str) -> Option<Callback<Server<T>>> {
        match method {
            Initialize::<T>::METHOD => Some(self.initialize.callback()),
            Initialized::<T>::METHOD => Some(self.initialized.callback()),
            Shutdown::<T>::METHOD => Some(self.shutdown.callback()),
            Exit::<T>::METHOD => Some(self.exit.callback()),
            Cancel::<T>::METHOD => Some(self.cancel.callback()),
            _ => None
        }
    }
}