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

Function send_rpc

packages/server/src/webkit.rs:971–995  ·  view source on GitHub ↗
(
    writer: &mut W,
    selector: &str,
    args: Dictionary,
)

Source from the content-addressed store, hash-verified

969}
970
971async fn send_rpc<W: AsyncWrite + Unpin>(
972 writer: &mut W,
973 selector: &str,
974 args: Dictionary,
975) -> Result<(), AppError> {
976 let mut message = Dictionary::new();
977 message.insert("__selector".to_owned(), Value::String(selector.to_owned()));
978 message.insert("__argument".to_owned(), Value::Dictionary(args));
979
980 let mut payload = Vec::new();
981 plist::to_writer_binary(&mut payload, &Value::Dictionary(message))
982 .map_err(|error| AppError::internal(format!("Unable to encode WebKit plist: {error}")))?;
983 if payload.len() > WEBKIT_PACKET_MAX_LEN {
984 return Err(AppError::internal("WebKit plist packet is too large."));
985 }
986
987 let mut packet = Vec::with_capacity(payload.len() + 4);
988 packet.extend_from_slice(&(payload.len() as u32).to_be_bytes());
989 packet.extend_from_slice(&payload);
990 writer
991 .write_all(&packet)
992 .await
993 .map_err(|error| AppError::native(format!("Unable to write WebKit packet: {error}")))?;
994 Ok(())
995}
996
997async fn read_packet<R: AsyncRead + Unpin>(reader: &mut R) -> Result<Vec<u8>, AppError> {
998 let mut header = [0u8; 4];

Callers 8

run_connectionMethod · 0.85
attach_websocket_innerFunction · 0.85
send_forward_get_listingFunction · 0.85
send_forward_socket_dataFunction · 0.85
send_forward_did_closeFunction · 0.85

Calls 1

insertMethod · 0.80

Tested by

no test coverage detected