(state: AppState, udid: String, socket: WebSocket)
| 2724 | } |
| 2725 | |
| 2726 | async 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 | |
| 2755 | async fn run_android_control_message( |
| 2756 | state: AppState, |
no test coverage detected