adb_client 3.1.2

Rust ADB (Android Debug Bridge) client library
Documentation
use crate::{
    Result,
    message_devices::{
        adb_message_device::ADBMessageDevice, adb_message_transport::ADBMessageTransport,
        message_commands::MessageCommand,
    },
    models::{ADBLocalCommand, RemountInfo},
};

impl<T: ADBMessageTransport> ADBMessageDevice<T> {
    pub(crate) fn remount(&mut self) -> Result<Vec<RemountInfo>> {
        self.open_session(&ADBLocalCommand::Remount)?;

        let response = self.get_transport_mut().read_message()?;

        response.assert_command(MessageCommand::Okay)?;

        let mut response_str: Vec<String> = Vec::new();
        loop {
            let response = self.get_transport_mut().read_message()?;

            if response.header().command() != MessageCommand::Write {
                break;
            }

            let payload_str = String::from_utf8_lossy(response.payload());
            let payload_str = payload_str.trim();

            response_str.push(payload_str.to_string());
        }

        RemountInfo::from_str_response(&response_str.join("\n"))
    }
}