]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPModDNRequest.cpp
Initial check of the LDAP C++ SDK written by Ralf Haferkamp <rhafer@suse.de>
[openldap] / contrib / ldapc++ / src / LDAPModDNRequest.cpp
diff --git a/contrib/ldapc++/src/LDAPModDNRequest.cpp b/contrib/ldapc++/src/LDAPModDNRequest.cpp
new file mode 100644 (file)
index 0000000..b122e09
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include <ldap.h>
+
+#include "debug.h"
+
+#include "LDAPModDNRequest.h"
+#include "LDAPException.h"
+#include "LDAPUrlList.h"
+
+LDAPModDNRequest::LDAPModDNRequest(const LDAPModDNRequest& req) :
+        LDAPRequest(req){
+    DEBUG(LDAP_DEBUG_TRACE, 
+            "LDAPModDNRequest::LDAPModDNRequest(LDAPModDNRequest&)" << endl);
+}
+
+LDAPModDNRequest::LDAPModDNRequest(const char *dn, const char *newRDN, 
+        bool deleteOld, const char *newParentDN, 
+        const LDAPAsynConnection *connect, 
+        const LDAPConstraints *cons, bool isReferral=false):
+        LDAPRequest(connect, cons, isReferral){
+    DEBUG(LDAP_DEBUG_TRACE, "LDAPModDNRequest::LDAPModDNRequest()" << endl);
+    DEBUG(LDAP_DEBUG_PARAMETER, "   dn:" << dn << endl
+            << "   newRDN:" << newRDN << endl
+            << "   deleteOld:" << deleteOld << endl
+            << "   newParentDN:" << newParentDN << endl);
+    assert(dn);
+    m_dn = strdup(dn);
+    assert(newRDN);
+    m_newRDN = strdup(newRDN);
+    if (newParentDN){
+        m_newParentDN = strdup(newParentDN);
+    }else{
+        m_newParentDN = 0;
+    }
+    m_deleteOld=deleteOld;
+}
+
+LDAPModDNRequest::~LDAPModDNRequest(){
+    DEBUG(LDAP_DEBUG_TRACE, "LDAPModDNRequest::~LDAPModDNRequest()" << endl);
+    delete[] m_dn;
+    delete[] m_newRDN;
+    delete[] m_newParentDN;
+}
+
+LDAPMessageQueue* LDAPModDNRequest::sendRequest(){
+    int msg_id;
+    int err=ldap_rename(m_connection->getSessionHandle(),m_dn,m_newRDN,
+            m_newParentDN,m_deleteOld ? 1 : 0, m_cons->getSrvCtrlsArray(),
+            m_cons->getClCtrlsArray(),&msg_id);
+    if(err!=LDAP_SUCCESS){
+        delete this;
+        throw LDAPException(err);
+    }else{
+        m_msgID=msg_id;
+        return new LDAPMessageQueue(this);
+    }
+
+}
+
+LDAPRequest* LDAPModDNRequest::followReferral(LDAPUrlList *urls){
+    DEBUG(LDAP_DEBUG_TRACE, "LDAPModifyRequest::followReferral()" << endl);
+    cerr << "to be implemented ..." << endl;
+    return 0;
+}
+