]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPAddRequest.cpp
Initial check of the LDAP C++ SDK written by Ralf Haferkamp <rhafer@suse.de>
[openldap] / contrib / ldapc++ / src / LDAPAddRequest.cpp
1 /*
2  * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5
6
7 #include <ldap.h>
8
9 #include "debug.h"
10
11 #include "LDAPAddRequest.h"
12 #include "LDAPEntry.h"
13 #include "LDAPException.h"
14 #include "LDAPMessageQueue.h"
15
16 LDAPAddRequest::LDAPAddRequest(const LDAPAddRequest& req) :
17         LDAPRequest(req){
18     DEBUG(LDAP_DEBUG_TRACE, "LDAPAddRequest::LDAPAddRequest(LDAPAddRequest&)"
19             << endl);
20 }
21
22 LDAPAddRequest::LDAPAddRequest(const LDAPEntry *entry, 
23         const LDAPAsynConnection *connect, const LDAPConstraints *cons,
24         bool isReferral=false) 
25         : LDAPRequest(connect, cons, isReferral){
26     DEBUG(LDAP_DEBUG_TRACE, "LDAPAddRequest::LDAPAddRequest()" << endl);
27     DEBUG(LDAP_DEBUG_PARAMETER, "   entry:" << *entry << endl
28             << "   isReferral:" << isReferral << endl);
29     m_requestType = LDAPRequest::ADD;
30     m_entry = new LDAPEntry(*entry);
31 }
32
33 LDAPAddRequest::~LDAPAddRequest(){
34     DEBUG(LDAP_DEBUG_TRACE, "LDAPAddRequest::~LDAPAddRequest()" << endl);
35     delete m_entry;
36 }
37
38 LDAPMessageQueue* LDAPAddRequest::sendRequest(){
39     DEBUG(LDAP_DEBUG_TRACE, "LDAPAddRequest::sendRequest()" << endl);
40     int msgID=0;
41     LDAPAttributeList *attrList = m_entry->getAttributes();
42     int err=ldap_add_ext(m_connection->getSessionHandle(),
43             m_entry->getDN(),attrList->toLDAPModArray(), 
44             m_cons->getSrvCtrlsArray(), m_cons->getClCtrlsArray(),&msgID);
45     if(err != LDAP_SUCCESS){
46         delete this;
47         throw LDAPException(err);
48     }else{
49         m_msgID=msgID;
50         return new LDAPMessageQueue(this);
51     }
52 }
53
54 LDAPRequest* LDAPAddRequest::followReferral(LDAPUrlList *urls){
55     DEBUG(LDAP_DEBUG_TRACE, "LDAPAddRequest::followReferral()"<< endl);
56     cerr << "to be implemented" << endl;
57     return 0;
58 }
59