xref: /aosp_15_r20/external/virglrenderer/server/render_socket.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1 /*
2  * Copyright 2021 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #ifndef RENDER_SOCKET_H
7 #define RENDER_SOCKET_H
8 
9 #include "render_common.h"
10 
11 struct render_socket {
12    int fd;
13 };
14 
15 bool
16 render_socket_pair(int out_fds[static 2]);
17 
18 bool
19 render_socket_is_seqpacket(int fd);
20 
21 void
22 render_socket_init(struct render_socket *socket, int fd);
23 
24 void
25 render_socket_fini(struct render_socket *socket);
26 
27 bool
28 render_socket_receive_request(struct render_socket *socket,
29                               void *data,
30                               size_t max_size,
31                               size_t *out_size);
32 
33 bool
34 render_socket_receive_request_with_fds(struct render_socket *socket,
35                                        void *data,
36                                        size_t max_size,
37                                        size_t *out_size,
38                                        int *fds,
39                                        int max_fd_count,
40                                        int *out_fd_count);
41 
42 bool
43 render_socket_receive_data(struct render_socket *socket, void *data, size_t size);
44 
45 bool
46 render_socket_send_reply(struct render_socket *socket, const void *data, size_t size);
47 
48 bool
49 render_socket_send_reply_with_fds(struct render_socket *socket,
50                                   const void *data,
51                                   size_t size,
52                                   const int *fds,
53                                   int fd_count);
54 
55 #endif /* RENDER_SOCKET_H */
56