#include <yazpp/limit-connect.h>
#include <yaz/timing.h>
#include <yaz/log.h>
+#include "gduutil.hpp"
#include <iostream>
~ThreadPoolPackage();
IThreadPoolMsg *handle();
void result(const char *t_info);
-
+ bool cleanup(void *info);
private:
yaz_timing_t timer;
mp::ZAssocChild *m_assoc_child;
void failNotify();
void timeoutNotify();
- void connectNotify();
+ void connectNotify();
private:
mp::ThreadPoolSocketObserver *m_thread_pool_observer;
const mp::Package *m_package;
delete m_package;
}
+bool mp::ThreadPoolPackage::cleanup(void *info)
+{
+ mp::Session *ses = (mp::Session *) info;
+
+ return *ses == m_package->session();
+}
+
void mp::ThreadPoolPackage::result(const char *t_info)
{
m_assoc_child->m_no_requests--;
{
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);
}
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);
}
mp::ThreadPoolPackage *tp = new mp::ThreadPoolPackage(p, this,
m_msg_config);
p->copy_route(*m_package);
- m_thread_pool_observer->put(tp);
+ m_thread_pool_observer->cleanup(tp, &m_session);
+ m_thread_pool_observer->put(tp);
}
void mp::ZAssocChild::timeoutNotify()
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; i<m_p->m_ports.size(); i++)
+ m_p->az[i]->server("");
+ }
}
bool mp::My_Timer_Thread::timeout()
}
while (m_p->mySocketManager.processEvent() > 0)
{
+ int no = m_p->mySocketManager.getNumberOfObservers();
+ if (no <= 1)
+ break;
if (tt && tt->timeout())
break;
}