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:
@ -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)
|
||||||
|
|
||||||
|
4
src/wasm-lib/Cargo.lock
generated
4
src/wasm-lib/Cargo.lock
generated
@ -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",
|
||||||
|
@ -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 {
|
||||||
|
@ -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),
|
||||||
|
@ -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)?);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user