/*
- * 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.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/log.h>
#include <yaz-socket-manager.h>
YazSocketEntry *p;
YazSocketEvent *event = getEvent();
unsigned timeout = 0;
- logf (LOG_LOG, "processEvent");
+ logf (m_log, "processEvent");
if (event)
{
event->observer->socketNotify(event->event);
}
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;
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;
m_observers = 0;
m_queue_front = 0;
m_queue_back = 0;
+ m_log = LOG_DEBUG;
}
Yaz_SocketManager::~Yaz_SocketManager()