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;
20 LDAPConnection::LDAPConnection(const string& hostname, int port,
21 LDAPConstraints* cons) :
22 LDAPAsynConnection(hostname, port, cons){
25 LDAPConnection::~LDAPConnection(){
28 int LDAPConnection::start_tls(){
29 return LDAPAsynConnection::start_tls();
32 void LDAPConnection::bind(const string& dn, const string& passwd,
33 LDAPConstraints* cons){
34 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::bind" << endl);
35 LDAPMessageQueue* msg=0;
38 msg = LDAPAsynConnection::bind(dn,passwd,cons);
39 res = (LDAPResult*)msg->getNext();
40 }catch(LDAPException e){
45 int resCode=res->getResultCode();
46 if(resCode != LDAPResult::SUCCESS) {
47 if(resCode == LDAPResult::REFERRAL){
48 LDAPUrlList urls = res->getReferralUrls();
51 throw LDAPReferralException(urls);
55 throw LDAPException(resCode);
59 delete msg; // memcheck
62 void LDAPConnection::unbind(){
63 LDAPAsynConnection::unbind();
66 bool LDAPConnection::compare(const string& dn, const LDAPAttribute& attr,
67 LDAPConstraints* cons){
68 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::compare" << endl);
69 LDAPMessageQueue* msg=0;
72 msg = LDAPAsynConnection::compare(dn,attr,cons);
73 res = (LDAPResult*)msg->getNext();
74 }catch(LDAPException e){
79 int resCode=res->getResultCode();
81 case LDAPResult::COMPARE_TRUE :
86 case LDAPResult::COMPARE_FALSE :
91 case LDAPResult::REFERRAL :
93 LDAPUrlList urls = res->getReferralUrls();
96 throw LDAPReferralException(urls);
102 throw LDAPException(resCode);
106 void LDAPConnection::del(const string& dn, const LDAPConstraints* cons){
107 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::del" << endl);
108 LDAPMessageQueue* msg=0;
111 msg = LDAPAsynConnection::del(dn,cons);
112 res = (LDAPResult*)msg->getNext();
113 }catch(LDAPException e){
118 int resCode=res->getResultCode();
120 case LDAPResult::SUCCESS :
124 case LDAPResult::REFERRAL :
126 LDAPUrlList urls = res->getReferralUrls();
129 throw LDAPReferralException(urls);
135 throw LDAPException(resCode);
140 void LDAPConnection::add(const LDAPEntry* le, const LDAPConstraints* cons){
141 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::add" << endl);
142 LDAPMessageQueue* msg=0;
145 msg = LDAPAsynConnection::add(le,cons);
146 res = (LDAPResult*)msg->getNext();
147 }catch(LDAPException e){
152 int resCode=res->getResultCode();
154 case LDAPResult::SUCCESS :
158 case LDAPResult::REFERRAL :
160 LDAPUrlList urls = res->getReferralUrls();
163 throw LDAPReferralException(urls);
169 throw LDAPException(resCode);
173 void LDAPConnection::modify(const string& dn, const LDAPModList* mods,
174 const LDAPConstraints* cons){
175 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::modify" << endl);
176 LDAPMessageQueue* msg=0;
179 msg = LDAPAsynConnection::modify(dn,mods,cons);
180 res = (LDAPResult*)msg->getNext();
181 }catch(LDAPException e){
186 int resCode=res->getResultCode();
188 case LDAPResult::SUCCESS :
192 case LDAPResult::REFERRAL :
194 LDAPUrlList urls = res->getReferralUrls();
197 throw LDAPReferralException(urls);
203 throw LDAPException(resCode);
208 void LDAPConnection::rename(const string& dn, const string& newRDN,
209 bool delOldRDN, const string& newParentDN,
210 const LDAPConstraints* cons){
211 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::rename" << endl);
212 LDAPMessageQueue* msg=0;
215 msg = LDAPAsynConnection::rename(dn,newRDN,delOldRDN, newParentDN,
217 res = (LDAPResult*)msg->getNext();
218 }catch(LDAPException e){
223 int resCode=res->getResultCode();
225 case LDAPResult::SUCCESS :
229 case LDAPResult::REFERRAL :
231 LDAPUrlList urls = res->getReferralUrls();
234 throw LDAPReferralException(urls);
240 throw LDAPException(resCode);
244 LDAPSearchResults* LDAPConnection::search(const string& base, int scope,
245 const string& filter, const StringList& attrs, bool attrsOnly,
246 const LDAPConstraints* cons){
247 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::search" << endl);
248 LDAPMessageQueue* msgq=0;
250 LDAPSearchResults* results= 0;
253 results = new LDAPSearchResults();
254 msgq = LDAPAsynConnection::search(base,scope, filter, attrs, attrsOnly,
256 res = results->readMessageQueue(msgq);
257 }catch(LDAPException e){
258 delete results; // memcheck
263 int resCode=res->getResultCode();
265 case LDAPResult::SUCCESS :
270 case LDAPResult::REFERRAL :
272 LDAPUrlList urls = res->getReferralUrls();
273 delete results; // memcheck
276 throw LDAPReferralException(urls);
280 delete results; // memcheck
283 throw LDAPException(resCode);
289 LDAPExtResult* LDAPConnection::extOperation(const string& oid,
290 const string& value, const LDAPConstraints *cons){
291 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::extOperation" << endl);
292 LDAPMessageQueue* msg=0;
293 LDAPExtResult* res=0;
295 msg = LDAPAsynConnection::extOperation(oid,value,cons);
296 res = (LDAPExtResult*)msg->getNext();
297 }catch(LDAPException e){
302 int resCode=res->getResultCode();
304 case LDAPResult::SUCCESS :
307 case LDAPResult::REFERRAL :
309 LDAPUrlList urls = res->getReferralUrls();
312 throw LDAPReferralException(urls);
318 throw LDAPException(resCode);
322 const string& LDAPConnection::getHost() const{
323 return LDAPAsynConnection::getHost();
326 int LDAPConnection::getPort() const{
327 return LDAPAsynConnection::getPort();
330 void LDAPConnection::setConstraints(LDAPConstraints* cons){
331 LDAPAsynConnection::setConstraints(cons);
334 const LDAPConstraints* LDAPConnection::getConstraints() const{
335 return LDAPAsynConnection::getConstraints();
338 int LDAPConnection::enableCache(long timeout, long maxmem) {
339 return LDAPAsynConnection::enableCache(timeout, maxmem);
343 void LDAPConnection::disableCache() {
344 LDAPAsynConnection::disableCache();
347 bool LDAPConnection::getCacheEnabled() {
348 return LDAPAsynConnection::getCacheEnabled();
351 void LDAPConnection::uncache_entry(string &dn) {
352 LDAPAsynConnection::uncache_entry(dn);
355 void LDAPConnection::flush_cache()
357 LDAPAsynConnection::flush_cache();