Moved header files to include/yaz++. Switched to libtool and automake.
[yazpp-moved-to-github.git] / src / yaz-socket-manager.cpp
index 43d90ca..d8e1ef2 100644 (file)
@@ -1,10 +1,30 @@
 /*
- * Copyright (c) 1998-1999, Index Data.
+ * Copyright (c) 1998-2000, Index Data.
  * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
  * 
  * $Log: yaz-socket-manager.cpp,v $
- * Revision 1.5  1999-04-09 11:46:57  adam
+ * Revision 1.11  2000-10-11 11:58:17  adam
+ * Moved header files to include/yaz++. Switched to libtool and automake.
+ * Configure script creates yaz++-config script.
+ *
+ * Revision 1.10  2000/09/08 10:23:42  adam
+ * Added skeleton of yaz-z-server.
+ *
+ * Revision 1.9  2000/08/07 14:19:59  adam
+ * Fixed serious bug regarding timeouts. Improved logging for proxy.
+ *
+ * Revision 1.8  1999/12/06 13:52:45  adam
+ * Modified for new location of YAZ header files. Experimental threaded
+ * operation.
+ *
+ * Revision 1.7  1999/04/28 13:02:08  adam
+ * Added include of string.h.
+ *
+ * Revision 1.6  1999/04/21 12:09:01  adam
+ * Many improvements. Modified to proxy server to work with "sessions"
+ * based on cookies.
+ *
+ * Revision 1.5  1999/04/09 11:46:57  adam
  * Added object Yaz_Z_Assoc. Much more functional client.
  *
  * Revision 1.4  1999/03/23 14:17:57  adam
 #include <unistd.h>
 #endif
 #include <errno.h>
+#include <string.h>
 
-#include <log.h>
-#include <yaz-socket-manager.h>
-
+#include <yaz/log.h>
+#include <yaz++/yaz-socket-manager.h>
 
 Yaz_SocketManager::YazSocketEntry **Yaz_SocketManager::lookupObserver(
     IYazSocketObserver *observer)
@@ -113,7 +133,7 @@ int Yaz_SocketManager::processEvent()
     YazSocketEntry *p;
     YazSocketEvent *event = getEvent();
     unsigned timeout = 0;
-    logf (LOG_LOG, "processEvent");
+    logf (m_log, "processEvent");
     if (event)
     {
        event->observer->socketNotify(event->event);
@@ -158,16 +178,17 @@ int Yaz_SocketManager::processEvent()
     }
     if (!no)
     {
-       logf (LOG_LOG, "no pending events return 0");
+       logf (m_log, "no pending events return 0");
        if (!m_observers)
-           logf (LOG_LOG, "no observers");
+           logf (m_log, "no observers");
        return 0;
     }
 
     struct timeval to;
     to.tv_sec = timeout;
     to.tv_usec = 0;
-
+    
+    logf (m_log, "select pending=%d timeout=%d", no, timeout);
     while ((res = select(max + 1, &in, &out, &except, timeout ? &to : 0)) < 0)
        if (errno != EINTR)
            return -1;
@@ -193,9 +214,12 @@ int Yaz_SocketManager::processEvent()
            event->event = mask;
            putEvent (event);
        }
-       else if (p->timeout && now >= p->last_activity + (int) (p->timeout))
+       else if (p->timeout && p->last_activity && 
+                now >= p->last_activity + (int) (p->timeout))
        {
            YazSocketEvent *event = new YazSocketEvent;
+           logf (LOG_LOG, "timeout now = %ld last_activity=%ld timeout=%d",
+                 now, p->last_activity, p->timeout);
            p->last_activity = now;
            event->observer = p->observer;
            event->event = YAZ_SOCKET_OBSERVE_TIMEOUT;
@@ -274,6 +298,7 @@ Yaz_SocketManager::Yaz_SocketManager()
     m_observers = 0;
     m_queue_front = 0;
     m_queue_back = 0;
+    m_log = LOG_DEBUG;
 }
 
 Yaz_SocketManager::~Yaz_SocketManager()