X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=include%2Fyazpp%2Fpdu-assoc.h;h=eee460afd2863ff61034c5cae155fbd6358c141a;hb=e1563004f70ed8be4549db0ba3a20de902f98d4c;hp=d0fdeb728104fb76ee8fa42acd57435ef9a24e68;hpb=0cc824e02bc2c69986bec8c9dd9ff53f07a0cd3d;p=yazpp-moved-to-github.git diff --git a/include/yazpp/pdu-assoc.h b/include/yazpp/pdu-assoc.h index d0fdeb7..eee460a 100644 --- a/include/yazpp/pdu-assoc.h +++ b/include/yazpp/pdu-assoc.h @@ -1,8 +1,28 @@ -/* - * Copyright (c) 1998-2005, Index Data. - * See the file LICENSE for details. - * - * $Id: pdu-assoc.h,v 1.1 2006-03-29 13:14:15 adam Exp $ +/* This file is part of the yazpp toolkit. + * Copyright (C) 1998-2012 Index Data and Mike Taylor + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Index Data nor the names of its contributors + * may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef YAZ_PDU_ASSOC_INCLUDED @@ -13,6 +33,8 @@ #include namespace yazpp_1 { + class PDU_Assoc_priv; + /** Simple Protocol Data Unit Assocation. This object sends - and receives PDU's using the COMSTACK network utility. To use the association in client role, use @@ -21,45 +43,18 @@ namespace yazpp_1 { */ class YAZ_EXPORT PDU_Assoc : public IPDU_Observable, yazpp_1::ISocketObserver { friend class PDU_AssocThread; - private: - enum { - Connecting, - Listen, - Ready, - Closed, - Writing, - Accepting - } m_state; - class PDU_Queue { - public: - PDU_Queue(const char *buf, int len); - ~PDU_Queue(); - char *m_buf; - int m_len; - PDU_Queue *m_next; - }; - PDU_Assoc *m_parent; - PDU_Assoc *m_children; - PDU_Assoc *m_next; - COMSTACK m_cs; - yazpp_1::ISocketObservable *m_socketObservable; + PDU_Assoc_priv *m_p; IPDU_Observer *m_PDU_Observer; - char *m_input_buf; - int m_input_len; - PDU_Queue *m_queue_out; - PDU_Queue *m_queue_in; + int flush_PDU(); - int *m_destroyed; - int m_idleTime; - int m_log; - void init(yazpp_1::ISocketObservable *socketObservable); - public: COMSTACK comstack(const char *type_and_host, void **vp); + public: /// Create object using specified socketObservable PDU_Assoc(yazpp_1::ISocketObservable *socketObservable); /// Create Object using existing comstack PDU_Assoc(yazpp_1::ISocketObservable *socketObservable, - COMSTACK cs); + COMSTACK cs); + virtual ~PDU_Assoc(); /// Close socket and destroy object. /// virtual ~PDU_Assoc(); /// Clone the object @@ -73,13 +68,15 @@ class YAZ_EXPORT PDU_Assoc : public IPDU_Observable, yazpp_1::ISocketObserver { /// Socket notification void socketNotify(int event); /// Close socket - void close(); + void shutdown(); /// Close and destroy void destroy(); /// Set Idle Time - void idleTime (int timeout); + void idleTime(int timeout); /// Child start... virtual void childNotify(COMSTACK cs); + /// close session + void close_session(); const char *getpeername(); }; @@ -97,6 +94,7 @@ class YAZ_EXPORT PDU_AssocThread : public PDU_Assoc { /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab