x11rb_async/protocol/
record.rs

1// This file contains generated code. Do not edit directly.
2// To regenerate this, run 'make'.
3
4//! Bindings to the `Record` X11 extension.
5
6#![allow(clippy::too_many_arguments)]
7
8#[allow(unused_imports)]
9use std::borrow::Cow;
10#[allow(unused_imports)]
11use std::convert::TryInto;
12#[allow(unused_imports)]
13use crate::utils::RawFdContainer;
14#[allow(unused_imports)]
15use crate::x11_utils::{Request, RequestHeader, Serialize, TryParse, TryParseFd};
16use std::io::IoSlice;
17use crate::connection::RequestConnection;
18#[allow(unused_imports)]
19use crate::connection::Connection as X11Connection;
20#[allow(unused_imports)]
21use crate::cookie::{Cookie, CookieWithFds, VoidCookie};
22use crate::cookie::RecordEnableContextCookie;
23use crate::errors::ConnectionError;
24#[allow(unused_imports)]
25use crate::errors::ReplyOrIdError;
26use std::future::Future;
27use std::pin::Pin;
28
29pub use x11rb_protocol::protocol::record::*;
30
31/// Get the major opcode of this extension
32async fn major_opcode<Conn: RequestConnection + ?Sized>(conn: &Conn) -> Result<u8, ConnectionError> {
33    let info = conn.extension_information(X11_EXTENSION_NAME).await?;
34    let info = info.ok_or(ConnectionError::UnsupportedExtension)?;
35    Ok(info.major_opcode)
36}
37
38pub async fn query_version<Conn>(conn: &Conn, major_version: u16, minor_version: u16) -> Result<Cookie<'_, Conn, QueryVersionReply>, ConnectionError>
39where
40    Conn: RequestConnection + ?Sized,
41{
42    let request0 = QueryVersionRequest {
43        major_version,
44        minor_version,
45    };
46    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
47    let slices = [IoSlice::new(&bytes[0])];
48    assert_eq!(slices.len(), bytes.len());
49    conn.send_request_with_reply(&slices, fds).await
50}
51pub async fn create_context<'c, 'input, Conn>(conn: &'c Conn, context: Context, element_header: ElementHeader, client_specs: &'input [ClientSpec], ranges: &'input [Range]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
52where
53    Conn: RequestConnection + ?Sized,
54{
55    let request0 = CreateContextRequest {
56        context,
57        element_header,
58        client_specs: Cow::Borrowed(client_specs),
59        ranges: Cow::Borrowed(ranges),
60    };
61    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
62    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2]), IoSlice::new(&bytes[3])];
63    assert_eq!(slices.len(), bytes.len());
64    conn.send_request_without_reply(&slices, fds).await
65}
66pub async fn register_clients<'c, 'input, Conn>(conn: &'c Conn, context: Context, element_header: ElementHeader, client_specs: &'input [ClientSpec], ranges: &'input [Range]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
67where
68    Conn: RequestConnection + ?Sized,
69{
70    let request0 = RegisterClientsRequest {
71        context,
72        element_header,
73        client_specs: Cow::Borrowed(client_specs),
74        ranges: Cow::Borrowed(ranges),
75    };
76    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
77    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2]), IoSlice::new(&bytes[3])];
78    assert_eq!(slices.len(), bytes.len());
79    conn.send_request_without_reply(&slices, fds).await
80}
81pub async fn unregister_clients<'c, 'input, Conn>(conn: &'c Conn, context: Context, client_specs: &'input [ClientSpec]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
82where
83    Conn: RequestConnection + ?Sized,
84{
85    let request0 = UnregisterClientsRequest {
86        context,
87        client_specs: Cow::Borrowed(client_specs),
88    };
89    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
90    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
91    assert_eq!(slices.len(), bytes.len());
92    conn.send_request_without_reply(&slices, fds).await
93}
94pub async fn get_context<Conn>(conn: &Conn, context: Context) -> Result<Cookie<'_, Conn, GetContextReply>, ConnectionError>
95where
96    Conn: RequestConnection + ?Sized,
97{
98    let request0 = GetContextRequest {
99        context,
100    };
101    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
102    let slices = [IoSlice::new(&bytes[0])];
103    assert_eq!(slices.len(), bytes.len());
104    conn.send_request_with_reply(&slices, fds).await
105}
106pub async fn enable_context<Conn>(conn: &Conn, context: Context) -> Result<RecordEnableContextCookie<'_, Conn>, ConnectionError>
107where
108    Conn: RequestConnection + ?Sized,
109{
110    let request0 = EnableContextRequest {
111        context,
112    };
113    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
114    let slices = [IoSlice::new(&bytes[0])];
115    assert_eq!(slices.len(), bytes.len());
116    Ok(RecordEnableContextCookie::new(conn.send_request_with_reply(&slices, fds).await?))
117}
118pub async fn disable_context<Conn>(conn: &Conn, context: Context) -> Result<VoidCookie<'_, Conn>, ConnectionError>
119where
120    Conn: RequestConnection + ?Sized,
121{
122    let request0 = DisableContextRequest {
123        context,
124    };
125    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
126    let slices = [IoSlice::new(&bytes[0])];
127    assert_eq!(slices.len(), bytes.len());
128    conn.send_request_without_reply(&slices, fds).await
129}
130pub async fn free_context<Conn>(conn: &Conn, context: Context) -> Result<VoidCookie<'_, Conn>, ConnectionError>
131where
132    Conn: RequestConnection + ?Sized,
133{
134    let request0 = FreeContextRequest {
135        context,
136    };
137    let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
138    let slices = [IoSlice::new(&bytes[0])];
139    assert_eq!(slices.len(), bytes.len());
140    conn.send_request_without_reply(&slices, fds).await
141}
142/// Extension trait defining the requests of this extension.
143pub trait ConnectionExt: RequestConnection {
144    fn record_query_version(&self, major_version: u16, minor_version: u16) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, QueryVersionReply>, ConnectionError>> + Send + '_>>
145    {
146        Box::pin(query_version(self, major_version, minor_version))
147    }
148    fn record_create_context<'c, 'input, 'future>(&'c self, context: Context, element_header: ElementHeader, client_specs: &'input [ClientSpec], ranges: &'input [Range]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
149    where
150        'c: 'future,
151        'input: 'future,
152    {
153        Box::pin(create_context(self, context, element_header, client_specs, ranges))
154    }
155    fn record_register_clients<'c, 'input, 'future>(&'c self, context: Context, element_header: ElementHeader, client_specs: &'input [ClientSpec], ranges: &'input [Range]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
156    where
157        'c: 'future,
158        'input: 'future,
159    {
160        Box::pin(register_clients(self, context, element_header, client_specs, ranges))
161    }
162    fn record_unregister_clients<'c, 'input, 'future>(&'c self, context: Context, client_specs: &'input [ClientSpec]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
163    where
164        'c: 'future,
165        'input: 'future,
166    {
167        Box::pin(unregister_clients(self, context, client_specs))
168    }
169    fn record_get_context(&self, context: Context) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, GetContextReply>, ConnectionError>> + Send + '_>>
170    {
171        Box::pin(get_context(self, context))
172    }
173    fn record_enable_context(&self, context: Context) -> Pin<Box<dyn Future<Output = Result<RecordEnableContextCookie<'_, Self>, ConnectionError>> + Send + '_>>
174    {
175        Box::pin(enable_context(self, context))
176    }
177    fn record_disable_context(&self, context: Context) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
178    {
179        Box::pin(disable_context(self, context))
180    }
181    fn record_free_context(&self, context: Context) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
182    {
183        Box::pin(free_context(self, context))
184    }
185}
186
187impl<C: RequestConnection + ?Sized> ConnectionExt for C {}