static void fq_client_signal(fq_client conn, cmd_instr *e) { fq_conn_s *conn_s = conn; ck_fifo_spsc_enqueue_lock(&conn_s->cmdq); ck_fifo_spsc_entry_t *fifo_entry = ck_fifo_spsc_recycle(&conn_s->cmdq); if (fifo_entry == NULL) { fifo_entry = malloc(sizeof(ck_fifo_spsc_entry_t)); } ck_fifo_spsc_enqueue(&conn_s->cmdq, fifo_entry, e); ck_fifo_spsc_enqueue_unlock(&conn_s->cmdq); }
static void enqueue_cmd_hook_req(fq_conn_s *conn_s, cmd_instr *e) { ck_fifo_spsc_enqueue_lock(&conn_s->backq); ck_fifo_spsc_entry_t *fifo_entry = ck_fifo_spsc_recycle(&conn_s->backq); if (unlikely(fifo_entry == NULL)) { fifo_entry = malloc(sizeof(ck_fifo_spsc_entry_t)); } hook_req_t *hreq = calloc(1,sizeof(*hreq)); hreq->type = CMD_HOOK_TYPE; hreq->entry = e; ck_fifo_spsc_enqueue(&conn_s->backq, fifo_entry, MARKED_HOOK_REQ_PTR(hreq)); ck_fifo_spsc_enqueue_unlock(&conn_s->backq); }
static void enqueue_auth_hook_req(fq_conn_s *conn_s, int rv) { ck_fifo_spsc_enqueue_lock(&conn_s->backq); ck_fifo_spsc_entry_t *fifo_entry = ck_fifo_spsc_recycle(&conn_s->backq); if (unlikely(fifo_entry == NULL)) { fifo_entry = malloc(sizeof(ck_fifo_spsc_entry_t)); } hook_req_t *hreq = calloc(1,sizeof(*hreq)); hreq->type = AUTH_HOOK_TYPE; hreq->entry = calloc(1, sizeof(*hreq->entry)); hreq->entry->data.return_value = 0; ck_fifo_spsc_enqueue(&conn_s->backq, fifo_entry, MARKED_HOOK_REQ_PTR(hreq)); ck_fifo_spsc_enqueue_unlock(&conn_s->backq); }
static void fq_client_read_complete(void *closure, fq_msg *msg) { fq_conn_s *conn_s = (fq_conn_s *)closure; if(conn_s->message_hook && conn_s->message_hook(conn_s, msg)) { fq_msg_deref(msg); } else { ck_fifo_spsc_enqueue_lock(&conn_s->backq); ck_fifo_spsc_entry_t *fifo_entry = ck_fifo_spsc_recycle(&conn_s->backq); if (unlikely(fifo_entry == NULL)) { fifo_entry = malloc(sizeof(ck_fifo_spsc_entry_t)); } ck_fifo_spsc_enqueue(&conn_s->backq, fifo_entry, msg); ck_fifo_spsc_enqueue_unlock(&conn_s->backq); } }
static void distribute_message_with_interests(caql_cnt_t *interests, noit_metric_message_t *message) { mtev_atomic_inc64(&number_of_messages_received); int i; for(i = 0; i < nthreads; i++) { if(interests[i] > 0) { ck_fifo_spsc_t *fifo = (ck_fifo_spsc_t *) thread_queues[i]; ck_fifo_spsc_entry_t *fifo_entry; ck_fifo_spsc_enqueue_lock(fifo); fifo_entry = ck_fifo_spsc_recycle(fifo); if(!fifo_entry) fifo_entry = malloc(sizeof(ck_fifo_spsc_entry_t)); noit_metric_director_message_ref(message); ck_fifo_spsc_enqueue(fifo, fifo_entry, message); ck_fifo_spsc_enqueue_unlock(fifo); mtev_atomic_inc64(&number_of_messages_distributed); } } }