kcl_lib/engine/engine_manager/
engine_transport.rs1use std::collections::HashMap;
2
3use anyhow::Result;
4use kcmc::websocket::WebSocketRequest;
5use kcmc::websocket::WebSocketResponse;
6use kittycad_modeling_cmds::{self as kcmc};
7use uuid::Uuid;
8
9use crate::KclError;
10use crate::SourceRange;
11use crate::engine_connection::TransportCloseError;
12
13#[async_trait::async_trait]
19pub trait EngineTransport: Send + Sync + 'static {
20 async fn inner_fire_modeling_cmd(
22 &self,
23 cmd_id: uuid::Uuid,
24 source_range: SourceRange,
25 cmd: WebSocketRequest,
26 id_to_source_range: HashMap<Uuid, SourceRange>,
27 ) -> Result<(), KclError>;
28
29 async fn inner_send_modeling_cmd(
31 &self,
32 cmd_id: uuid::Uuid,
33 source_range: SourceRange,
34 cmd: WebSocketRequest,
35 id_to_source_range: HashMap<Uuid, SourceRange>,
36 ) -> Result<WebSocketResponse, KclError>;
37
38 async fn start_new_session(&self, _source_range: SourceRange) -> Result<(), KclError> {
40 Ok(())
41 }
42
43 async fn close(&self) -> Result<(), TransportCloseError>;
45}