use std::io;
use rmpv::ValueRef;
use crate::rpc::payload::{NotificationPayload, RequestPayload};
pub type ResponseValue<'a> = Result<ValueRef<'a>, ValueRef<'a>>;
pub trait Handler: Send + Sync + Clone + 'static {
fn handle_notify(&self, _payload: NotificationPayload) -> io::Result<()>;
fn handle_request(&self, _payload: RequestPayload) -> io::Result<ResponseValue<'_>>;
}
#[derive(Clone)]
pub struct Dummy;
impl Handler for Dummy {
fn handle_notify(&self, _payload: NotificationPayload) -> io::Result<()> {
Ok(())
}
fn handle_request(&self, _payload: RequestPayload) -> io::Result<ResponseValue<'_>> {
Ok(Err(ValueRef::from("Not implemented")))
}
}