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) {
throw new Error('commandStr is undefined')
}
console.log('sendModelingCommandFromWasm', id, rangeStr, commandStr)
const command: EngineCommand = JSON.parse(commandStr)
const range: SourceRange = JSON.parse(rangeStr)

View File

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

View File

@ -3,7 +3,7 @@
use anyhow::Result;
use futures::{SinkExt, StreamExt};
use kittycad::types::{WebSocketMessages, WebSocketResponses};
use kittycad::types::{OkWebSocketResponseData, WebSocketRequest, WebSocketResponse};
use tokio_tungstenite::tungstenite::Message as WsMsg;
use crate::errors::{KclError, KclErrorDetails};
@ -35,14 +35,14 @@ pub struct 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 = match msg {
WsMsg::Text(text) => text,
WsMsg::Binary(bin) => bincode::deserialize(&bin)?,
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)
}
}
@ -68,19 +68,26 @@ impl EngineConnection {
let tcp_read_handle = tokio::spawn(async move {
// Get Websocket messages from API server
while let Ok(msg) = tcp_read.read().await {
while let Ok(ws_resp) = tcp_read.read().await {
if !ws_resp.success {
println!("got ws errors: {:?}", ws_resp.errors);
continue;
}
if let Some(msg) = ws_resp.resp {
match msg {
WebSocketResponses::IceServerInfo { ice_servers } => {
OkWebSocketResponseData::IceServerInfo { ice_servers } => {
println!("got ice server info: {:?}", ice_servers);
}
WebSocketResponses::SdpAnswer { answer } => {
OkWebSocketResponseData::SdpAnswer { answer } => {
println!("got sdp answer: {:?}", answer);
}
WebSocketResponses::TrickleIce { candidate } => {
OkWebSocketResponseData::TrickleIce { candidate } => {
println!("got trickle ice: {:?}", candidate);
}
WebSocketResponses::Modeling { .. } => {}
WebSocketResponses::Export { .. } => {}
OkWebSocketResponseData::Modeling { .. } => {}
OkWebSocketResponseData::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)?;
self.tcp_write.send(WsMsg::Text(msg)).await?;
@ -105,7 +112,7 @@ impl EngineConnection {
cmd: kittycad::types::ModelingCmd,
) -> Result<(), KclError> {
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| {
KclError::Engine(KclErrorDetails {

View File

@ -2,7 +2,7 @@
//! engine.
use anyhow::Result;
use kittycad::types::WebSocketMessages;
use kittycad::types::WebSocketRequest;
use wasm_bindgen::prelude::*;
use crate::errors::{KclError, KclErrorDetails};
@ -43,7 +43,7 @@ impl EngineConnection {
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| {
KclError::Engine(KclErrorDetails {
message: format!("Failed to serialize modeling command: {:?}", e),

View File

@ -5,9 +5,16 @@ use wasm_bindgen::prelude::*;
#[wasm_bindgen]
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)?);
}