[rialto] Move request processing to a separate module
To keep the RKP VM payload execution code isolated from the
rest of the code.
Bug: 291732060
Test: atest rialto_test
Change-Id: Ia242c5050e3d681116c3871533b1baf2ff14d37b
diff --git a/rialto/src/main.rs b/rialto/src/main.rs
index 1c5090a..a8338ca 100644
--- a/rialto/src/main.rs
+++ b/rialto/src/main.rs
@@ -20,6 +20,7 @@
mod communication;
mod error;
mod exceptions;
+mod requests;
extern crate alloc;
@@ -31,7 +32,6 @@
use hyp::{get_mem_sharer, get_mmio_guard};
use libfdt::FdtError;
use log::{debug, error, info};
-use service_vm_comm::{Request, Response};
use virtio_drivers::{
device::socket::VsockAddr,
transport::{pci::bus::PciRoot, DeviceType, Transport},
@@ -139,9 +139,7 @@
debug!("Found socket device: guest cid = {:?}", socket_device.guest_cid());
let mut vsock_stream = VsockStream::new(socket_device, host_addr())?;
- let response = match vsock_stream.read_request()? {
- Request::Reverse(v) => Response::Reverse(v.into_iter().rev().collect()),
- };
+ let response = requests::process_request(vsock_stream.read_request()?);
vsock_stream.write_response(&response)?;
vsock_stream.shutdown()?;
diff --git a/rialto/src/requests/api.rs b/rialto/src/requests/api.rs
new file mode 100644
index 0000000..11fdde4
--- /dev/null
+++ b/rialto/src/requests/api.rs
@@ -0,0 +1,31 @@
+// Copyright 2023, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! This module contains the main API for the request processing module.
+
+use alloc::vec::Vec;
+use service_vm_comm::{Request, Response};
+
+/// Processes a request and returns the corresponding response.
+/// This function serves as the entry point for the request processing
+/// module.
+pub fn process_request(request: Request) -> Response {
+ match request {
+ Request::Reverse(v) => Response::Reverse(reverse(v)),
+ }
+}
+
+fn reverse(payload: Vec<u8>) -> Vec<u8> {
+ payload.into_iter().rev().collect()
+}
diff --git a/rialto/src/requests/mod.rs b/rialto/src/requests/mod.rs
new file mode 100644
index 0000000..ca22777
--- /dev/null
+++ b/rialto/src/requests/mod.rs
@@ -0,0 +1,19 @@
+// Copyright 2023, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! This module contains functions for the request processing.
+
+mod api;
+
+pub use api::process_request;