zoom: use other diagnostic if Torus server is unavailable
[metaproxy-moved-to-github.git] / src / filter_frontend_net.cpp
index b347ad2..21f8e8b 100644 (file)
@@ -126,7 +126,7 @@ namespace metaproxy_1 {
         
         void failNotify();
         void timeoutNotify();
-    void connectNotify();
+        void connectNotify();
     private:
         mp::ThreadPoolSocketObserver *m_thread_pool_observer;
         const mp::Package *m_package;
@@ -383,6 +383,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; i<m_p->m_ports.size(); i++)
+            m_p->az[i]->server("");
+    }
 }
 
 bool mp::My_Timer_Thread::timeout()
@@ -425,6 +436,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;
     }