Extract libmicrodroid_metadata (rust_library)
from microdroid_manager. Virtualizationservice will use it to make a
payload disk image.
Bug: 190503456
Test: m
Change-Id: Ifd7d2ef60b7a63dcc373a78dbcbe26f472dc1bc7
diff --git a/microdroid_manager/Android.bp b/microdroid_manager/Android.bp
index 30f8481..b0c25e0 100644
--- a/microdroid_manager/Android.bp
+++ b/microdroid_manager/Android.bp
@@ -13,7 +13,7 @@
"libanyhow",
"libkeystore2_system_property-rust",
"liblog_rust",
- "libmicrodroid_metadata_proto_rust",
+ "libmicrodroid_metadata",
"libmicrodroid_payload_config",
"libprotobuf",
"libserde_json",
diff --git a/microdroid_manager/src/metadata.rs b/microdroid_manager/src/metadata.rs
index 4f7d7af..81d9cc4 100644
--- a/microdroid_manager/src/metadata.rs
+++ b/microdroid_manager/src/metadata.rs
@@ -15,25 +15,14 @@
//! Payload metadata from /dev/block/by-name/metadata
use log::info;
-use microdroid_metadata::metadata::Metadata;
-use protobuf::Message;
+use microdroid_metadata::{read_metadata, Metadata};
use std::fs::File;
use std::io;
-use std::io::Read;
const METADATA_PATH: &str = "/dev/block/by-name/metadata";
/// loads payload metadata from /dev/block/by-name/metadata
pub fn load() -> io::Result<Metadata> {
info!("loading payload metadata...");
-
- let mut f = File::open(METADATA_PATH)?;
- // metadata partition is
- // 4 bytes : size(N) in big endian
- // N bytes : message for Metadata
- let mut buf = [0u8; 4];
- f.read_exact(&mut buf)?;
- let size = i32::from_be_bytes(buf);
-
- Ok(Metadata::parse_from_reader(&mut f.take(size as u64))?)
+ read_metadata(File::open(METADATA_PATH)?)
}