2 * Copyright (c) 1998-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Log: yaz-pdu-assoc-thread.cpp,v $
6 * Revision 1.3 2001-08-13 16:39:12 adam
7 * PDU_Assoc keeps track of children. Using yaz_log instead of logf.
9 * Revision 1.2 2001/03/27 14:47:45 adam
10 * New server facility scheme.
12 * Revision 1.1 2001/03/26 14:43:49 adam
13 * New threaded PDU association.
27 #include <yaz/tcpip.h>
29 #include <yaz++/yaz-pdu-assoc.h>
30 #include <yaz++/yaz-socket-manager.h>
34 Yaz_PDU_AssocThread::Yaz_PDU_AssocThread(
35 IYazSocketObservable *socketObservable)
36 : Yaz_PDU_Assoc(socketObservable)
48 Yaz_SocketManager *s = (Yaz_SocketManager *) p;
50 yaz_log (LOG_LOG, "thread started");
51 while (s->processEvent() > 0)
53 yaz_log (LOG_LOG, "thread finished");
60 void Yaz_PDU_AssocThread::childNotify(COMSTACK cs)
62 Yaz_SocketManager *socket_observable = new Yaz_SocketManager;
63 Yaz_PDU_Assoc *new_observable = new Yaz_PDU_Assoc (socket_observable, cs);
65 new_observable->m_next = m_children;
66 m_children = new_observable;
67 new_observable->m_parent = this;
69 /// Clone PDU Observer
70 new_observable->m_PDU_Observer =
71 m_PDU_Observer->sessionNotify(new_observable, cs_fileno(cs));
74 t_id = _beginthread (events, 0, socket_observable);
77 yaz_log (LOG_FATAL|LOG_ERRNO, "_beginthread failed");
83 int id = pthread_create (&tid, 0, events, socket_observable);
85 yaz_log (LOG_ERRNO|LOG_FATAL, "pthread_create returned id=%d", id);