Trait EngineManager

Source
pub trait EngineManager:
    Debug
    + Send
    + Sync
    + 'static {
Show 37 methods // Required methods fn batch(&self) -> Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>; fn batch_end( &self, ) -> Arc<RwLock<IndexMap<Uuid, (WebSocketRequest, SourceRange)>>>; fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>; fn ids_of_async_commands(&self) -> Arc<RwLock<IndexMap<Uuid, SourceRange>>>; fn async_tasks(&self) -> AsyncTasks; fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>>; fn stats(&self) -> &EngineStats; fn clear_scene_post_hook<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn fetch_debug<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_debug<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Option<OkWebSocketResponseData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn inner_fire_modeling_cmd<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: WebSocketRequest, id_to_source_range: HashMap<Uuid, SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn inner_send_modeling_cmd<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: WebSocketRequest, id_to_source_range: HashMap<Uuid, SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<WebSocketResponse, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; // Provided methods fn take_batch<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Vec<(WebSocketRequest, SourceRange)>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn take_batch_end<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, (WebSocketRequest, SourceRange)>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn take_ids_of_async_commands<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, SourceRange>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn take_responses<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, WebSocketResponse>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn default_planes<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<DefaultPlanes, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn clear_queues<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn clear_scene<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn ensure_async_command_completed<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: Option<SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn ensure_async_commands_completed<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn set_edge_visibility<'life0, 'life1, 'async_trait>( &'life0 self, visible: bool, source_range: SourceRange, id_generator: &'life1 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn reapply_settings<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, settings: &'life1 ExecutorSettings, source_range: SourceRange, id_generator: &'life2 mut IdGenerator, grid_scale_unit: GridScaleBehavior, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait { ... } fn batch_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn batch_modeling_cmds<'life0, 'life1, 'async_trait>( &'life0 self, source_range: SourceRange, cmds: &'life1 [ModelingCmdReq], ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn batch_end_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn send_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn async_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn run_batch<'life0, 'async_trait>( &'life0 self, orig_requests: Vec<(WebSocketRequest, SourceRange)>, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn flush_batch<'life0, 'async_trait>( &'life0 self, batch_end: bool, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn make_default_plane<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, plane_id: Uuid, info: &'life1 PlaneInfo, color: Option<Color>, source_range: SourceRange, id_generator: &'life2 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<Uuid, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait { ... } fn new_default_planes<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<DefaultPlanes, KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn parse_websocket_response( &self, response: WebSocketResponse, source_range: SourceRange, ) -> Result<OkWebSocketResponseData, KclError> { ... } fn parse_batch_responses( &self, id: Uuid, id_to_source_range: HashMap<Uuid, SourceRange>, responses: HashMap<Uuid, BatchResponse>, ) -> Result<OkWebSocketResponseData, KclError> { ... } fn modify_grid<'life0, 'life1, 'async_trait>( &'life0 self, hidden: bool, grid_scale_behavior: GridScaleBehavior, source_range: SourceRange, id_generator: &'life1 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn get_session_data<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Option<ModelingSessionData>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... }
}

Required Methods§

Source

fn batch(&self) -> Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>

Get the batch of commands to be sent to the engine.

Source

fn batch_end( &self, ) -> Arc<RwLock<IndexMap<Uuid, (WebSocketRequest, SourceRange)>>>

Get the batch of end commands to be sent to the engine.

Source

fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>

Get the command responses from the engine.

Source

fn ids_of_async_commands(&self) -> Arc<RwLock<IndexMap<Uuid, SourceRange>>>

Get the ids of the async commands we are waiting for.

Source

fn async_tasks(&self) -> AsyncTasks

Get the async tasks we are waiting for.

Source

fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>>

Get the default planes.

Source

fn stats(&self) -> &EngineStats

Source

fn clear_scene_post_hook<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Helpers to be called after clearing a scene. (These really only apply to wasm for now).

Source

fn fetch_debug<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Fetch debug information from the peer.

Source

fn get_debug<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Option<OkWebSocketResponseData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get any debug information (if requested)

Source

fn inner_fire_modeling_cmd<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: WebSocketRequest, id_to_source_range: HashMap<Uuid, SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Send a modeling command and do not wait for the response message.

