MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / handle_android_control_socket

Function handle_android_control_socket

packages/server/src/api/routes.rs:2726–2753  ·  view source on GitHub ↗
(state: AppState, udid: String, socket: WebSocket)

Source from the content-addressed store, hash-verified

2724}
2725
2726async fn handle_android_control_socket(state: AppState, udid: String, socket: WebSocket) {
2727 let (mut sender, mut receiver) = socket.split();
2728 let _ = sender
2729 .send(Message::Text(
2730 json_value!({ "type": "ready", "udid": udid, "platform": "android-emulator" })
2731 .to_string()
2732 .into(),
2733 ))
2734 .await;
2735 while let Some(message) = receiver.next().await {
2736 let text = match message {
2737 Ok(Message::Text(text)) => text,
2738 Ok(Message::Binary(bytes)) => match String::from_utf8(bytes.to_vec()) {
2739 Ok(text) => text.into(),
2740 Err(_) => continue,
2741 },
2742 Ok(Message::Close(_)) => break,
2743 Ok(Message::Ping(_)) | Ok(Message::Pong(_)) => continue,
2744 Err(_) => break,
2745 };
2746 let Ok(control_message) = serde_json::from_str::<ControlMessage>(&text) else {
2747 continue;
2748 };
2749 let state = state.clone();
2750 let udid = udid.clone();
2751 let _ = run_android_control_message(state, udid, control_message).await;
2752 }
2753}
2754
2755async fn run_android_control_message(
2756 state: AppState,

Callers 1

control_socketFunction · 0.85

Calls 4

TextInterface · 0.85
sendMethod · 0.65
cloneMethod · 0.65

Tested by

no test coverage detected