use crate::chunk::OutputChunk;
use crate::{
chunk::InputChunk,
tab::{CreateTabMetadata, TabId, TabMetadata},
};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum Request {
Subscribe(TabId),
Unsubscribe(TabId),
Input(TabId, InputChunk),
CreateTab(CreateTabMetadata),
ResizeTab(TabId, (u16, u16)),
Retask(TabId, TabId),
CloseTab(TabId),
DisconnectTab(TabId),
GlobalShutdown,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum Response {
Init(InitResponse),
Output(TabId, OutputChunk),
TabUpdate(TabMetadata),
Retask(TabId),
TabTerminated(TabId),
Disconnect,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct InitResponse {
pub tabs: HashMap<TabId, TabMetadata>,
}