Implemented the destroy_counter on HTTP commands. Only destroy HTTP session if no...
[pazpar2-moved-to-github.git] / src / sel_thread.c
index 0139c07..0677761 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Pazpar2.
-   Copyright (C) 2006-2008 Index Data
+   Copyright (C) 2006-2010 Index Data
 
 Pazpar2 is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -69,11 +69,13 @@ struct sel_thread {
     void (*work_destroy)(void *work_data);
 };
 
+static int input_queue_length = 0;
+
 static void *sel_thread_handler(void *vp)
 {
     sel_thread_t p = (sel_thread_t) vp;
 
-    while(1)
+    while (1)
     {
         struct work_item *work_this = 0;
         /* wait for some work */
@@ -87,6 +89,8 @@ static void *sel_thread_handler(void *vp)
 
         assert(p->input_queue);
         work_this = queue_remove_last(&p->input_queue);
+        input_queue_length--;
+        yaz_log(YLOG_DEBUG, "input queue length after pop: %d", input_queue_length);
         assert(work_this);
 
         pthread_mutex_unlock(&p->mutex);
@@ -101,7 +105,7 @@ static void *sel_thread_handler(void *vp)
         pthread_mutex_unlock(&p->mutex);
 
         /* wake up select/poll with a single byte */
-        write(p->fd[1], "", 1);
+        (void) write(p->fd[1], "", 1);
     }        
     pthread_mutex_unlock(&p->mutex);
     return 0;
@@ -140,7 +144,7 @@ sel_thread_t sel_thread_create(void (*work_handler)(void *work_data),
 
     p->thread_id = nmem_malloc(nmem, sizeof(*p->thread_id) * p->no_threads);
     for (i = 0; i < p->no_threads; i++)
-        pthread_create (p->thread_id + i, 0, sel_thread_handler, p);
+        pthread_create(p->thread_id + i, 0, sel_thread_handler, p);
     return p;
 }
 
@@ -185,7 +189,8 @@ void sel_thread_add(sel_thread_t p, void *data)
     work_p->data = data;
     work_p->next = p->input_queue;
     p->input_queue = work_p;
-
+    input_queue_length++;
+    yaz_log(YLOG_DEBUG, "sel_thread_add: Input queue length after push: %d", input_queue_length);
     pthread_cond_signal(&p->input_data);
     pthread_mutex_unlock(&p->mutex);
 }
@@ -207,7 +212,7 @@ void *sel_thread_result(sel_thread_t p)
         p->free_queue = work_this;
         
         data = work_this->data;
-        read(p->fd[0], read_buf, 1);
+        (void) read(p->fd[0], read_buf, 1);
     }
     pthread_mutex_unlock(&p->mutex);
     return data;
@@ -216,7 +221,9 @@ void *sel_thread_result(sel_thread_t p)
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab
  */
+