2 * Copyright (c) 1998-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-pdu-assoc-thread.cpp,v 1.4 2001-11-04 22:36:21 adam Exp $
18 #include <yaz/tcpip.h>
20 #include <yaz++/yaz-pdu-assoc.h>
21 #include <yaz++/yaz-socket-manager.h>
25 Yaz_PDU_AssocThread::Yaz_PDU_AssocThread(
26 IYazSocketObservable *socketObservable)
27 : Yaz_PDU_Assoc(socketObservable)
39 Yaz_SocketManager *s = (Yaz_SocketManager *) p;
41 yaz_log (LOG_LOG, "thread started");
42 while (s->processEvent() > 0)
44 yaz_log (LOG_LOG, "thread finished");
51 void Yaz_PDU_AssocThread::childNotify(COMSTACK cs)
53 Yaz_SocketManager *socket_observable = new Yaz_SocketManager;
54 Yaz_PDU_Assoc *new_observable = new Yaz_PDU_Assoc (socket_observable, cs);
56 new_observable->m_next = m_children;
57 m_children = new_observable;
58 new_observable->m_parent = this;
60 /// Clone PDU Observer
61 new_observable->m_PDU_Observer =
62 m_PDU_Observer->sessionNotify(new_observable, cs_fileno(cs));
65 t_id = _beginthread (events, 0, socket_observable);
68 yaz_log (LOG_FATAL|LOG_ERRNO, "_beginthread failed");
74 int id = pthread_create (&tid, 0, events, socket_observable);
76 yaz_log (LOG_ERRNO|LOG_FATAL, "pthread_create returned id=%d", id);