X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-pdu-assoc.cpp;h=ab47de3a1cb628dc13b8746a3a93e3747272c9b0;hb=5e3f7e1a720a08d30c407049c94c6ca825a5ed27;hp=2eec370854858243a0c23e9c4b0842b726c9506d;hpb=50fbcf20ab48480e819ec5aef312a72c684bf213;p=yazpp-moved-to-github.git diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index 2eec370..ab47de3 100644 --- a/src/yaz-pdu-assoc.cpp +++ b/src/yaz-pdu-assoc.cpp @@ -1,8 +1,8 @@ /* - * Copyright (c) 1998-2003, Index Data. + * Copyright (c) 1998-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-pdu-assoc.cpp,v 1.34 2003-10-16 16:10:43 adam Exp $ + * $Id: yaz-pdu-assoc.cpp,v 1.39 2004-12-13 20:50:54 adam Exp $ */ #include @@ -20,6 +20,7 @@ void Yaz_PDU_Assoc::init(IYazSocketObservable *socketObservable) m_socketObservable = socketObservable; m_PDU_Observer = 0; m_queue_out = 0; + m_queue_in = 0; m_input_buf = 0; m_input_len = 0; m_children = 0; @@ -27,7 +28,7 @@ void Yaz_PDU_Assoc::init(IYazSocketObservable *socketObservable) m_next = 0; m_destroyed = 0; m_idleTime = 0; - m_log = LOG_DEBUG; + m_log = YLOG_DEBUG; } Yaz_PDU_Assoc::Yaz_PDU_Assoc(IYazSocketObservable *socketObservable) @@ -157,7 +158,7 @@ void Yaz_PDU_Assoc::socketNotify(int event) return; if (res < 0) { - yaz_log(LOG_FATAL|LOG_ERRNO, "cs_listen failed"); + yaz_log(YLOG_FATAL|YLOG_ERRNO, "cs_listen failed"); return; } if (!(new_line = cs_accept(m_cs))) @@ -208,11 +209,18 @@ void Yaz_PDU_Assoc::socketNotify(int event) if (!m_PDU_Observer) return; - +#if 0 + PDU_Queue **pq = &m_queue_in; + while (*pq) + pq = &(*pq)->m_next; + + *pq = new PDU_Queue(m_input_buf, res); +#else m_PDU_Observer->recv_PDU(m_input_buf, res); - m_destroyed = 0; +#endif if (destroyed) // it really was destroyed, return now. return; + m_destroyed = 0; } while (m_cs && cs_more (m_cs)); if (m_cs && m_state == Ready) { @@ -390,27 +398,26 @@ COMSTACK Yaz_PDU_Assoc::comstack(const char *type_and_host, void **vp) return cs_create_host(type_and_host, 2, vp); } -void Yaz_PDU_Assoc::listen(IYaz_PDU_Observer *observer, - const char *addr) +int Yaz_PDU_Assoc::listen(IYaz_PDU_Observer *observer, + const char *addr) { close(); - yaz_log (LOG_LOG, "Adding listener %s", addr); - m_PDU_Observer = observer; void *ap; m_cs = comstack(addr, &ap); if (!m_cs) - return; + return -1; if (cs_bind(m_cs, ap, CS_SERVER) < 0) - return; + return -2; m_socketObservable->addObserver(cs_fileno(m_cs), this); yaz_log(m_log, "maskObserver 9"); m_socketObservable->maskObserver(this, YAZ_SOCKET_OBSERVE_READ| YAZ_SOCKET_OBSERVE_EXCEPT); yaz_log (m_log, "Yaz_PDU_Assoc::listen ok fd=%d", cs_fileno(m_cs)); m_state = Listen; + return 0; } void Yaz_PDU_Assoc::idleTime(int idleTime)