+
+#if 1
+void Yaz_PDU_Assoc::childNotify(int fd)
+{
+ /// Clone PDU Observable (keep socket manager)
+ IYaz_PDU_Observable *new_observable = clone();
+
+ /// Clone PDU Observer
+ IYaz_PDU_Observer *observer = m_PDU_Observer->clone(new_observable);
+
+ /// Attach new socket to it
+ new_observable->socket(observer, fd);
+}
+#else
+
+#include <yaz-socket-manager.h>
+#include <pthread.h>
+
+class thread_info {
+ Yaz_SocketManager *socketManager;
+ IYaz_PDU_Observable *
+
+};
+
+static void *events(void *p)
+{
+ Yaz_SocketManager *s = (Yaz_SocketManager *) p;
+
+ while (s->processEvent() > 0)
+ ;
+ return 0;
+}
+
+void Yaz_PDU_Assoc::childNotify(int fd)
+{
+ Yaz_SocketManager *socket_observable = new Yaz_SocketManager;
+ IYaz_PDU_Observable *new_observable = clone();
+
+ m_socketObservable = socket_observable;
+
+ /// Clone PDU Observer
+ IYaz_PDU_Observer *observer = m_PDU_Observer->clone(new_observable);
+
+ /// Attach new socket to it
+ new_observable->socket(observer, fd);
+
+ pthread_t type;
+
+ int id = pthread_create (&type, 0, events, socket_observable);
+ logf (LOG_LOG, "pthread_create returned id=%d", id);
+}
+#endif
+