1use std::net::SocketAddr;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Deserialize, Serialize)]
8pub enum ServerBulk<'a> {
9 #[serde(borrow)]
11 ClipboardRequest(ServerClipboardRequest<'a>),
12
13 #[serde(borrow)]
15 ClipboardHeader(ServerClipboardHeader<'a>),
16}
17
18impl<'a> std::fmt::Display for ServerBulk<'a> {
19 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
20 match self {
21 ServerBulk::ClipboardRequest(e) => e.fmt(f),
22 ServerBulk::ClipboardHeader(e) => e.fmt(f),
23 }
24 }
25}
26
27#[derive(Debug, Deserialize, Serialize)]
30pub enum ClientBulk<'a> {
31 #[serde(borrow)]
33 ClipboardRequest(ClientClipboardRequest<'a>),
34
35 #[serde(borrow)]
37 ClipboardHeader(ClientClipboardHeader<'a>),
38}
39
40impl<'a> std::fmt::Display for ClientBulk<'a> {
41 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
42 match self {
43 ClientBulk::ClipboardRequest(e) => e.fmt(f),
44 ClientBulk::ClipboardHeader(e) => e.fmt(f),
45 }
46 }
47}
48
49#[derive(Debug, Deserialize, Serialize)]
53pub struct ServerClipboardRequest<'a> {
54 pub requested_type: &'a str,
57
58 pub max_size_bytes: u64,
60
61 pub request_client: Option<SocketAddr>,
64}
65
66impl<'a> std::fmt::Display for ServerClipboardRequest<'a> {
67 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
68 f.write_str(
69 format!(
70 "ServerClipboardRequest(requested_type={}, max_size_bytes={}, request_client={:?})",
71 self.requested_type, self.max_size_bytes, self.request_client,
72 )
73 .as_str(),
74 )
75 }
76}
77
78#[derive(Debug, Deserialize, Serialize)]
82pub struct ServerClipboardHeader<'a> {
83 pub requested_type: &'a str,
85
86 pub data_type: Option<&'a str>,
89
90 pub content_len_bytes: u64,
92}
93
94impl<'a> std::fmt::Display for ServerClipboardHeader<'a> {
95 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
96 f.write_str(
97 format!(
98 "ServerClipboardHeader(requested_type={}, data_type={:?}, content_len_bytes={})",
99 self.requested_type, self.data_type, self.content_len_bytes,
100 )
101 .as_str(),
102 )
103 }
104}
105
106#[derive(Debug, Deserialize, Serialize)]
110pub struct ClientClipboardRequest<'a> {
111 pub requested_type: &'a str,
114
115 pub max_size_bytes: u64,
117}
118
119impl<'a> std::fmt::Display for ClientClipboardRequest<'a> {
120 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
121 f.write_str(
122 format!(
123 "ClientClipboardRequest(requested_type={}, max_size_bytes={})",
124 self.requested_type, self.max_size_bytes,
125 )
126 .as_str(),
127 )
128 }
129}
130
131#[derive(Debug, Deserialize, Serialize)]
135pub struct ClientClipboardHeader<'a> {
136 pub requested_type: &'a str,
138
139 pub data_type: Option<&'a str>,
142
143 pub content_len_bytes: u64,
145
146 pub request_client: Option<SocketAddr>,
149}
150
151impl<'a> std::fmt::Display for ClientClipboardHeader<'a> {
152 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
153 f.write_str(
154 format!(
155 "ClientClipboardHeader(requested_type={}, data_type={:?}, content_len_bytes={}, request_client={:?})",
156 self.requested_type, self.data_type, self.content_len_bytes, self.request_client,
157 )
158 .as_str(),
159 )
160 }
161}