2 * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
8 #include "LDAPResult.h"
9 #include "LDAPException.h"
10 #include "LDAPReferralException.h"
11 #include "LDAPUrlList.h"
13 #include "LDAPConnection.h"
14 const int LDAPConnection::SEARCH_BASE = LDAPAsynConnection::SEARCH_BASE;
15 const int LDAPConnection::SEARCH_ONE = LDAPAsynConnection::SEARCH_ONE;
16 const int LDAPConnection::SEARCH_SUB = LDAPAsynConnection::SEARCH_SUB;
18 LDAPConnection::LDAPConnection(const string& hostname, int port,
19 LDAPConstraints* cons) :
20 LDAPAsynConnection(hostname, port, cons){
23 LDAPConnection::~LDAPConnection(){
26 int LDAPConnection::start_tls(){
27 return LDAPAsynConnection::start_tls();
30 void LDAPConnection::bind(const string& dn, const string& passwd,
31 LDAPConstraints* cons){
32 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::bind" << endl);
33 LDAPMessageQueue* msg=0;
36 msg = LDAPAsynConnection::bind(dn,passwd,cons);
37 res = (LDAPResult*)msg->getNext();
38 }catch(LDAPException e){
43 int resCode=res->getResultCode();
44 if(resCode != LDAPResult::SUCCESS) {
45 if(resCode == LDAPResult::REFERRAL){
46 LDAPUrlList urls = res->getReferralUrls();
49 throw LDAPReferralException(urls);
53 throw LDAPException(resCode);
57 delete msg; // memcheck
60 void LDAPConnection::unbind(){
61 LDAPAsynConnection::unbind();
64 bool LDAPConnection::compare(const string& dn, const LDAPAttribute& attr,
65 LDAPConstraints* cons){
66 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::compare" << endl);
67 LDAPMessageQueue* msg=0;
70 msg = LDAPAsynConnection::compare(dn,attr,cons);
71 res = (LDAPResult*)msg->getNext();
72 }catch(LDAPException e){
77 int resCode=res->getResultCode();
79 case LDAPResult::COMPARE_TRUE :
84 case LDAPResult::COMPARE_FALSE :
89 case LDAPResult::REFERRAL :
91 LDAPUrlList urls = res->getReferralUrls();
94 throw LDAPReferralException(urls);
100 throw LDAPException(resCode);
104 void LDAPConnection::del(const string& dn, const LDAPConstraints* cons){
105 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::del" << endl);
106 LDAPMessageQueue* msg=0;
109 msg = LDAPAsynConnection::del(dn,cons);
110 res = (LDAPResult*)msg->getNext();
111 }catch(LDAPException e){
116 int resCode=res->getResultCode();
118 case LDAPResult::SUCCESS :
122 case LDAPResult::REFERRAL :
124 LDAPUrlList urls = res->getReferralUrls();
127 throw LDAPReferralException(urls);
133 throw LDAPException(resCode);
138 void LDAPConnection::add(const LDAPEntry* le, const LDAPConstraints* cons=0){
139 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::add" << endl);
140 LDAPMessageQueue* msg=0;
143 msg = LDAPAsynConnection::add(le,cons);
144 res = (LDAPResult*)msg->getNext();
145 }catch(LDAPException e){
150 int resCode=res->getResultCode();
152 case LDAPResult::SUCCESS :
156 case LDAPResult::REFERRAL :
158 LDAPUrlList urls = res->getReferralUrls();
161 throw LDAPReferralException(urls);
167 throw LDAPException(resCode);
171 void LDAPConnection::modify(const string& dn, const LDAPModList* mods,
172 const LDAPConstraints* cons){
173 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::modify" << endl);
174 LDAPMessageQueue* msg=0;
177 msg = LDAPAsynConnection::modify(dn,mods,cons);
178 res = (LDAPResult*)msg->getNext();
179 }catch(LDAPException e){
184 int resCode=res->getResultCode();
186 case LDAPResult::SUCCESS :
190 case LDAPResult::REFERRAL :
192 LDAPUrlList urls = res->getReferralUrls();
195 throw LDAPReferralException(urls);
201 throw LDAPException(resCode);
206 void LDAPConnection::rename(const string& dn, const string& newRDN,
207 bool delOldRDN, const string& newParentDN,
208 const LDAPConstraints* cons=0){
209 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::rename" << endl);
210 LDAPMessageQueue* msg=0;
213 msg = LDAPAsynConnection::rename(dn,newRDN,delOldRDN, newParentDN,
215 res = (LDAPResult*)msg->getNext();
216 }catch(LDAPException e){
221 int resCode=res->getResultCode();
223 case LDAPResult::SUCCESS :
227 case LDAPResult::REFERRAL :
229 LDAPUrlList urls = res->getReferralUrls();
232 throw LDAPReferralException(urls);
238 throw LDAPException(resCode);
242 LDAPSearchResults* LDAPConnection::search(const string& base, int scope,
243 const string& filter, const StringList& attrs, bool attrsOnly,
244 const LDAPConstraints* cons){
245 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::search" << endl);
246 LDAPMessageQueue* msgq=0;
248 LDAPSearchResults* results= 0;
251 results = new LDAPSearchResults();
252 msgq = LDAPAsynConnection::search(base,scope, filter, attrs, attrsOnly,
254 res = results->readMessageQueue(msgq);
255 }catch(LDAPException e){
256 delete results; // memcheck
261 int resCode=res->getResultCode();
263 case LDAPResult::SUCCESS :
268 case LDAPResult::REFERRAL :
270 LDAPUrlList urls = res->getReferralUrls();
271 delete results; // memcheck
274 throw LDAPReferralException(urls);
278 delete results; // memcheck
281 throw LDAPException(resCode);
287 LDAPExtResult* LDAPConnection::extOperation(const string& oid,
288 const string& value, const LDAPConstraints *cons = 0){
289 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::extOperation" << endl);
290 LDAPMessageQueue* msg=0;
291 LDAPExtResult* res=0;
293 msg = LDAPAsynConnection::extOperation(oid,value,cons);
294 res = (LDAPExtResult*)msg->getNext();
295 }catch(LDAPException e){
300 int resCode=res->getResultCode();
302 case LDAPResult::SUCCESS :
305 case LDAPResult::REFERRAL :
307 LDAPUrlList urls = res->getReferralUrls();
310 throw LDAPReferralException(urls);
316 throw LDAPException(resCode);
320 const string& LDAPConnection::getHost() const{
321 return LDAPAsynConnection::getHost();
324 int LDAPConnection::getPort() const{
325 return LDAPAsynConnection::getPort();
328 void LDAPConnection::setConstraints(LDAPConstraints* cons){
329 LDAPAsynConnection::setConstraints(cons);
332 const LDAPConstraints* LDAPConnection::getConstraints() const{
333 return LDAPAsynConnection::getConstraints();