]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPResult.cpp
af00e04c2241d0b7d0b41bf17d220db3af438b4c
[openldap] / contrib / ldapc++ / src / LDAPResult.cpp
1 // $OpenLDAP$
2 /*
3  * Copyright 2000-2017 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6
7
8 #include "debug.h"
9 #include"LDAPResult.h"
10 #include"LDAPAsynConnection.h"
11 #include "LDAPRequest.h"
12 #include "LDAPException.h"
13
14 #include <cstdlib>
15
16 using namespace std;
17
18 LDAPResult::LDAPResult(const LDAPRequest *req, LDAPMessage *msg) : 
19         LDAPMsg(msg){
20     if(msg != 0){
21         DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPResult::LDAPResult()" << endl);
22         const LDAPAsynConnection *con=req->getConnection();
23         char **refs=0;
24         LDAPControl** srvctrls=0;
25         char* matchedDN=0;
26         char* errMsg=0;
27         int err=ldap_parse_result(con->getSessionHandle(),msg,&m_resCode,
28                 &matchedDN, &errMsg,&refs,&srvctrls,0);
29         if(err != LDAP_SUCCESS){
30             ber_memvfree((void**) refs);
31             ldap_controls_free(srvctrls);
32             throw LDAPException(err);
33         }else{
34             if (refs){
35                 m_referrals=LDAPUrlList(refs);
36                 ber_memvfree((void**) refs);
37             }
38             if (srvctrls){
39                 m_srvControls = LDAPControlSet(srvctrls);
40                 m_hasControls = true;
41                 ldap_controls_free(srvctrls);
42             }else{
43                 m_hasControls = false;
44             }
45             if(matchedDN != 0){
46                 m_matchedDN=string(matchedDN);
47                 free(matchedDN);
48             }
49             if(errMsg != 0){
50                 m_errMsg=string(errMsg);
51                 free(errMsg);
52             }
53         }
54     }
55 }
56
57 LDAPResult::LDAPResult(int type, int resultCode, const std::string &msg) : 
58         LDAPMsg(type,0), m_resCode(resultCode), m_errMsg(msg)
59 {}
60
61
62 LDAPResult::~LDAPResult(){
63     DEBUG(LDAP_DEBUG_DESTROY,"LDAPResult::~LDAPResult()" << endl);
64 }
65
66 int LDAPResult::getResultCode() const{
67     DEBUG(LDAP_DEBUG_TRACE,"LDAPResult::getResultCode()" << endl);
68     return m_resCode;
69 }
70
71 string LDAPResult::resToString() const{
72     DEBUG(LDAP_DEBUG_TRACE,"LDAPResult::resToString()" << endl);
73     return string(ldap_err2string(m_resCode));
74 }
75
76 const string& LDAPResult::getErrMsg() const{
77     DEBUG(LDAP_DEBUG_TRACE,"LDAPResult::getErrMsg()" << endl);
78     return m_errMsg;
79 }
80
81 const string& LDAPResult::getMatchedDN() const{
82     DEBUG(LDAP_DEBUG_TRACE,"LDAPResult::getMatchedDN()" << endl);
83     return m_matchedDN;
84 }
85
86 const LDAPUrlList& LDAPResult::getReferralUrls() const{
87     DEBUG(LDAP_DEBUG_TRACE,"LDAPResult::getReferralUrl()" << endl);
88     return m_referrals;
89 }
90
91 ostream& operator<<(ostream &s,LDAPResult &l){
92     return s << "Result: " << l.m_resCode << ": "  
93         << ldap_err2string(l.m_resCode) << endl 
94         << "Matched: " << l.m_matchedDN << endl << "ErrMsg: " << l.m_errMsg;
95 }
96