void http_client_switch_ioloop(struct http_client *client) { struct connection *_conn = client->conn_list->connections; struct http_client_host *host; struct http_client_peer *peer; /* move connections */ /* FIXME: we wouldn't necessarily need to switch all of them immediately, only those that have requests now. but also connections that get new requests before ioloop is switched again.. */ for (; _conn != NULL; _conn = _conn->next) { struct http_client_connection *conn = (struct http_client_connection *)_conn; http_client_connection_switch_ioloop(conn); } /* move peers */ for (peer = client->peers_list; peer != NULL; peer = peer->next) http_client_peer_switch_ioloop(peer); /* move dns lookups and delayed requests */ for (host = client->hosts_list; host != NULL; host = host->next) http_client_host_switch_ioloop(host); /* move timeouts */ if (client->to_failing_requests != NULL) { client->to_failing_requests = io_loop_move_timeout(&client->to_failing_requests); } }
static void pop3c_client_ioloop_changed(struct pop3c_client *client) { if (client->to != NULL) client->to = io_loop_move_timeout(&client->to); if (client->io != NULL) client->io = io_loop_move_io(&client->io); if (client->output != NULL) o_stream_switch_ioloop(client->output); }
void connection_switch_ioloop(struct connection *conn) { if (conn->io != NULL) conn->io = io_loop_move_io(&conn->io); if (conn->to != NULL) conn->to = io_loop_move_timeout(&conn->to); if (conn->output != NULL) o_stream_switch_ioloop(conn->output); }
void ldap_connection_switch_ioloop(struct ldap_connection *conn) { if (conn->io != NULL) conn->io = io_loop_move_io(&conn->io); if (conn->to_disconnect != NULL) conn->to_disconnect = io_loop_move_timeout(&conn->to_disconnect); if (conn->to_reconnect != NULL) conn->to_reconnect = io_loop_move_timeout(&conn->to_reconnect); unsigned int n = aqueue_count(conn->request_queue); for (unsigned int i = 0; i < n; i++) { struct ldap_op_queue_entry *const *reqp = array_idx(&(conn->request_array), aqueue_idx(conn->request_queue, i)); if ((*reqp)->to_abort != NULL) (*reqp)->to_abort = io_loop_move_timeout(&((*reqp)->to_abort)); } }