Lines Matching full:client

40 struct client {  struct
54 struct client **clients; argument
68 static void client_close(struct client *client) in client_close() argument
70 struct socket_handler *sh = client->sh; in client_close()
73 close(client->fd); in client_close()
74 if (client->poller) { in client_close()
75 console_poller_unregister(sh->console, client->poller); in client_close()
78 if (client->rbc) { in client_close()
79 ringbuffer_consumer_unregister(client->rbc); in client_close()
83 if (sh->clients[idx] == client) { in client_close()
90 free(client); in client_close()
91 client = NULL; in client_close()
111 static void client_set_blocked(struct client *client, bool blocked) in client_set_blocked() argument
115 if (client->blocked == blocked) { in client_set_blocked()
119 client->blocked = blocked; in client_set_blocked()
122 if (client->blocked) { in client_set_blocked()
126 console_poller_set_events(client->sh->console, client->poller, events); in client_set_blocked()
129 static ssize_t send_all(struct client *client, void *buf, size_t len, in send_all() argument
141 fd = client->fd; in send_all()
153 client_set_blocked(client, true); in send_all()
174 static int client_drain_queue(struct client *client, size_t force_len) in client_drain_queue() argument
187 if (!block && client->blocked) { in client_drain_queue()
192 len = ringbuffer_dequeue_peek(client->rbc, total_len, &buf); in client_drain_queue()
197 wlen = send_all(client, buf, len, block); in client_drain_queue()
217 ringbuffer_dequeue_commit(client->rbc, total_len); in client_drain_queue()
224 struct client *client = arg; in client_ringbuffer_poll() local
228 len = ringbuffer_len(client->rbc); in client_ringbuffer_poll()
233 console_poller_set_timeout(client->sh->console, client->poller, in client_ringbuffer_poll()
238 rc = client_drain_queue(client, force_len); in client_ringbuffer_poll()
240 client->rbc = NULL; in client_ringbuffer_poll()
241 client_close(client); in client_ringbuffer_poll()
251 struct client *client = data; in client_timeout() local
254 if (client->blocked) { in client_timeout()
260 rc = client_drain_queue(client, 0); in client_timeout()
262 client->poller = NULL; in client_timeout()
263 client_close(client); in client_timeout()
274 struct client *client = data; in client_poll() local
279 rc = recv(client->fd, buf, sizeof(buf), MSG_DONTWAIT); in client_poll()
294 client_set_blocked(client, false); in client_poll()
295 rc = client_drain_queue(client, 0); in client_poll()
304 client->poller = NULL; in client_poll()
305 client_close(client); in client_poll()
313 struct client *client; in socket_poll() local
328 client = malloc(sizeof(*client)); in socket_poll()
329 memset(client, 0, sizeof(*client)); in socket_poll()
331 client->sh = sh; in socket_poll()
332 client->fd = fd; in socket_poll()
333 client->poller = console_poller_register(sh->console, handler, in socket_poll()
335 client->fd, POLLIN, client); in socket_poll()
336 client->rbc = console_ringbuffer_consumer_register( in socket_poll()
337 sh->console, client_ringbuffer_poll, client); in socket_poll()
348 sh->clients[n] = client; in socket_poll()
360 struct client *client; in dbus_create_socket_consumer() local
384 client = malloc(sizeof(*client)); in dbus_create_socket_consumer()
385 if (client == NULL) { in dbus_create_socket_consumer()
386 warnx("Failed to allocate client structure."); in dbus_create_socket_consumer()
390 memset(client, 0, sizeof(*client)); in dbus_create_socket_consumer()
392 client->sh = sh; in dbus_create_socket_consumer()
393 client->fd = fds[0]; in dbus_create_socket_consumer()
394 client->poller = console_poller_register(sh->console, &sh->handler, in dbus_create_socket_consumer()
396 client->fd, POLLIN, client); in dbus_create_socket_consumer()
397 client->rbc = console_ringbuffer_consumer_register( in dbus_create_socket_consumer()
398 sh->console, client_ringbuffer_poll, client); in dbus_create_socket_consumer()
399 if (client->rbc == NULL) { in dbus_create_socket_consumer()
415 sh->clients[n] = client; in dbus_create_socket_consumer()
421 free(client); in dbus_create_socket_consumer()
508 struct client *c = sh->clients[0]; in socket_deselect()