Source

fn inner_send_modeling_cmd<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: WebSocketRequest, id_to_source_range: HashMap<Uuid, SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<WebSocketResponse, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Send a modeling command and wait for the response message.

Source

fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Close the engine connection and wait for it to finish.

Provided Methods§

Source

fn take_batch<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Vec<(WebSocketRequest, SourceRange)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Take the batch of commands that have accumulated so far and clear them.

Source

fn take_batch_end<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, (WebSocketRequest, SourceRange)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Take the batch of end commands that have accumulated so far and clear them.

Source

fn take_ids_of_async_commands<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, SourceRange>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Take the ids of async commands that have accumulated so far and clear them.

Source

fn take_responses<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = IndexMap<Uuid, WebSocketResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Take the responses that have accumulated so far and clear them.

Source

fn default_planes<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<DefaultPlanes, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get the default planes, creating them if they don’t exist.

Source

fn clear_queues<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn clear_scene<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn ensure_async_command_completed<'life0, 'async_trait>( &'life0 self, id: Uuid, source_range: Option<SourceRange>, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Ensure a specific async command has been completed.

Source

fn ensure_async_commands_completed<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Ensure ALL async commands have been completed.

Source

fn set_edge_visibility<'life0, 'life1, 'async_trait>( &'life0 self, visible: bool, source_range: SourceRange, id_generator: &'life1 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Set the visibility of edges.

Source

fn reapply_settings<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, settings: &'life1 ExecutorSettings, source_range: SourceRange, id_generator: &'life2 mut IdGenerator, grid_scale_unit: GridScaleBehavior, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Re-run the command to apply the settings.

Source

fn batch_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn batch_modeling_cmds<'life0, 'life1, 'async_trait>( &'life0 self, source_range: SourceRange, cmds: &'life1 [ModelingCmdReq], ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn batch_end_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Add a command to the batch that needs to be executed at the very end. This for stuff like fillets or chamfers where if we execute too soon the engine will eat the ID and we can’t reference it for other commands.

Source

fn send_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Send the modeling cmd and wait for the response.

Source

fn async_modeling_cmd<'life0, 'life1, 'async_trait>( &'life0 self, id: Uuid, source_range: SourceRange, cmd: &'life1 ModelingCmd, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Send the modeling cmd async and don’t wait for the response. Add it to our list of async commands.

Source

fn run_batch<'life0, 'async_trait>( &'life0 self, orig_requests: Vec<(WebSocketRequest, SourceRange)>, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Run the batch for the specific commands.

Source

fn flush_batch<'life0, 'async_trait>( &'life0 self, batch_end: bool, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<OkWebSocketResponseData, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Force flush the batch queue.

Source

fn make_default_plane<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, plane_id: Uuid, info: &'life1 PlaneInfo, color: Option<Color>, source_range: SourceRange, id_generator: &'life2 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<Uuid, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn new_default_planes<'life0, 'life1, 'async_trait>( &'life0 self, id_generator: &'life1 mut IdGenerator, source_range: SourceRange, ) -> Pin<Box<dyn Future<Output = Result<DefaultPlanes, KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn parse_websocket_response( &self, response: WebSocketResponse, source_range: SourceRange, ) -> Result<OkWebSocketResponseData, KclError>

Source

fn parse_batch_responses( &self, id: Uuid, id_to_source_range: HashMap<Uuid, SourceRange>, responses: HashMap<Uuid, BatchResponse>, ) -> Result<OkWebSocketResponseData, KclError>

Source

fn modify_grid<'life0, 'life1, 'async_trait>( &'life0 self, hidden: bool, grid_scale_behavior: GridScaleBehavior, source_range: SourceRange, id_generator: &'life1 mut IdGenerator, ) -> Pin<Box<dyn Future<Output = Result<(), KclError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn get_session_data<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Option<ModelingSessionData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get session data, if it has been received. Returns None if the server never sent it.

Implementors§

Source§

impl EngineManager for kcl_lib::mock_engine::EngineConnection

Source§

impl EngineManager for kcl_lib::native_engine::EngineConnection