X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_frontend_net.cpp;h=e94998ca3e241748fc28dd4756936f153b752504;hb=a61bc43a600095cd5066021f5239a25e78eff082;hp=b347ad2d4bad4f836c50a1e2ec503ffd1e670e75;hpb=722c498e016a6eb94044c608a7d1dcb21e5013cd;p=metaproxy-moved-to-github.git diff --git a/src/filter_frontend_net.cpp b/src/filter_frontend_net.cpp index b347ad2..e94998c 100644 --- a/src/filter_frontend_net.cpp +++ b/src/filter_frontend_net.cpp @@ -32,6 +32,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include +#include "gduutil.hpp" #include @@ -126,7 +127,7 @@ namespace metaproxy_1 { void failNotify(); void timeoutNotify(); - void connectNotify(); + void connectNotify(); private: mp::ThreadPoolSocketObserver *m_thread_pool_observer; const mp::Package *m_package; @@ -212,11 +213,17 @@ void mp::ThreadPoolPackage::result(const char *t_info) { yaz_timing_stop(timer); double duration = yaz_timing_get_real(timer); + Z_GDU *z_gdu = gdu->get(); std::ostringstream os; os << m_msg_config << " " << *m_package << " " - << std::fixed << std::setprecision (6) << duration; + << std::fixed << std::setprecision (6) << duration << " "; + + if (z_gdu) + os << *z_gdu; + else + os << "-"; yaz_log(YLOG_LOG, "%s %s", os.str().c_str(), t_info); } @@ -270,6 +277,19 @@ void mp::ZAssocChild::recv_GDU(Z_GDU *z_pdu, int len) m_msg_config); p->copy_route(*m_package); p->request() = yazpp_1::GDU(z_pdu); + + if (m_msg_config) + { + if (z_pdu) + { + std::ostringstream os; + os << m_msg_config << " " + << *p << " " + << "0.000000" << " " + << *z_pdu; + yaz_log(YLOG_LOG, "%s", os.str().c_str()); + } + } m_thread_pool_observer->put(tp); } @@ -383,6 +403,17 @@ mp::filter::FrontendNet::~FrontendNet() delete m_p->az[i]; delete [] m_p->az; } + m_p->az = 0; +} + +void mp::filter::FrontendNet::stop() const +{ + if (m_p->az) + { + size_t i; + for (i = 0; im_ports.size(); i++) + m_p->az[i]->server(""); + } } bool mp::My_Timer_Thread::timeout() @@ -425,6 +456,9 @@ void mp::filter::FrontendNet::process(Package &package) const } while (m_p->mySocketManager.processEvent() > 0) { + int no = m_p->mySocketManager.getNumberOfObservers(); + if (no <= 1) + break; if (tt && tt->timeout()) break; }