xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPDeleteRequest.cpp (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1d11b170bStron // $OpenLDAP$
22de962bdSlukem /*
3*e670fd5cSchristos  * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
42de962bdSlukem  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
52de962bdSlukem  */
62de962bdSlukem 
72de962bdSlukem #include <ldap.h>
82de962bdSlukem 
92de962bdSlukem #include "debug.h"
102de962bdSlukem 
112de962bdSlukem #include "LDAPDeleteRequest.h"
122de962bdSlukem #include "LDAPException.h"
132de962bdSlukem #include "LDAPMessageQueue.h"
142de962bdSlukem #include "LDAPResult.h"
152de962bdSlukem 
162de962bdSlukem using namespace std;
172de962bdSlukem 
LDAPDeleteRequest(const LDAPDeleteRequest & req)182de962bdSlukem LDAPDeleteRequest::LDAPDeleteRequest( const LDAPDeleteRequest& req) :
192de962bdSlukem         LDAPRequest(req){
202de962bdSlukem 	DEBUG(LDAP_DEBUG_CONSTRUCT,
212de962bdSlukem 		"LDAPDeleteRequest::LDAPDeleteRequest(&)" << endl);
222de962bdSlukem     m_dn = req.m_dn;
232de962bdSlukem }
242de962bdSlukem 
LDAPDeleteRequest(const string & dn,LDAPAsynConnection * connect,const LDAPConstraints * cons,bool isReferral,const LDAPRequest * parent)252de962bdSlukem LDAPDeleteRequest::LDAPDeleteRequest(const string& dn,
262de962bdSlukem         LDAPAsynConnection *connect, const LDAPConstraints *cons,
272de962bdSlukem         bool isReferral, const LDAPRequest* parent)
282de962bdSlukem         : LDAPRequest(connect, cons, isReferral, parent) {
292de962bdSlukem 	DEBUG(LDAP_DEBUG_CONSTRUCT,
302de962bdSlukem             "LDAPDeleteRequest::LDAPDeleteRequest()" << endl);
312de962bdSlukem 	DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER, "   dn:" << dn << endl);
322de962bdSlukem     m_requestType=LDAPRequest::DELETE;
332de962bdSlukem     m_dn=dn;
342de962bdSlukem }
352de962bdSlukem 
~LDAPDeleteRequest()362de962bdSlukem LDAPDeleteRequest::~LDAPDeleteRequest(){
372de962bdSlukem     DEBUG(LDAP_DEBUG_DESTROY,
382de962bdSlukem           "LDAPDeleteRequest::~LDAPDeleteRequest()" << endl);
392de962bdSlukem }
402de962bdSlukem 
sendRequest()412de962bdSlukem LDAPMessageQueue* LDAPDeleteRequest::sendRequest(){
422de962bdSlukem 	DEBUG(LDAP_DEBUG_TRACE, "LDAPDeleteRequest::sendRequest()" << endl);
432de962bdSlukem     int msgID=0;
442de962bdSlukem     LDAPControl** tmpSrvCtrls=m_cons->getSrvCtrlsArray();
452de962bdSlukem     LDAPControl** tmpClCtrls=m_cons->getClCtrlsArray();
462de962bdSlukem     int err=ldap_delete_ext(m_connection->getSessionHandle(),m_dn.c_str(),
472de962bdSlukem             tmpSrvCtrls, tmpClCtrls ,&msgID);
482de962bdSlukem     LDAPControlSet::freeLDAPControlArray(tmpSrvCtrls);
492de962bdSlukem     LDAPControlSet::freeLDAPControlArray(tmpClCtrls);
502de962bdSlukem     if(err != LDAP_SUCCESS){
512de962bdSlukem         throw LDAPException(err);
522de962bdSlukem     }else{
532de962bdSlukem         m_msgID=msgID;
542de962bdSlukem         return new LDAPMessageQueue(this);
552de962bdSlukem     }
562de962bdSlukem }
572de962bdSlukem 
followReferral(LDAPMsg * refs)582de962bdSlukem LDAPRequest* LDAPDeleteRequest::followReferral(LDAPMsg* refs){
592de962bdSlukem 	DEBUG(LDAP_DEBUG_TRACE, "LDAPDeleteRequest::followReferral()" << endl);
602de962bdSlukem     LDAPUrlList::const_iterator usedUrl;
612de962bdSlukem     LDAPUrlList urls= ((LDAPResult*)refs)->getReferralUrls();
622de962bdSlukem     LDAPAsynConnection* con=0;
632de962bdSlukem     try{
642de962bdSlukem         con = getConnection()->referralConnect(urls,usedUrl,m_cons);
652de962bdSlukem     }catch (LDAPException e){
662de962bdSlukem         delete con;
672de962bdSlukem         return 0;
682de962bdSlukem     }
692de962bdSlukem     if(con != 0){
702de962bdSlukem         return new LDAPDeleteRequest(m_dn, con, m_cons, true, this);
712de962bdSlukem     }
722de962bdSlukem     return 0;
732de962bdSlukem }
742de962bdSlukem 
752de962bdSlukem 
76