use std::net::SocketAddr;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
pub enum ServerBulk<'a> {
#[serde(borrow)]
ClipboardRequest(ServerClipboardRequest<'a>),
#[serde(borrow)]
ClipboardHeader(ServerClipboardHeader<'a>),
}
impl<'a> std::fmt::Display for ServerBulk<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
ServerBulk::ClipboardRequest(e) => e.fmt(f),
ServerBulk::ClipboardHeader(e) => e.fmt(f),
}
}
}
#[derive(Debug, Deserialize, Serialize)]
pub enum ClientBulk<'a> {
#[serde(borrow)]
ClipboardRequest(ClientClipboardRequest<'a>),
#[serde(borrow)]
ClipboardHeader(ClientClipboardHeader<'a>),
}
impl<'a> std::fmt::Display for ClientBulk<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
ClientBulk::ClipboardRequest(e) => e.fmt(f),
ClientBulk::ClipboardHeader(e) => e.fmt(f),
}
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ServerClipboardRequest<'a> {
pub requested_type: &'a str,
pub max_size_bytes: u64,
pub request_client: Option<SocketAddr>,
}
impl<'a> std::fmt::Display for ServerClipboardRequest<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(
format!(
"ServerClipboardRequest(requested_type={}, max_size_bytes={}, request_client={:?})",
self.requested_type, self.max_size_bytes, self.request_client,
)
.as_str(),
)
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ServerClipboardHeader<'a> {
pub requested_type: &'a str,
pub data_type: Option<&'a str>,
pub content_len_bytes: u64,
}
impl<'a> std::fmt::Display for ServerClipboardHeader<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(
format!(
"ServerClipboardHeader(requested_type={}, data_type={:?}, content_len_bytes={})",
self.requested_type, self.data_type, self.content_len_bytes,
)
.as_str(),
)
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ClientClipboardRequest<'a> {
pub requested_type: &'a str,
pub max_size_bytes: u64,
}
impl<'a> std::fmt::Display for ClientClipboardRequest<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(
format!(
"ClientClipboardRequest(requested_type={}, max_size_bytes={})",
self.requested_type, self.max_size_bytes,
)
.as_str(),
)
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ClientClipboardHeader<'a> {
pub requested_type: &'a str,
pub data_type: Option<&'a str>,
pub content_len_bytes: u64,
pub request_client: Option<SocketAddr>,
}
impl<'a> std::fmt::Display for ClientClipboardHeader<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(
format!(
"ClientClipboardHeader(requested_type={}, data_type={:?}, content_len_bytes={}, request_client={:?})",
self.requested_type, self.data_type, self.content_len_bytes, self.request_client,
)
.as_str(),
)
}
}