cleanup server code + fix a lost update case (#191)

This commit is contained in:
Ferdinand Schober
2024-09-05 02:31:10 +02:00
committed by GitHub
parent 6cd190191e
commit 39fed0344c
5 changed files with 75 additions and 80 deletions

View File

@@ -30,6 +30,7 @@ pub fn run() -> Result<(), IpcError> {
struct Cli {
clients: Vec<(ClientHandle, ClientConfig, ClientState)>,
changed: Option<ClientHandle>,
rx: AsyncFrontendEventReader,
tx: AsyncFrontendRequestWriter,
}
@@ -38,6 +39,7 @@ impl Cli {
fn new(rx: AsyncFrontendEventReader, tx: AsyncFrontendRequestWriter) -> Cli {
Self {
clients: vec![],
changed: None,
rx,
tx,
}
@@ -80,9 +82,14 @@ impl Cli {
event = self.rx.next() => {
if let Some(event) = event {
self.handle_event(event?);
} else {
break Ok(());
}
}
}
if let Some(handle) = self.changed.take() {
self.update_client(handle).await?;
}
}
}
@@ -202,6 +209,7 @@ impl Cli {
fn handle_event(&mut self, event: FrontendEvent) {
match event {
FrontendEvent::Changed(h) => self.changed = Some(h),
FrontendEvent::Created(h, c, s) => {
eprint!("client added ({h}): ");
print_config(&c);