aboutsummaryrefslogtreecommitdiff
path: root/src/client/events.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-06 02:27:06 +0300
committerGitHub <noreply@github.com>2026-09-06 02:27:06 +0300
commit9e9bc8a144667a6b7debfd4f0c7a31ff0e11493a (patch)
tree03f1259f91fd9edeacfd4b904f2e84d4acf25232 /src/client/events.rs
parent35b0dff96579f099e0436290085024424ffb289c (diff)
feat: manage multiple ssh machines from one client (#3670)
Diffstat (limited to 'src/client/events.rs')
-rw-r--r--src/client/events.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/client/events.rs b/src/client/events.rs
new file mode 100644
index 00000000..43f7b8ad
--- /dev/null
+++ b/src/client/events.rs
@@ -0,0 +1,34 @@
+use super::*;
+
+/// Internal events for the client event loop.
+pub(super) enum ClientLoopEvent {
+ #[cfg(unix)]
+ StdinInput(Vec<u8>),
+ #[cfg(unix)]
+ PixelMouse(Vec<u8>, crate::input::mouse::HostGeometry),
+ #[cfg(unix)]
+ DirectGraphicsResponse(direct_graphics::Response),
+ #[cfg(windows)]
+ StdinEvents(Vec<crate::protocol::ClientInputEvent>),
+ Resize(u16, u16, u32, u32, bool),
+ TerminalUnavailable(io::Error),
+ ServerMessage {
+ endpoint_id: endpoint::ClientEndpointId,
+ generation: u64,
+ message: Box<ServerMessage>,
+ },
+ ServerDisconnected {
+ endpoint_id: endpoint::ClientEndpointId,
+ generation: u64,
+ },
+ EndpointSupervisor(endpoint::EndpointSupervisorEvent),
+ EndpointCatalog(Result<Vec<endpoint::SavedSshEndpoint>, String>),
+ ActivateEndpoint {
+ endpoint_id: endpoint::ClientEndpointId,
+ target: Option<shell::ClientEndpointFocusTarget>,
+ /// A superseded handoff deliberately starts a fresh target-on epoch even when source and
+ /// latest target have the same identity after restoration.
+ force: bool,
+ },
+ Timer,
+}