]> git.sur5r.net Git - openldap/blob - 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
1 /*
2  * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5
6 #include <ldap.h>
7
8 #include "debug.h"
9
10 #include "LDAPModDNRequest.h"
11 #include "LDAPException.h"
12 #include "LDAPUrlList.h"
13
14 LDAPModDNRequest::LDAPModDNRequest(const LDAPModDNRequest& req) :
15         LDAPRequest(req){
16     DEBUG(LDAP_DEBUG_TRACE, 
17             "LDAPModDNRequest::LDAPModDNRequest(LDAPModDNRequest&)" << endl);
18 }
19
20 LDAPModDNRequest::LDAPModDNRequest(const char *dn, const char *newRDN, 
21         bool deleteOld, const char *newParentDN, 
22         const LDAPAsynConnection *connect, 
23         const LDAPConstraints *cons, bool isReferral=false):
24         LDAPRequest(connect, cons, isReferral){
25     DEBUG(LDAP_DEBUG_TRACE, "LDAPModDNRequest::LDAPModDNRequest()" << endl);
26     DEBUG(LDAP_DEBUG_PARAMETER, "   dn:" << dn << endl
27             << "   newRDN:" << newRDN << endl
28             << "   deleteOld:" << deleteOld << endl
29             << "   newParentDN:" << newParentDN << endl);
30     assert(dn);
31     m_dn = strdup(dn);
32     assert(newRDN);
33     m_newRDN = strdup(newRDN);
34     if (newParentDN){
35         m_newParentDN = strdup(newParentDN);
36     }else{
37         m_newParentDN = 0;
38     }
39     m_deleteOld=deleteOld;
40 }
41
42 LDAPModDNRequest::~LDAPModDNRequest(){
43     DEBUG(LDAP_DEBUG_TRACE, "LDAPModDNRequest::~LDAPModDNRequest()" << endl);
44     delete[] m_dn;
45     delete[] m_newRDN;
46     delete[] m_newParentDN;
47 }
48
49 LDAPMessageQueue* LDAPModDNRequest::sendRequest(){
50     int msg_id;
51     int err=ldap_rename(m_connection->getSessionHandle(),m_dn,m_newRDN,
52             m_newParentDN,m_deleteOld ? 1 : 0, m_cons->getSrvCtrlsArray(),
53             m_cons->getClCtrlsArray(),&msg_id);
54     if(err!=LDAP_SUCCESS){
55         delete this;
56         throw LDAPException(err);
57     }else{
58         m_msgID=msg_id;
59         return new LDAPMessageQueue(this);
60     }
61
62 }
63
64 LDAPRequest* LDAPModDNRequest::followReferral(LDAPUrlList *urls){
65     DEBUG(LDAP_DEBUG_TRACE, "LDAPModifyRequest::followReferral()" << endl);
66     cerr << "to be implemented ..." << endl;
67     return 0;
68 }
69