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 void LDAPConnection::start_tls(){
29 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);
53 string srvMsg = res->getErrMsg();
56 throw LDAPException(resCode, srvMsg);
60 delete msg; // memcheck
63 void LDAPConnection::unbind(){
64 LDAPAsynConnection::unbind();
67 bool LDAPConnection::compare(const string& dn, const LDAPAttribute& attr,
68 LDAPConstraints* cons){
69 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::compare" << endl);
70 LDAPMessageQueue* msg=0;
73 msg = LDAPAsynConnection::compare(dn,attr,cons);
74 res = (LDAPResult*)msg->getNext();
75 }catch(LDAPException e){
80 int resCode=res->getResultCode();
82 case LDAPResult::COMPARE_TRUE :
87 case LDAPResult::COMPARE_FALSE :
92 case LDAPResult::REFERRAL :
94 LDAPUrlList urls = res->getReferralUrls();
97 throw LDAPReferralException(urls);
101 string srvMsg = res->getErrMsg();
104 throw LDAPException(resCode, srvMsg);
108 void LDAPConnection::del(const string& dn, const LDAPConstraints* cons){
109 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::del" << endl);
110 LDAPMessageQueue* msg=0;
113 msg = LDAPAsynConnection::del(dn,cons);
114 res = (LDAPResult*)msg->getNext();
115 }catch(LDAPException e){
120 int resCode=res->getResultCode();
122 case LDAPResult::SUCCESS :
126 case LDAPResult::REFERRAL :
128 LDAPUrlList urls = res->getReferralUrls();
131 throw LDAPReferralException(urls);
135 string srvMsg = res->getErrMsg();
138 throw LDAPException(resCode, srvMsg);
143 void LDAPConnection::add(const LDAPEntry* le, const LDAPConstraints* cons){
144 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::add" << endl);
145 LDAPMessageQueue* msg=0;
148 msg = LDAPAsynConnection::add(le,cons);
149 res = (LDAPResult*)msg->getNext();
150 }catch(LDAPException e){
155 int resCode=res->getResultCode();
157 case LDAPResult::SUCCESS :
161 case LDAPResult::REFERRAL :
163 LDAPUrlList urls = res->getReferralUrls();
166 throw LDAPReferralException(urls);
170 string srvMsg = res->getErrMsg();
173 throw LDAPException(resCode, srvMsg);
177 void LDAPConnection::modify(const string& dn, const LDAPModList* mods,
178 const LDAPConstraints* cons){
179 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::modify" << endl);
180 LDAPMessageQueue* msg=0;
183 msg = LDAPAsynConnection::modify(dn,mods,cons);
184 res = (LDAPResult*)msg->getNext();
185 }catch(LDAPException e){
190 int resCode=res->getResultCode();
192 case LDAPResult::SUCCESS :
196 case LDAPResult::REFERRAL :
198 LDAPUrlList urls = res->getReferralUrls();
201 throw LDAPReferralException(urls);
205 string srvMsg = res->getErrMsg();
208 throw LDAPException(resCode, srvMsg);
213 void LDAPConnection::rename(const string& dn, const string& newRDN,
214 bool delOldRDN, const string& newParentDN,
215 const LDAPConstraints* cons){
216 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::rename" << endl);
217 LDAPMessageQueue* msg=0;
220 msg = LDAPAsynConnection::rename(dn,newRDN,delOldRDN, newParentDN,
222 res = (LDAPResult*)msg->getNext();
223 }catch(LDAPException e){
228 int resCode=res->getResultCode();
230 case LDAPResult::SUCCESS :
234 case LDAPResult::REFERRAL :
236 LDAPUrlList urls = res->getReferralUrls();
239 throw LDAPReferralException(urls);
243 string srvMsg = res->getErrMsg();
246 throw LDAPException(resCode, srvMsg);
250 LDAPSearchResults* LDAPConnection::search(const string& base, int scope,
251 const string& filter, const StringList& attrs, bool attrsOnly,
252 const LDAPConstraints* cons){
253 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::search" << endl);
254 LDAPMessageQueue* msgq=0;
256 LDAPSearchResults* results= 0;
259 results = new LDAPSearchResults();
260 msgq = LDAPAsynConnection::search(base,scope, filter, attrs, attrsOnly,
262 res = results->readMessageQueue(msgq);
263 }catch(LDAPException e){
264 delete results; // memcheck
269 int resCode=res->getResultCode();
271 case LDAPResult::SUCCESS :
276 case LDAPResult::REFERRAL :
278 LDAPUrlList urls = res->getReferralUrls();
279 delete results; // memcheck
282 throw LDAPReferralException(urls);
286 string srvMsg = res->getErrMsg();
287 delete results; // memcheck
290 throw LDAPException(resCode, srvMsg);
296 LDAPExtResult* LDAPConnection::extOperation(const string& oid,
297 const string& value, const LDAPConstraints *cons){
298 DEBUG(LDAP_DEBUG_TRACE,"LDAPConnection::extOperation" << endl);
299 LDAPMessageQueue* msg=0;
300 LDAPExtResult* res=0;
302 msg = LDAPAsynConnection::extOperation(oid,value,cons);
303 res = (LDAPExtResult*)msg->getNext();
304 }catch(LDAPException e){
309 int resCode=res->getResultCode();
311 case LDAPResult::SUCCESS :
314 case LDAPResult::REFERRAL :
316 LDAPUrlList urls = res->getReferralUrls();
319 throw LDAPReferralException(urls);
323 string srvMsg = res->getErrMsg();
326 throw LDAPException(resCode, srvMsg);
330 const string& LDAPConnection::getHost() const{
331 return LDAPAsynConnection::getHost();
334 int LDAPConnection::getPort() const{
335 return LDAPAsynConnection::getPort();
338 void LDAPConnection::setConstraints(LDAPConstraints* cons){
339 LDAPAsynConnection::setConstraints(cons);
342 const LDAPConstraints* LDAPConnection::getConstraints() const{
343 return LDAPAsynConnection::getConstraints();