X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ftest_thread_pool_observer.cpp;h=8df5b22e46e175f09792daf96e761fe3b177d4ea;hb=HEAD;hp=84af589d5ecc30f59e3081566dfa6e7b30d15019;hpb=e9530d6289df9b848e4901d7c73f5a2f27706d66;p=metaproxy-moved-to-github.git diff --git a/src/test_thread_pool_observer.cpp b/src/test_thread_pool_observer.cpp index 84af589..8df5b22 100644 --- a/src/test_thread_pool_observer.cpp +++ b/src/test_thread_pool_observer.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2008 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 @@ -39,7 +39,8 @@ class My_Timer_Thread; class My_Msg : public mp::IThreadPoolMsg { public: mp::IThreadPoolMsg *handle(); - void result(); + void result(const char *t_info); + bool cleanup(void *info); int m_val; My_Timer_Thread *m_timer; }; @@ -60,25 +61,26 @@ public: mp::IThreadPoolMsg *My_Msg::handle() { - My_Msg *res = new My_Msg; - if (m_val == 7) sleep(1); + return this; +} - res->m_val = m_val; - res->m_timer = m_timer; - return res; +bool My_Msg::cleanup(void *info) +{ + return false; } -void My_Msg::result() +void My_Msg::result(const char *t_info) { m_timer->m_sum += m_val; m_timer->m_responses++; + delete this; } My_Timer_Thread::My_Timer_Thread(ISocketObservable *obs, - mp::ThreadPoolSocketObserver *t) : - m_obs(obs), m_pipe(9123) + mp::ThreadPoolSocketObserver *t) : + m_obs(obs), m_pipe(9123) { m_t = t; m_sum = 0; @@ -91,26 +93,24 @@ My_Timer_Thread::My_Timer_Thread(ISocketObservable *obs, void My_Timer_Thread::socketNotify(int event) { - My_Msg *m = new My_Msg; - m->m_val = m_requests++; - m->m_timer = this; - m_t->put(m); -#if 0 - // prevent input queue from being filled up.. - // bug #1064: Test test_thread_pool_observer hangs - // fortunately we don't need this hack. because put (ebove) - // will block itself if needed - if (m->m_val == 30) + if (m_requests == 30) m_obs->deleteObserver(this); -#endif + else + { + My_Msg *m = new My_Msg; + m->m_val = m_requests++; + m->m_timer = this; + m_t->put(m); + } } -BOOST_AUTO_TEST_CASE( thread_pool_observer1 ) +BOOST_AUTO_TEST_CASE( thread_pool_observer1 ) { SocketManager mySocketManager; - mp::ThreadPoolSocketObserver m(&mySocketManager, 3); - My_Timer_Thread t(&mySocketManager, &m) ; + mp::ThreadPoolSocketObserver m(&mySocketManager, 3, 3, 16*1024); + My_Timer_Thread t(&mySocketManager, &m); + while (t.m_responses < 30 && mySocketManager.processEvent() > 0) ; BOOST_CHECK_EQUAL(t.m_responses, 30); @@ -120,8 +120,8 @@ BOOST_AUTO_TEST_CASE( thread_pool_observer1 ) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil - * c-file-style: "stroustrup" * End: * vim: shiftwidth=4 tabstop=8 expandtab */