+ init (socketObservable);
+}
+
+Yaz_PDU_Assoc::Yaz_PDU_Assoc(IYazSocketObservable *socketObservable,
+ COMSTACK cs)
+{
+ init(socketObservable);
+ m_cs = cs;
+ unsigned mask = 0;
+ if (cs->io_pending & CS_WANT_WRITE)
+ mask |= YAZ_SOCKET_OBSERVE_WRITE;
+ if (cs->io_pending & CS_WANT_READ)
+ mask |= YAZ_SOCKET_OBSERVE_READ;
+ m_socketObservable->addObserver(cs_fileno(cs), this);
+ if (!mask)
+ {
+ yaz_log (m_log, "new PDU_Assoc. Ready");
+ m_state = Ready;
+ flush_PDU();
+ }
+ else
+ {
+ yaz_log (m_log, "new PDU_Assoc. Accepting");
+ // assume comstack is accepting...
+ m_state = Accepting;
+ m_socketObservable->addObserver(cs_fileno(cs), this);
+ m_socketObservable->maskObserver(this,
+ mask |YAZ_SOCKET_OBSERVE_EXCEPT);
+ }