x11rb/protocol/
res.rs

1// This file contains generated code. Do not edit directly.
2// To regenerate this, run 'make'.
3
4//! Bindings to the `Res` 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::errors::ConnectionError;
23#[allow(unused_imports)]
24use crate::errors::ReplyOrIdError;
25#[allow(unused_imports)]
26use super::xproto;
27
28pub use x11rb_protocol::protocol::res::*;
29
30/// Get the major opcode of this extension
31fn major_opcode<Conn: RequestConnection + ?Sized>(conn: &Conn) -> Result<u8, ConnectionError> {
32    let info = conn.extension_information(X11_EXTENSION_NAME)?;
33    let info = info.ok_or(ConnectionError::UnsupportedExtension)?;
34    Ok(info.major_opcode)
35}
36
37pub fn query_version<Conn>(conn: &Conn, client_major: u8, client_minor: u8) -> Result<Cookie<'_, Conn, QueryVersionReply>, ConnectionError>
38where
39    Conn: RequestConnection + ?Sized,
40{
41    let request0 = QueryVersionRequest {
42        client_major,
43        client_minor,
44    };
45    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
46    let slices = [IoSlice::new(&bytes[0])];
47    assert_eq!(slices.len(), bytes.len());
48    conn.send_request_with_reply(&slices, fds)
49}
50
51pub fn query_clients<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, QueryClientsReply>, ConnectionError>
52where
53    Conn: RequestConnection + ?Sized,
54{
55    let request0 = QueryClientsRequest;
56    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
57    let slices = [IoSlice::new(&bytes[0])];
58    assert_eq!(slices.len(), bytes.len());
59    conn.send_request_with_reply(&slices, fds)
60}
61
62pub fn query_client_resources<Conn>(conn: &Conn, xid: u32) -> Result<Cookie<'_, Conn, QueryClientResourcesReply>, ConnectionError>
63where
64    Conn: RequestConnection + ?Sized,
65{
66    let request0 = QueryClientResourcesRequest {
67        xid,
68    };
69    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
70    let slices = [IoSlice::new(&bytes[0])];
71    assert_eq!(slices.len(), bytes.len());
72    conn.send_request_with_reply(&slices, fds)
73}
74
75pub fn query_client_pixmap_bytes<Conn>(conn: &Conn, xid: u32) -> Result<Cookie<'_, Conn, QueryClientPixmapBytesReply>, ConnectionError>
76where
77    Conn: RequestConnection + ?Sized,
78{
79    let request0 = QueryClientPixmapBytesRequest {
80        xid,
81    };
82    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
83    let slices = [IoSlice::new(&bytes[0])];
84    assert_eq!(slices.len(), bytes.len());
85    conn.send_request_with_reply(&slices, fds)
86}
87
88pub fn query_client_ids<'c, 'input, Conn>(conn: &'c Conn, specs: &'input [ClientIdSpec]) -> Result<Cookie<'c, Conn, QueryClientIdsReply>, ConnectionError>
89where
90    Conn: RequestConnection + ?Sized,
91{
92    let request0 = QueryClientIdsRequest {
93        specs: Cow::Borrowed(specs),
94    };
95    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
96    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
97    assert_eq!(slices.len(), bytes.len());
98    conn.send_request_with_reply(&slices, fds)
99}
100
101pub fn query_resource_bytes<'c, 'input, Conn>(conn: &'c Conn, client: u32, specs: &'input [ResourceIdSpec]) -> Result<Cookie<'c, Conn, QueryResourceBytesReply>, ConnectionError>
102where
103    Conn: RequestConnection + ?Sized,
104{
105    let request0 = QueryResourceBytesRequest {
106        client,
107        specs: Cow::Borrowed(specs),
108    };
109    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
110    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
111    assert_eq!(slices.len(), bytes.len());
112    conn.send_request_with_reply(&slices, fds)
113}
114
115/// Extension trait defining the requests of this extension.
116pub trait ConnectionExt: RequestConnection {
117    fn res_query_version(&self, client_major: u8, client_minor: u8) -> Result<Cookie<'_, Self, QueryVersionReply>, ConnectionError>
118    {
119        query_version(self, client_major, client_minor)
120    }
121    fn res_query_clients(&self) -> Result<Cookie<'_, Self, QueryClientsReply>, ConnectionError>
122    {
123        query_clients(self)
124    }
125    fn res_query_client_resources(&self, xid: u32) -> Result<Cookie<'_, Self, QueryClientResourcesReply>, ConnectionError>
126    {
127        query_client_resources(self, xid)
128    }
129    fn res_query_client_pixmap_bytes(&self, xid: u32) -> Result<Cookie<'_, Self, QueryClientPixmapBytesReply>, ConnectionError>
130    {
131        query_client_pixmap_bytes(self, xid)
132    }
133    fn res_query_client_ids<'c, 'input>(&'c self, specs: &'input [ClientIdSpec]) -> Result<Cookie<'c, Self, QueryClientIdsReply>, ConnectionError>
134    {
135        query_client_ids(self, specs)
136    }
137    fn res_query_resource_bytes<'c, 'input>(&'c self, client: u32, specs: &'input [ResourceIdSpec]) -> Result<Cookie<'c, Self, QueryResourceBytesReply>, ConnectionError>
138    {
139        query_resource_bytes(self, client, specs)
140    }
141}
142
143impl<C: RequestConnection + ?Sized> ConnectionExt for C {}