* See the file LICENSE for details.
*
* $Log: yaz-socket-manager.cpp,v $
- * Revision 1.11 2000-10-11 11:58:17 adam
+ * Revision 1.15 2001-03-26 14:43:49 adam
+ * New threaded PDU association.
+ *
+ * Revision 1.14 2000/11/20 14:17:36 adam
+ * Yet another WIN32 fix for connect notify.
+ *
+ * Revision 1.13 2000/11/20 11:27:33 adam
+ * Fixes for connect operation (timeout and notify fix).
+ *
+ * Revision 1.12 2000/10/24 12:29:57 adam
+ * Fixed bug in proxy where a Yaz_ProxyClient could be owned by
+ * two Yaz_Proxy's (fatal).
+ *
+ * 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.
*
YazSocketEntry *p;
YazSocketEvent *event = getEvent();
unsigned timeout = 0;
- logf (m_log, "processEvent");
+ logf (m_log, "Yaz_SocketManager::processEvent manager=%p", this);
if (event)
{
event->observer->socketNotify(event->event);
if (p->mask)
no++;
if (p->mask & YAZ_SOCKET_OBSERVE_READ)
+ {
+ yaz_log (m_log, "Yaz_SocketManager::select fd=%d read", fd);
FD_SET(fd, &in);
+ }
if (p->mask & YAZ_SOCKET_OBSERVE_WRITE)
+ {
+ yaz_log (m_log, "Yaz_SocketManager::select fd=%d write", fd);
FD_SET(fd, &out);
+ }
if (p->mask & YAZ_SOCKET_OBSERVE_EXCEPT)
+ {
+ yaz_log (m_log, "Yaz_SocketManager::select fd=%d except", fd);
FD_SET(fd, &except);
+ }
if (fd > max)
max = fd;
if (p->timeout)
timeout_this = p->timeout;
if (p->last_activity)
timeout_this -= now - p->last_activity;
+ else
+ p->last_activity = now;
if (timeout_this < 1)
timeout_this = 1;
if (!timeout || timeout_this < timeout)
to.tv_sec = timeout;
to.tv_usec = 0;
- logf (m_log, "select pending=%d timeout=%d", no, timeout);
+ logf (m_log, "Yaz_SocketManager::select no=%d timeout=%d", no, timeout);
while ((res = select(max + 1, &in, &out, &except, timeout ? &to : 0)) < 0)
if (errno != EINTR)
return -1;
now >= p->last_activity + (int) (p->timeout))
{
YazSocketEvent *event = new YazSocketEvent;
- logf (LOG_LOG, "timeout now = %ld last_activity=%ld timeout=%d",
+ logf (m_log, "timeout, now = %ld last_activity=%ld timeout=%d",
now, p->last_activity, p->timeout);
p->last_activity = now;
event->observer = p->observer;
return 0;
}
+
+// n p n p ...... n p n p
+// front back
+
void Yaz_SocketManager::putEvent(YazSocketEvent *event)
{
// put in back of queue