static ngx_int_t longpoll_reserve(subscriber_t *self) { full_subscriber_t *fsub = (full_subscriber_t *)self; ensure_request_hold(fsub); self->reserved++; DBG("%p reserve for req %p, reservations: %i", self, fsub->sub.request, self->reserved); return NGX_OK; }
static ngx_int_t websocket_reserve(subscriber_t *self) { full_subscriber_t *fsub = (full_subscriber_t *)self; ensure_request_hold(fsub); fsub->reserved++; DBG("%p reserve for req %p. reservations: %i", self, fsub->request, fsub->reserved); return NGX_OK; }
static ngx_int_t ensure_handshake(full_subscriber_t *fsub) { if(fsub->shook_hands == 0) { ensure_request_hold(fsub); websocket_perform_handshake(fsub); fsub->shook_hands = 1; return NGX_OK; } return NGX_DECLINED; }
ngx_int_t longpoll_enqueue(subscriber_t *self) { full_subscriber_t *fsub = (full_subscriber_t *)self; assert(fsub->sub.enqueued == 0); DBG("%p enqueue", self); fsub->data.finalize_request = 1; fsub->sub.enqueued = 1; ensure_request_hold(fsub); if(self->cf->subscriber_timeout > 0) { //add timeout timer ngx_add_timer(&fsub->data.timeout_ev, self->cf->subscriber_timeout * 1000); } return NGX_OK; }
ngx_int_t longpoll_enqueue(subscriber_t *self) { full_subscriber_t *fsub = (full_subscriber_t *)self; assert(fsub->sub.enqueued == 0); DBG("%p enqueue", self); fsub->data.finalize_request = 1; fsub->sub.enqueued = 1; ensure_request_hold(fsub); if(self->cf->subscriber_timeout > 0) { //add timeout timer //nextsub->ev should be zeroed; fsub->data.timeout_ev.handler = timeout_ev_handler; fsub->data.timeout_ev.data = fsub; fsub->data.timeout_ev.log = ngx_cycle->log; ngx_add_timer(&fsub->data.timeout_ev, self->cf->subscriber_timeout * 1000); } return NGX_OK; }