Skip to content

Commit

Permalink
refactor(events): use the client DisconnectEvent instead of the loc…
Browse files Browse the repository at this point in the history
…al `ClientDisconnectedEvent`
  • Loading branch information
vyfor committed Dec 6, 2024
1 parent 6493da4 commit 6535683
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 30 deletions.
5 changes: 3 additions & 2 deletions src/ipc/pipe/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ pub mod platform;
use std::sync::Arc;
use std::{io, sync::mpsc::Sender};

use crate::client_event;
use crate::{
local_event,
messages::{events::local::ErrorEvent, message::Message},
Expand Down Expand Up @@ -30,9 +31,9 @@ pub trait PipeClientImpl {
type PipeType;
}

fn report_error(tx: &Sender<Message>, error: io::Error) {
fn report_error(id: u32, tx: &Sender<Message>, error: io::Error) {
if error.kind() == io::ErrorKind::BrokenPipe {
tx.send(local_event!(0, ClientDisconnected)).ok();
tx.send(client_event!(id, Disconnect)).ok();
return;
}

Expand Down
6 changes: 3 additions & 3 deletions src/ipc/pipe/platform/unix/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ use std::os::unix::net::UnixStream;
use std::sync::mpsc::Sender;
use std::thread::JoinHandle;

use crate::client_event;
use crate::ipc::pipe::{report_error, PipeClientImpl};
use crate::local_event;
use crate::messages::events::client::ClientEvent;
use crate::messages::events::event::Event;
use crate::messages::message::Message;
Expand Down Expand Up @@ -48,7 +48,7 @@ impl PipeClientImpl for PipeClient {
loop {
match read_pipe.read(&mut buf) {
Ok(0) => {
tx.send(local_event!(id, ClientDisconnected)).ok();
tx.send(client_event!(id, Disconnect)).ok();
break;
}
Ok(n) => match ClientEvent::deserialize(&buf[..n]) {
Expand All @@ -60,7 +60,7 @@ impl PipeClientImpl for PipeClient {
}
},
Err(e) => {
report_error(&tx, e);
report_error(id, &tx, e);
break;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/ipc/pipe/platform/unix/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl PipeServerImpl for PipeServer {
session_manager,
pipe_name: pipe_name.to_string(),
tx,
next_client_id: Arc::new(AtomicU32::new(1)),
next_client_id: Arc::new(AtomicU32::new(0)),
running: Arc::new(AtomicBool::new(false)),
listener: None,
thread_handle: None,
Expand Down
8 changes: 4 additions & 4 deletions src/ipc/pipe/platform/windows/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ use std::sync::Arc;
use std::thread::JoinHandle;

use super::{GetOverlappedResult, Overlapped, ReadFile, WriteFile, ERROR_IO_PENDING};
use crate::client_event;
use crate::ipc::pipe::{report_error, PipeClientImpl};
use crate::local_event;
use crate::messages::events::client::ClientEvent;
use crate::messages::events::event::Event;
use crate::messages::message::Message;
Expand Down Expand Up @@ -90,7 +90,7 @@ impl PipeClientImpl for PipeClient {
if read_result == 0 {
let error = io::Error::last_os_error();
if error.raw_os_error() != Some(ERROR_IO_PENDING as i32) {
report_error(&tx, io::Error::last_os_error());
report_error(id, &tx, error);
break;
}
}
Expand All @@ -102,12 +102,12 @@ impl PipeClientImpl for PipeClient {
1,
) == 0
{
report_error(&tx, io::Error::last_os_error());
report_error(id, &tx, io::Error::last_os_error());
break;
}

if bytes_read == 0 {
tx.send(local_event!(id, ClientDisconnected)).ok();
tx.send(client_event!(id, Disconnect)).ok();
break;
}

Expand Down
2 changes: 1 addition & 1 deletion src/ipc/pipe/platform/windows/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ impl PipeServerImpl for PipeServer {
session_manager,
pipe_name: pipe_name.to_string(),
tx,
next_client_id: Arc::new(AtomicU32::new(1)),
next_client_id: Arc::new(AtomicU32::new(0)),
running: Arc::new(AtomicBool::new(false)),
thread_handle: None,
}
Expand Down
15 changes: 0 additions & 15 deletions src/messages/events/local/client_disconnected.rs

This file was deleted.

4 changes: 0 additions & 4 deletions src/messages/events/local/mod.rs
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
pub mod client_disconnected;
pub mod error;

pub use client_disconnected::ClientDisconnectedEvent;
pub use error::ErrorEvent;

use super::event::{EventContext, OnEvent};

#[derive(Debug)]
pub enum LocalEvent {
ClientDisconnected(ClientDisconnectedEvent),
Error(ErrorEvent),
}

impl OnEvent for LocalEvent {
fn on_event(self, ctx: &mut EventContext) -> crate::Result<()> {
match self {
Self::ClientDisconnected(e) => e.on_event(ctx),
Self::Error(e) => e.on_event(ctx),
}
}
Expand Down

0 comments on commit 6535683

Please sign in to comment.