Exemplo n.º 1
0
void send_response(struct item *item, enum protoCmd rsp)
{
    struct protocol *req = &item->req;
    int ret;

    pthread_mutex_lock(&qLock);
    item->next->prev = item->prev;
    item->prev->next = item->next;
    remove_item_idx(item);
    pthread_mutex_unlock(&qLock);

    while (item) {
        struct item *prev = item;
        req = &item->req;
        if ((item->fd != FD_INVALID) && ((req->cmd == cmdRender) || (req->cmd == cmdRenderPrio) || (req->cmd == cmdRenderBulk))) {
            req->cmd = rsp;
            //fprintf(stderr, "Sending message %s to %d\n", cmdStr(rsp), item->fd);
            ret = send(item->fd, req, sizeof(*req), 0);
            if (ret != sizeof(*req))
                perror("send error during send_done");
        }
        item = item->duplicates;
        free(prev);
    }
}
Exemplo n.º 2
0
void request_queue_remove_request(struct request_queue * queue, struct item * request, int render_time) {
    pthread_mutex_lock(&(queue->qLock));
    if (request->inQueue != queueRender) {
        syslog(LOG_WARNING, "Removing request from queue, even though not on rendering queue");
    }
    if (render_time > 0) {
        queue->stats.noZoomRender[request->req.z]++;
        queue->stats.timeZoomRender[request->req.z] += render_time;
    }
    request->next->prev = request->prev;
    request->prev->next = request->next;
    remove_item_idx(queue, request);
    pthread_mutex_unlock(&(queue->qLock));
}
Exemplo n.º 3
0
void request_queue_remove_request(struct request_queue * queue, struct item * request, int render_time) {
    pthread_mutex_lock(&(queue->qLock));
    if (request->inQueue != queueRender) {
        syslog(LOG_WARNING, "Removing request from queue, even though not on rendering queue");
    }
    if (render_time > 0) {
        switch (request->originatedQueue) {
        case queueRequestPrio: { queue->stats.timeReqPrioRender += render_time; break;}
        case queueRequest: { queue->stats.timeReqRender += render_time; break;}
        case queueRequestLow: { queue->stats.timeReqLowRender += render_time; break;}
        case queueDirty: { queue->stats.timeReqDirty += render_time; break;}
        case queueRequestBulk: { queue->stats.timeReqBulkRender += render_time; break;}
        }
        queue->stats.noZoomRender[request->req.z]++;
        queue->stats.timeZoomRender[request->req.z] += render_time;
    }
    request->next->prev = request->prev;
    request->prev->next = request->next;
    remove_item_idx(queue, request);
    pthread_mutex_unlock(&(queue->qLock));
}