Register denali on yellowstone, handle read requests.

This commit is contained in:
Drew Galbraith 2025-02-01 13:09:42 -08:00
parent a5cdd23f0b
commit 6f0dfa8719
6 changed files with 56 additions and 22 deletions

View file

@ -4,9 +4,8 @@ use crate::buffer::ByteBuffer;
use alloc::sync::Arc;
use alloc::vec::Vec;
use mammoth::cap::Capability;
use mammoth::sync::Mutex;
use mammoth::syscall;
use mammoth::task::Executor;
use mammoth::task::Spawner;
use mammoth::task::Task;
use mammoth::thread;
use mammoth::thread::JoinHandle;
@ -70,7 +69,7 @@ pub trait AsyncYunqServer
where
Self: Send + Sync + 'static,
{
fn server_loop(self: Arc<Self>, executor: Arc<Mutex<Executor>>) {
fn server_loop(self: Arc<Self>, spawner: Spawner) {
loop {
let mut byte_buffer = ByteBuffer::<1024>::new();
let mut cap_buffer = vec![0; 10];
@ -85,7 +84,7 @@ where
.at::<u64>(8)
.expect("Failed to access request length.");
let self_clone = self.clone();
executor.lock().spawn(Task::new((async move || {
spawner.spawn(Task::new((async move || {
self_clone
.handle_request_and_response(method, byte_buffer, cap_buffer, reply_port_cap)
.await;
@ -137,11 +136,11 @@ where
) -> impl Future<Output = Result<usize, ZError>> + Sync + Send;
}
pub fn spawn_async_server_thread<T>(server: Arc<T>, executor: Arc<Mutex<Executor>>) -> JoinHandle
pub fn spawn_async_server_thread<T>(server: Arc<T>, spawner: Spawner) -> JoinHandle
where
T: AsyncYunqServer + Send + Sync + 'static,
{
thread::spawn(move || {
server.server_loop(executor);
server.server_loop(spawner);
})
}