]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPRequest.h
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / contrib / ldapc++ / src / LDAPRequest.h
index b77aa945cfa151b30e970786dd33b6777e27a020..9686cae0a1ff7a09b1a190adef359316c6fa02c0 100644 (file)
@@ -1,44 +1,30 @@
+// $OpenLDAP$
 /*
- * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 2000-2012 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
-// $Id: LDAPRequest.h,v 1.11 2000/08/31 17:43:49 rhafer Exp $
 
 #ifndef LDAP_REQUEST_H
 #define LDAP_REQUEST_H
 
-#include "LDAPConstraints.h"
-#include "LDAPAsynConnection.h"
-#include "LDAPMessageQueue.h"
+#include <LDAPConstraints.h>
+#include <LDAPAsynConnection.h>
+#include <LDAPMessageQueue.h>
 
 class LDAPUrl;
 
-//!virtual class for Requests
+/**
+ * For internal use only
+ * 
+ * Each request that is sent to a LDAP-server by this library is
+ * represented by a special object that contains the parameters and some
+ * other info of the request. This virtual class is the common base classe
+ * for these specialized request classes.
+ */
 class LDAPRequest{
-        
-    protected :
-        bool m_isReferral;
-        int m_requestType;
-        LDAPConstraints *m_cons;
-        const LDAPAsynConnection *m_connection;
-        int m_msgID;  //the associated C-API Message ID
-        LDAPRequest();
 
     public :
-        LDAPRequest(const LDAPRequest& req);
-        LDAPRequest(const LDAPAsynConnection* conn, const LDAPConstraints* cons, 
-                bool isReferral=false);
-        virtual ~LDAPRequest();
-        virtual LDAPMessageQueue* sendRequest()=0;
-        virtual LDAPRequest* followReferral(LDAPUrlList *ref)=0;
-        const LDAPConstraints* getConstraints();
-        const LDAPAsynConnection* getConnection();
-        int getType()const;
-        int getMsgID() const;
-        bool isReferral() const;
-        bool doRebind() const; 
-
         static const int BIND=0;
         static const int UNBIND=2;
         static const int SEARCH=3;
@@ -46,6 +32,58 @@ class LDAPRequest{
         static const int ADD=8;
                static const int DELETE=10;
         static const int COMPARE=14;
+
+        LDAPRequest(const LDAPRequest& req);
+        LDAPRequest(LDAPAsynConnection* conn, 
+                const LDAPConstraints* cons, bool isReferral=false,
+                const LDAPRequest* parent=0);
+        virtual ~LDAPRequest();
+        
+        const LDAPConstraints* getConstraints() const;
+        const LDAPAsynConnection* getConnection() const;
+        virtual LDAPMsg *getNextMessage() const;
+        int getType()const;
+        int getMsgID() const;
+        int getHopCount() const;
+
+        /**
+         * @return The LDAPRequest that has created this object. Or 0 if
+         * this object was not created by another request.
+         */
+        const LDAPRequest* getParent() const;
+
+        /**
+         * @return true if this object was created during the automatic
+         * chasing of referrals. Otherwise false
+         */
+        bool isReferral() const;
+        
+        void unbind() const; 
+
+        /**
+         * This method encodes the request an calls the apprpriate
+         * functions of the C-API to send the Request to a LDAP-Server
+         */
+        virtual LDAPMessageQueue* sendRequest()=0;
+        virtual LDAPRequest* followReferral(LDAPMsg* ref);
+
+        /**
+         * Compare this request with another on. And returns true if they
+         * have the same parameters.
+         */
+        virtual bool equals(const LDAPRequest* req) const;
+
+        bool isCycle() const;
+        
+    protected :
+        bool m_isReferral;
+        int m_requestType;
+        LDAPConstraints *m_cons;
+        LDAPAsynConnection *m_connection;
+        const LDAPRequest* m_parent;
+        int m_hopCount;
+        int m_msgID;  //the associated C-API Message ID
+        LDAPRequest();
 };
 #endif //LDAP_REQUEST_H