]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPSearchResult.cpp
Entry rwlock is no longer needed as concurrency is managed
[openldap] / contrib / ldapc++ / src / LDAPSearchResult.cpp
index eb78331b5d01067f85eb8ecf60053719302aa1d6..1d9336d24ba016c31506d937829ceffecf0bf1ed 100644 (file)
@@ -3,26 +3,48 @@
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
-// $Id: LDAPSearchResult.cpp,v 1.6 2000/08/31 17:43:49 rhafer Exp $
 
 #include <iostream>
 
 #include "debug.h"
-#include"LDAPSearchResult.h"
+#include "LDAPSearchResult.h"
 #include "LDAPRequest.h"
 
-LDAPSearchResult::LDAPSearchResult(LDAPRequest *req, LDAPMessage *msg) 
-        : LDAPMsg(msg){
-       DEBUG(LDAP_DEBUG_TRACE,"LDAPSearchResult::LDAPSearchResult()" << endl);
+using namespace std;
+
+LDAPSearchResult::LDAPSearchResult(const LDAPRequest *req,
+        LDAPMessage *msg) : LDAPMsg(msg){
+       DEBUG(LDAP_DEBUG_CONSTRUCT,
+               "LDAPSearchResult::LDAPSearchResult()" << endl);
     entry = new LDAPEntry(req->getConnection(), msg);
+    //retrieve the controls here
+    LDAPControl** srvctrls=0;
+    int err = ldap_get_entry_controls(req->getConnection()->getSessionHandle(),
+            msg,&srvctrls);
+    if(err != LDAP_SUCCESS){
+        ldap_controls_free(srvctrls);
+    }else{
+        if (srvctrls){
+            m_srvControls = LDAPControlSet(srvctrls);
+            m_hasControls = true;
+            ldap_controls_free(srvctrls);
+        }else{
+            m_hasControls = false;
+        }
+    }
+}
+
+LDAPSearchResult::LDAPSearchResult(const LDAPSearchResult& res) :
+        LDAPMsg(res){
+    entry = new LDAPEntry(*(res.entry));
 }
 
 LDAPSearchResult::~LDAPSearchResult(){
-       DEBUG(LDAP_DEBUG_TRACE,"LDAPSearchResult::~LDAPSearchResult()" << endl);
+       DEBUG(LDAP_DEBUG_DESTROY,"LDAPSearchResult::~LDAPSearchResult()" << endl);
        delete entry;
 }
 
-LDAPEntry* LDAPSearchResult::getEntry(){
+const LDAPEntry* LDAPSearchResult::getEntry() const{
        DEBUG(LDAP_DEBUG_TRACE,"LDAPSearchResult::getEntry()" << endl);
        return entry;
 }