Skip to main content

Server

Struct Server 

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

The reovim server.

Manages sessions and handles client connections via the configured transport.

Implementations§

Source§

impl Server

Source

pub fn new(config: ServerConfig) -> Self

Create a new server with the given configuration.

This creates a server with empty registries. For full vim functionality, use Server::with_services or Server::with_session_factory to inject module-initialized registries.

Source

pub fn with_services( config: ServerConfig, services: Arc<ServiceRegistry>, ) -> Self

Create a server with a service registry populated by modules.

The service registry should contain:

  • ResolverRegistry - mode key resolvers
  • KeybindingStore - keybindings
  • CommandHandlerStore - command handlers
  • ModeInfoStore - mode metadata
§Example
use reovim_server::{Server, ServerConfig};
use reovim_kernel::api::v1::ServiceRegistry;

// Bootstrap: load modules and populate services
let services = Arc::new(ServiceRegistry::new());
bootstrap_modules(&services);

let server = Server::with_services(ServerConfig::default(), services);
server.run().await?;
Source

pub fn with_session_factory( config: ServerConfig, factory: SessionFactory, ) -> Self

Create a server with a custom session factory.

The factory function is called each time a new session is created, allowing the runner to inject fully-configured SessionState instances with module-initialized registries.

This is the most flexible option for module integration.

§Example
use reovim_server::{Server, ServerConfig, SessionState};

let server = Server::with_session_factory(
    ServerConfig::default(),
    Box::new(|| {
        // Create session state with populated registries
        create_session_state_with_modules()
    }),
);
server.run().await?;
Source

pub fn with_bridges(self, registry: BridgeRegistry) -> Self

Set the extension bridge registry (#468).

Bridges are collected from BridgeProvider in bootstrap. Must be called before run().

Source

pub async fn run(&self) -> Result<()>

Run the server.

This method blocks until the server is shut down.

§Errors

Returns an error if the transport fails to start (e.g., port in use).

Source

pub async fn run_until( &self, shutdown: impl Future<Output = ()> + Send + 'static, port_tx: Option<Sender<u16>>, ) -> Result<()>

Run the server until a shutdown signal is received.

Similar to run() but accepts a shutdown future and an optional port sender. When the shutdown future resolves, the server performs a graceful shutdown. The port sender reports the actual bound port (useful when binding to port 0 for OS-assigned ports).

Only gRPC transport is supported.

§Errors

Returns an error if the transport fails to start or if the configured transport is not gRPC.

Source

pub const fn sessions(&self) -> &Arc<SessionRegistry>

Get a reference to the session registry.

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
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

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more