X-Git-Url: http://git.indexdata.com/?p=yazpp-moved-to-github.git;a=blobdiff_plain;f=include%2Fyazpp%2Fpdu-assoc.h;h=868382748ea2773c45647d4cbe6e8c19a88beff9;hp=ac86329571348a1b95a7f2c517e47de07a4b3ea0;hb=HEAD;hpb=711105a336b155f2b7f098cf84f2e30952cb8588 diff --git a/include/yazpp/pdu-assoc.h b/include/yazpp/pdu-assoc.h index ac86329..8683827 100644 --- a/include/yazpp/pdu-assoc.h +++ b/include/yazpp/pdu-assoc.h @@ -1,5 +1,5 @@ /* This file is part of the yazpp toolkit. - * Copyright (C) 1998-2012 Index Data and Mike Taylor + * Copyright (C) Index Data * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -33,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 @@ -41,74 +43,39 @@ 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); - bool m_session_is_dead; public: - COMSTACK comstack(const char *type_and_host, void **vp); - /// Create object using specified socketObservable PDU_Assoc(yazpp_1::ISocketObservable *socketObservable); - /// Create Object using existing comstack - PDU_Assoc(yazpp_1::ISocketObservable *socketObservable, - COMSTACK cs); - /// Close socket and destroy object. - /// virtual ~PDU_Assoc(); - /// Clone the object + + PDU_Assoc(yazpp_1::ISocketObservable *socketObservable, COMSTACK cs); + + COMSTACK get_comstack(); + + virtual ~PDU_Assoc(); + + // optional feature implemented by PDU_Assoc (also by PDU_Asso_Thread) + virtual void childNotify(COMSTACK cs); + + // mefhods below are from IPDU_Observable IPDU_Observable *clone(); - /// Send PDU int send_PDU(const char *buf, int len); - /// connect to server (client role) int connect(IPDU_Observer *observer, const char *addr); - /// listen for clients (server role) int listen(IPDU_Observer *observer, const char *addr); - /// Socket notification void socketNotify(int event); - /// Close socket void shutdown(); - /// Close and destroy void destroy(); - /// Set Idle Time - void idleTime (int timeout); - /// Child start... - virtual void childNotify(COMSTACK cs); - /// close session + void idleTime(int timeout); void close_session(); const char *getpeername(); + void set_cert_fname(const char *fname); }; class YAZ_EXPORT PDU_AssocThread : public PDU_Assoc { public: PDU_AssocThread(yazpp_1::ISocketObservable *socketObservable); + virtual ~PDU_AssocThread(); private: void childNotify(COMSTACK cs);