bump rust types (#321)

* get rid of noisy log

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix types in rust

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2023-08-25 11:29:18 -07:00
committed by GitHub
parent dccb83f614
commit 33eb6126d4
5 changed files with 37 additions and 24 deletions

View File

@ -575,7 +575,6 @@ export class EngineCommandManager {
if (commandStr === undefined) { if (commandStr === undefined) {
throw new Error('commandStr is undefined') throw new Error('commandStr is undefined')
} }
console.log('sendModelingCommandFromWasm', id, rangeStr, commandStr)
const command: EngineCommand = JSON.parse(commandStr) const command: EngineCommand = JSON.parse(commandStr)
const range: SourceRange = JSON.parse(rangeStr) const range: SourceRange = JSON.parse(rangeStr)

View File

@ -419,9 +419,9 @@ dependencies = [
[[package]] [[package]]
name = "kittycad" name = "kittycad"
version = "0.2.18" version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "265907330acc7c97b6b2de171554e1354ed300ced20751fc0e40c88117a2d597" checksum = "0443a9f76cee80d5a43d076028d3ce39d2f6f6b66fc5c1a0ce24f8d7caf733b9"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",

View File

@ -3,7 +3,7 @@
use anyhow::Result; use anyhow::Result;
use futures::{SinkExt, StreamExt}; use futures::{SinkExt, StreamExt};
use kittycad::types::{WebSocketMessages, WebSocketResponses}; use kittycad::types::{OkWebSocketResponseData, WebSocketRequest, WebSocketResponse};
use tokio_tungstenite::tungstenite::Message as WsMsg; use tokio_tungstenite::tungstenite::Message as WsMsg;
use crate::errors::{KclError, KclErrorDetails}; use crate::errors::{KclError, KclErrorDetails};
@ -35,14 +35,14 @@ pub struct TcpRead {
} }
impl TcpRead { impl TcpRead {
pub async fn read(&mut self) -> Result<WebSocketResponses> { pub async fn read(&mut self) -> Result<WebSocketResponse> {
let msg = self.stream.next().await.unwrap()?; let msg = self.stream.next().await.unwrap()?;
let msg = match msg { let msg = match msg {
WsMsg::Text(text) => text, WsMsg::Text(text) => text,
WsMsg::Binary(bin) => bincode::deserialize(&bin)?, WsMsg::Binary(bin) => bincode::deserialize(&bin)?,
other => anyhow::bail!("Unexpected websocket message from server: {}", other), other => anyhow::bail!("Unexpected websocket message from server: {}", other),
}; };
let msg = serde_json::from_str::<WebSocketResponses>(&msg)?; let msg = serde_json::from_str::<WebSocketResponse>(&msg)?;
Ok(msg) Ok(msg)
} }
} }
@ -68,19 +68,26 @@ impl EngineConnection {
let tcp_read_handle = tokio::spawn(async move { let tcp_read_handle = tokio::spawn(async move {
// Get Websocket messages from API server // Get Websocket messages from API server
while let Ok(msg) = tcp_read.read().await { while let Ok(ws_resp) = tcp_read.read().await {
match msg { if !ws_resp.success {
WebSocketResponses::IceServerInfo { ice_servers } => { println!("got ws errors: {:?}", ws_resp.errors);
println!("got ice server info: {:?}", ice_servers); continue;
}
if let Some(msg) = ws_resp.resp {
match msg {
OkWebSocketResponseData::IceServerInfo { ice_servers } => {
println!("got ice server info: {:?}", ice_servers);
}
OkWebSocketResponseData::SdpAnswer { answer } => {
println!("got sdp answer: {:?}", answer);
}
OkWebSocketResponseData::TrickleIce { candidate } => {
println!("got trickle ice: {:?}", candidate);
}
OkWebSocketResponseData::Modeling { .. } => {}
OkWebSocketResponseData::Export { .. } => {}
} }
WebSocketResponses::SdpAnswer { answer } => {
println!("got sdp answer: {:?}", answer);
}
WebSocketResponses::TrickleIce { candidate } => {
println!("got trickle ice: {:?}", candidate);
}
WebSocketResponses::Modeling { .. } => {}
WebSocketResponses::Export { .. } => {}
} }
} }
}); });
@ -91,7 +98,7 @@ impl EngineConnection {
}) })
} }
pub async fn tcp_send(&mut self, msg: WebSocketMessages) -> Result<()> { pub async fn tcp_send(&mut self, msg: WebSocketRequest) -> Result<()> {
let msg = serde_json::to_string(&msg)?; let msg = serde_json::to_string(&msg)?;
self.tcp_write.send(WsMsg::Text(msg)).await?; self.tcp_write.send(WsMsg::Text(msg)).await?;
@ -105,7 +112,7 @@ impl EngineConnection {
cmd: kittycad::types::ModelingCmd, cmd: kittycad::types::ModelingCmd,
) -> Result<(), KclError> { ) -> Result<(), KclError> {
futures::executor::block_on( futures::executor::block_on(
self.tcp_send(WebSocketMessages::ModelingCmdReq { cmd, cmd_id: id }), self.tcp_send(WebSocketRequest::ModelingCmdReq { cmd, cmd_id: id }),
) )
.map_err(|e| { .map_err(|e| {
KclError::Engine(KclErrorDetails { KclError::Engine(KclErrorDetails {

View File

@ -2,7 +2,7 @@
//! engine. //! engine.
use anyhow::Result; use anyhow::Result;
use kittycad::types::WebSocketMessages; use kittycad::types::WebSocketRequest;
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
use crate::errors::{KclError, KclErrorDetails}; use crate::errors::{KclError, KclErrorDetails};
@ -43,7 +43,7 @@ impl EngineConnection {
source_ranges: vec![source_range], source_ranges: vec![source_range],
}) })
})?; })?;
let ws_msg = WebSocketMessages::ModelingCmdReq { cmd, cmd_id: id }; let ws_msg = WebSocketRequest::ModelingCmdReq { cmd, cmd_id: id };
let cmd_str = serde_json::to_string(&ws_msg).map_err(|e| { let cmd_str = serde_json::to_string(&ws_msg).map_err(|e| {
KclError::Engine(KclErrorDetails { KclError::Engine(KclErrorDetails {
message: format!("Failed to serialize modeling command: {:?}", e), message: format!("Failed to serialize modeling command: {:?}", e),

View File

@ -5,9 +5,16 @@ use wasm_bindgen::prelude::*;
#[wasm_bindgen] #[wasm_bindgen]
pub fn deserialize_files(data: &[u8]) -> Result<JsValue, JsError> { pub fn deserialize_files(data: &[u8]) -> Result<JsValue, JsError> {
let ws_resp: kittycad::types::WebSocketResponses = bincode::deserialize(data)?; let ws_resp: kittycad::types::WebSocketResponse = bincode::deserialize(data)?;
if let kittycad::types::WebSocketResponses::Export { files } = ws_resp { if !ws_resp.success {
return Err(JsError::new(&format!(
"Server returned error: {:?}",
ws_resp.errors
)));
}
if let Some(kittycad::types::OkWebSocketResponseData::Export { files }) = ws_resp.resp {
return Ok(JsValue::from_serde(&files)?); return Ok(JsValue::from_serde(&files)?);
} }