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