Home | History | Annotate | Download | only in src

Lines Matching defs:connection

23  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
164 struct wl_connection *connection;
166 connection = zalloc(sizeof *connection);
167 if (connection == NULL)
170 connection->fd = fd;
172 return connection;
195 wl_connection_destroy(struct wl_connection *connection)
197 int fd = connection->fd;
199 close_fds(&connection->fds_out, -1);
200 close_fds(&connection->fds_in, -1);
201 free(connection);
207 wl_connection_copy(struct wl_connection *connection, void *data, size_t size)
209 wl_buffer_copy(&connection->in, data, size);
213 wl_connection_consume(struct wl_connection *connection, size_t size)
215 connection->in.tail += size;
274 wl_connection_flush(struct wl_connection *connection)
282 if (!connection->want_flush)
285 tail = connection->out.tail;
286 while (connection->out.head - connection->out.tail > 0) {
287 wl_buffer_get_iov(&connection->out, iov, &count);
289 build_cmsg(&connection->fds_out, cmsg, &clen);
300 len = sendmsg(connection->fd, &msg,
307 close_fds(&connection->fds_out, MAX_FDS_OUT);
309 connection->out.tail += len;
312 connection->want_flush = 0;
314 return connection->out.head - tail;
318 wl_connection_pending_input(struct wl_connection *connection)
320 return wl_buffer_size(&connection->in);
324 wl_connection_read(struct wl_connection *connection)
331 if (wl_buffer_size(&connection->in) >= sizeof(connection->in.data)) {
336 wl_buffer_put_iov(&connection->in, iov, &count);
347 len = wl_os_recvmsg_cloexec(connection->fd, &msg, MSG_DONTWAIT);
353 ret = decode_cmsg(&connection->fds_in, &msg);
357 connection->in.head += len;
359 return wl_connection_pending_input(connection);
363 wl_connection_write(struct wl_connection *connection,
366 if (connection->out.head - connection->out.tail +
367 count > ARRAY_LENGTH(connection->out.data)) {
368 connection->want_flush = 1;
369 if (wl_connection_flush(connection) < 0)
373 if (wl_buffer_put(&connection->out, data, count) < 0)
376 connection->want_flush = 1;
382 wl_connection_queue(struct wl_connection *connection,
385 if (connection->out.head - connection->out.tail +
386 count > ARRAY_LENGTH(connection->out.data)) {
387 connection->want_flush = 1;
388 if (wl_connection_flush(connection) < 0)
392 return wl_buffer_put(&connection->out, data, count);
409 wl_connection_get_fd(struct wl_connection *connection)
411 return connection->fd;
415 wl_connection_put_fd(struct wl_connection *connection, int32_t fd)
417 if (wl_buffer_size(&connection->fds_out) == MAX_FDS_OUT * sizeof fd) {
418 connection->want_flush = 1;
419 if (wl_connection_flush(connection) < 0)
423 return wl_buffer_put(&connection->fds_out, &fd, sizeof fd);
622 wl_connection_demarshal(struct wl_connection *connection,
640 wl_connection_consume(connection, size);
648 wl_connection_consume(connection, size);
656 wl_connection_copy(connection, p, size);
767 if (connection->fds_in.tail == connection->fds_in.head) {
776 wl_buffer_copy(&connection->fds_in, &fd, sizeof fd);
777 connection->fds_in.tail += sizeof fd;
789 wl_connection_consume(connection, size);
795 wl_connection_consume(connection, size);
948 struct wl_connection *connection)
963 if (wl_connection_put_fd(connection, fd)) {
1115 wl_closure_send(struct wl_closure *closure, struct wl_connection *connection)
1122 if (copy_fds_to_connection(closure, connection))
1136 result = wl_connection_write(connection, buffer, size);
1143 wl_closure_queue(struct wl_closure *closure, struct wl_connection *connection)
1150 if (copy_fds_to_connection(closure, connection))
1164 result = wl_connection_queue(connection, buffer, size);