openldap/contrib/ldapc++/src/LDAPModDNRequest.cpp

70 lines
2 KiB
C++
Raw Normal View History

/*
* 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;
}