]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPModifyRequest.cpp
Initial check of the LDAP C++ SDK written by Ralf Haferkamp <rhafer@suse.de>
[openldap] / contrib / ldapc++ / src / LDAPModifyRequest.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 "LDAPModifyRequest.h"
11 #include "LDAPException.h"
12 #include "LDAPMessageQueue.h"
13
14 LDAPModifyRequest::LDAPModifyRequest(const LDAPModifyRequest& req) :
15         LDAPRequest(req){
16     DEBUG(LDAP_DEBUG_TRACE, 
17             "LDAPModifyRequest::LDAPModifyRequest(LDAPModifyRequest&)" 
18             << endl);
19 }
20
21 LDAPModifyRequest::LDAPModifyRequest(const char *dn, 
22         const LDAPModList *modList, const LDAPAsynConnection *connect,
23         const LDAPConstraints *cons, bool isReferral=false) :
24         LDAPRequest(connect, cons, isReferral){
25     DEBUG(LDAP_DEBUG_TRACE, 
26             "LDAPModifyRequest::LDAPModifyRequest(LDAPModifyRequest&)" 
27             << endl);            
28     DEBUG(LDAP_DEBUG_PARAMETER, "   dn:" << dn << endl);
29
30     m_dn = strdup(dn);
31     m_modList = new LDAPModList(*modList);
32 }
33
34 LDAPModifyRequest::~LDAPModifyRequest(){
35     DEBUG(LDAP_DEBUG_TRACE, "LDAPModifyRequest::~LDAPModifyRequest()" << endl);
36     delete m_dn;
37     delete m_modList;
38 }
39
40 LDAPMessageQueue* LDAPModifyRequest::sendRequest(){
41     DEBUG(LDAP_DEBUG_TRACE, "LDAPModifyRequest::sendRequest()" << endl);
42     int msgID=0;
43     int err=ldap_modify_ext(m_connection->getSessionHandle(),m_dn,
44             m_modList->toLDAPModArray(), m_cons->getSrvCtrlsArray(), 
45             m_cons->getClCtrlsArray(),&msgID);
46     if(err != LDAP_SUCCESS){
47         delete this;
48         throw LDAPException(err);
49     }else{
50         m_msgID=msgID;
51         return new LDAPMessageQueue(this);
52     }
53 }
54
55 LDAPRequest* LDAPModifyRequest::followReferral(LDAPUrlList *refs){
56     DEBUG(LDAP_DEBUG_TRACE, "LDAPModifyRequest::followReferral()" << endl);
57     cerr << "to be implemented ..." << endl;
58     return 0;
59 }
60