Codex Handbook
exec-server/src/server/process_handler.rs 67 lines
use codex_app_server_protocol::JSONRPCErrorError;use crate::local_process::LocalProcess;use crate::protocol::ExecParams;use crate::protocol::ExecResponse;use crate::protocol::ReadParams;use crate::protocol::ReadResponse;use crate::protocol::SignalParams;use crate::protocol::SignalResponse;use crate::protocol::TerminateParams;use crate::protocol::TerminateResponse;use crate::protocol::WriteParams;use crate::protocol::WriteResponse;use crate::rpc::RpcNotificationSender;#[derive(Clone)]pub(crate) struct ProcessHandler {    process: LocalProcess,}impl ProcessHandler {    pub(crate) fn new(notifications: RpcNotificationSender) -> Self {        Self {            process: LocalProcess::new(notifications),        }    }    pub(crate) async fn shutdown(&self) {        self.process.shutdown().await;    }    pub(crate) fn set_notification_sender(&self, notifications: Option<RpcNotificationSender>) {        self.process.set_notification_sender(notifications);    }    pub(crate) async fn exec(&self, params: ExecParams) -> Result<ExecResponse, JSONRPCErrorError> {        self.process.exec(params).await    }    pub(crate) async fn exec_read(        &self,        params: ReadParams,    ) -> Result<ReadResponse, JSONRPCErrorError> {        self.process.exec_read(params).await    }    pub(crate) async fn exec_write(        &self,        params: WriteParams,    ) -> Result<WriteResponse, JSONRPCErrorError> {        self.process.exec_write(params).await    }    pub(crate) async fn signal(        &self,        params: SignalParams,    ) -> Result<SignalResponse, JSONRPCErrorError> {        self.process.signal_process(params).await    }    pub(crate) async fn terminate(        &self,        params: TerminateParams,    ) -> Result<TerminateResponse, JSONRPCErrorError> {        self.process.terminate_process(params).await    }}