/** * network_write_cancel(cookie): * Cancel the buffer write for which the cookie ${cookie} was returned by * network_write. Do not invoke the callback associated with the write. */ void network_write_cancel(void * cookie) { struct network_write_cookie * C = cookie; /* Kill the network event. */ events_network_cancel(C->fd, EVENTS_NETWORK_OP_WRITE); /* Free the cookie. */ free(C); }
/** * network_accept_cancel(cookie); * Cancel the connection accept for which the cookie ${cookie} was returned * by network_accept. Do not invoke the callback associated with the accept. */ void network_accept_cancel(void * cookie) { struct accept_cookie * C = cookie; /* Cancel the network event. */ events_network_cancel(C->fd, EVENTS_NETWORK_OP_READ); /* Free the cookie. */ free(C); }
/** * network_connect_cancel(cookie): * Cancel the connection attempt for which ${cookie} was returned by * network_connect. Do not invoke the associated callback. */ void network_connect_cancel(void * cookie) { struct connect_cookie * C = cookie; /* We should have either an immediate callback or a socket. */ assert((C->cookie_immediate != NULL) || (C->s != -1)); assert((C->cookie_immediate == NULL) || (C->s == -1)); /* Cancel any immediate callback. */ if (C->cookie_immediate != NULL) events_immediate_cancel(C->cookie_immediate); /* Close any socket. */ if (C->s != -1) { events_network_cancel(C->s, EVENTS_NETWORK_OP_WRITE); close(C->s); } /* Free the cookie. */ free(C); }