Lines Matching refs:connection
172 struct wl_connection *connection; in wl_connection_create() local
174 connection = zalloc(sizeof *connection); in wl_connection_create()
175 if (connection == NULL) in wl_connection_create()
178 connection->fd = fd; in wl_connection_create()
180 return connection; in wl_connection_create()
204 wl_connection_close_fds_in(struct wl_connection *connection, int max) in wl_connection_close_fds_in() argument
206 close_fds(&connection->fds_in, max); in wl_connection_close_fds_in()
210 wl_connection_destroy(struct wl_connection *connection) in wl_connection_destroy() argument
212 int fd = connection->fd; in wl_connection_destroy()
214 close_fds(&connection->fds_out, -1); in wl_connection_destroy()
215 close_fds(&connection->fds_in, -1); in wl_connection_destroy()
216 free(connection); in wl_connection_destroy()
222 wl_connection_copy(struct wl_connection *connection, void *data, size_t size) in wl_connection_copy() argument
224 wl_buffer_copy(&connection->in, data, size); in wl_connection_copy()
228 wl_connection_consume(struct wl_connection *connection, size_t size) in wl_connection_consume() argument
230 connection->in.tail += size; in wl_connection_consume()
289 wl_connection_flush(struct wl_connection *connection) in wl_connection_flush() argument
297 if (!connection->want_flush) in wl_connection_flush()
300 tail = connection->out.tail; in wl_connection_flush()
301 while (connection->out.head - connection->out.tail > 0) { in wl_connection_flush()
302 wl_buffer_get_iov(&connection->out, iov, &count); in wl_connection_flush()
304 build_cmsg(&connection->fds_out, cmsg, &clen); in wl_connection_flush()
315 len = sendmsg(connection->fd, &msg, in wl_connection_flush()
322 close_fds(&connection->fds_out, MAX_FDS_OUT); in wl_connection_flush()
324 connection->out.tail += len; in wl_connection_flush()
327 connection->want_flush = 0; in wl_connection_flush()
329 return connection->out.head - tail; in wl_connection_flush()
333 wl_connection_pending_input(struct wl_connection *connection) in wl_connection_pending_input() argument
335 return wl_buffer_size(&connection->in); in wl_connection_pending_input()
339 wl_connection_read(struct wl_connection *connection) in wl_connection_read() argument
346 if (wl_buffer_size(&connection->in) >= sizeof(connection->in.data)) { in wl_connection_read()
351 wl_buffer_put_iov(&connection->in, iov, &count); in wl_connection_read()
362 len = wl_os_recvmsg_cloexec(connection->fd, &msg, MSG_DONTWAIT); in wl_connection_read()
368 ret = decode_cmsg(&connection->fds_in, &msg); in wl_connection_read()
372 connection->in.head += len; in wl_connection_read()
374 return wl_connection_pending_input(connection); in wl_connection_read()
378 wl_connection_write(struct wl_connection *connection, in wl_connection_write() argument
381 if (connection->out.head - connection->out.tail + in wl_connection_write()
382 count > ARRAY_LENGTH(connection->out.data)) { in wl_connection_write()
383 connection->want_flush = 1; in wl_connection_write()
384 if (wl_connection_flush(connection) < 0) in wl_connection_write()
388 if (wl_buffer_put(&connection->out, data, count) < 0) in wl_connection_write()
391 connection->want_flush = 1; in wl_connection_write()
397 wl_connection_queue(struct wl_connection *connection, in wl_connection_queue() argument
400 if (connection->out.head - connection->out.tail + in wl_connection_queue()
401 count > ARRAY_LENGTH(connection->out.data)) { in wl_connection_queue()
402 connection->want_flush = 1; in wl_connection_queue()
403 if (wl_connection_flush(connection) < 0) in wl_connection_queue()
407 return wl_buffer_put(&connection->out, data, count); in wl_connection_queue()
424 wl_connection_get_fd(struct wl_connection *connection) in wl_connection_get_fd() argument
426 return connection->fd; in wl_connection_get_fd()
430 wl_connection_put_fd(struct wl_connection *connection, int32_t fd) in wl_connection_put_fd() argument
432 if (wl_buffer_size(&connection->fds_out) == MAX_FDS_OUT * sizeof fd) { in wl_connection_put_fd()
433 connection->want_flush = 1; in wl_connection_put_fd()
434 if (wl_connection_flush(connection) < 0) in wl_connection_put_fd()
438 return wl_buffer_put(&connection->fds_out, &fd, sizeof fd); in wl_connection_put_fd()
688 wl_connection_demarshal(struct wl_connection *connection, in wl_connection_demarshal() argument
705 wl_connection_consume(connection, size); in wl_connection_demarshal()
712 wl_connection_consume(connection, size); in wl_connection_demarshal()
722 wl_connection_copy(connection, p, size); in wl_connection_demarshal()
836 if (connection->fds_in.tail == connection->fds_in.head) { in wl_connection_demarshal()
845 wl_buffer_copy(&connection->fds_in, &fd, sizeof fd); in wl_connection_demarshal()
846 connection->fds_in.tail += sizeof fd; in wl_connection_demarshal()
855 wl_connection_consume(connection, size); in wl_connection_demarshal()
861 wl_connection_consume(connection, size); in wl_connection_demarshal()
1034 struct wl_connection *connection) in copy_fds_to_connection() argument
1049 if (wl_connection_put_fd(connection, fd)) { in copy_fds_to_connection()
1202 wl_closure_send(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_send() argument
1209 if (copy_fds_to_connection(closure, connection)) in wl_closure_send()
1223 result = wl_connection_write(connection, buffer, size); in wl_closure_send()
1230 wl_closure_queue(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_queue() argument
1237 if (copy_fds_to_connection(closure, connection)) in wl_closure_queue()
1251 result = wl_connection_queue(connection, buffer, size); in wl_closure_queue()