-using namespace yp2;
-
-class ZAssocServerChild : public yazpp_1::Z_Assoc {
-public:
- ~ZAssocServerChild();
- ZAssocServerChild(yazpp_1::IPDU_Observable *the_PDU_Observable,
- ThreadPoolSocketObserver *m_thread_pool_observer,
- const Package *package);
- int m_no_requests;
-private:
- yazpp_1::IPDU_Observer* sessionNotify(
- yazpp_1::IPDU_Observable *the_PDU_Observable,
- int fd);
- void recv_GDU(Z_GDU *apdu, int len);
-
- void failNotify();
- void timeoutNotify();
- void connectNotify();
-private:
- ThreadPoolSocketObserver *m_thread_pool_observer;
- Session m_session;
- Origin m_origin;
- bool m_delete_flag;
- const Package *m_package;
-};
-
-
-class ThreadPoolPackage : public IThreadPoolMsg {
-public:
- ThreadPoolPackage(Package *package, ZAssocServerChild *ses) :
- m_session(ses), m_package(package) { };
- ~ThreadPoolPackage();
- IThreadPoolMsg *handle();
- void result();
-
-private:
- ZAssocServerChild *m_session;
- Package *m_package;
-
-};
-
-ThreadPoolPackage::~ThreadPoolPackage()
+namespace mp = metaproxy_1;
+namespace yf = metaproxy_1::filter;
+
+namespace metaproxy_1 {
+ namespace filter {
+ class FrontendNet::Port {
+ friend class Rep;
+ friend class FrontendNet;
+ std::string port;
+ std::string route;
+ std::string cert_fname;
+ int max_recv_bytes;
+ };
+ class FrontendNet::Rep {
+ friend class FrontendNet;
+
+ int m_no_threads;
+ std::vector<Port> m_ports;
+ int m_listen_duration;
+ int m_session_timeout;
+ int m_connect_max;
+ std::string m_msg_config;
+ std::string m_stat_req;
+ yazpp_1::SocketManager mySocketManager;
+ ZAssocServer **az;
+ yazpp_1::PDU_Assoc **pdu;
+ int m_duration_freq[22];
+ double m_duration_lim[22];
+ double m_duration_max;
+ double m_duration_min;
+ double m_duration_total;
+ int m_stop_signo;
+ public:
+ Rep();
+ ~Rep();
+ };
+ class FrontendNet::My_Timer_Thread : public yazpp_1::ISocketObserver {
+ private:
+ yazpp_1::ISocketObservable *m_obs;
+ Pipe m_pipe;
+ bool m_timeout;
+ public:
+ My_Timer_Thread(yazpp_1::ISocketObservable *obs, int duration);
+ void socketNotify(int event);
+ bool timeout();
+ };
+ class FrontendNet::ZAssocChild : public yazpp_1::Z_Assoc {
+ public:
+ ~ZAssocChild();
+ ZAssocChild(yazpp_1::IPDU_Observable *the_PDU_Observable,
+ mp::ThreadPoolSocketObserver *m_thread_pool_observer,
+ const mp::Package *package,
+ Port *port,
+ Rep *rep);
+ int m_no_requests;
+ Port *m_port;
+ private:
+ yazpp_1::IPDU_Observer* sessionNotify(
+ yazpp_1::IPDU_Observable *the_PDU_Observable,
+ int fd);
+ void recv_GDU(Z_GDU *apdu, int len);
+ void report(Z_HTTP_Request *hreq);
+ void failNotify();
+ void timeoutNotify();
+ void connectNotify();
+ private:
+ mp::ThreadPoolSocketObserver *m_thread_pool_observer;
+ mp::Session m_session;
+ mp::Origin m_origin;
+ bool m_delete_flag;
+ const mp::Package *m_package;
+ Rep *m_p;
+ };
+ class FrontendNet::ThreadPoolPackage : public mp::IThreadPoolMsg {
+ public:
+ ThreadPoolPackage(mp::Package *package,
+ yf::FrontendNet::ZAssocChild *ses,
+ Rep *rep);
+ ~ThreadPoolPackage();
+ IThreadPoolMsg *handle();
+ void result(const char *t_info);
+ bool cleanup(void *info);
+ private:
+ yaz_timing_t timer;
+ ZAssocChild *m_assoc_child;
+ mp::Package *m_package;
+ Rep *m_p;
+ };
+ class FrontendNet::ZAssocServer : public yazpp_1::Z_Assoc {
+ public:
+ ~ZAssocServer();
+ ZAssocServer(yazpp_1::IPDU_Observable *PDU_Observable,
+ FrontendNet::Port *port,
+ Rep *rep);
+ void set_package(const mp::Package *package);
+ void set_thread_pool(ThreadPoolSocketObserver *observer);
+ private:
+ yazpp_1::IPDU_Observer* sessionNotify(
+ yazpp_1::IPDU_Observable *the_PDU_Observable,
+ int fd);
+ void recv_GDU(Z_GDU *apdu, int len);
+
+ void failNotify();
+ void timeoutNotify();
+ void connectNotify();
+ private:
+ mp::ThreadPoolSocketObserver *m_thread_pool_observer;
+ const mp::Package *m_package;
+ yazpp_1::LimitConnect limit_connect;
+ Port *m_port;
+ Rep *m_p;
+ };
+ }
+}
+
+yf::FrontendNet::ThreadPoolPackage::ThreadPoolPackage(mp::Package *package,
+ ZAssocChild *ses,
+ Rep *rep) :
+ m_assoc_child(ses), m_package(package), m_p(rep)
+{
+ timer = yaz_timing_create();
+}
+
+yf::FrontendNet::ThreadPoolPackage::~ThreadPoolPackage()