X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fthread_pool_observer.cpp;h=a52cd92d2a7a296910d71bb36c315b0877d4fb59;hb=586d78659d671683f33ec55f4a7d32b28e345ccd;hp=ce372351b63c33f1dce625be64b60cb9504525c5;hpb=722c498e016a6eb94044c608a7d1dcb21e5013cd;p=metaproxy-moved-to-github.git diff --git a/src/thread_pool_observer.cpp b/src/thread_pool_observer.cpp index ce37235..a52cd92 100644 --- a/src/thread_pool_observer.cpp +++ b/src/thread_pool_observer.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2012 Index Data + Copyright (C) Index Data Metaproxy 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 @@ -166,6 +166,12 @@ void ThreadPoolSocketObserver::socketNotify(int event) } } +void ThreadPoolSocketObserver::get_thread_info(int &tbusy, int &total) +{ + tbusy = m_p->m_no_threads - m_p->m_no_threads_waiting; + total = m_p->m_no_threads; +} + void ThreadPoolSocketObserver::run(void *p) { while(1) @@ -179,9 +185,9 @@ void ThreadPoolSocketObserver::run(void *p) m_p->m_no_threads_waiting--; if (m_p->m_stop_flag) break; - + in = m_p->m_input.front(); - m_p->m_input.pop_front(); + m_p->m_input.pop_front(); m_p->m_cond_input_full.notify_all(); } IThreadPoolMsg *out = in->handle(); @@ -214,7 +220,10 @@ void ThreadPoolSocketObserver::cleanup(IThreadPoolMsg *m, void *info) while (it != m_p->m_input.end()) { if ((*it)->cleanup(info)) + { + delete *it; it = m_p->m_input.erase(it); + } else it++; }