Release 1.6.4
[yazpp-moved-to-github.git] / include / yazpp / pdu-assoc.h
index 869f950..8683827 100644 (file)
@@ -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 <yazpp/pdu-observer.h>
 
 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);