xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPExtResult.cpp (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1d11b170bStron // $OpenLDAP$
22de962bdSlukem /*
3*e670fd5cSchristos  * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
42de962bdSlukem  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
52de962bdSlukem  */
62de962bdSlukem 
72de962bdSlukem #include "debug.h"
82de962bdSlukem #include <lber.h>
92de962bdSlukem #include "LDAPRequest.h"
102de962bdSlukem #include "LDAPException.h"
112de962bdSlukem 
122de962bdSlukem #include "LDAPResult.h"
132de962bdSlukem #include "LDAPExtResult.h"
142de962bdSlukem 
152de962bdSlukem using namespace std;
162de962bdSlukem 
LDAPExtResult(const LDAPRequest * req,LDAPMessage * msg)172de962bdSlukem LDAPExtResult::LDAPExtResult(const LDAPRequest* req, LDAPMessage* msg) :
182de962bdSlukem         LDAPResult(req, msg){
192de962bdSlukem     DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPExtResult::LDAPExtResult()" << endl);
202de962bdSlukem     char* oid = 0;
212de962bdSlukem     BerValue* data = 0;
222de962bdSlukem     LDAP* lc = req->getConnection()->getSessionHandle();
232de962bdSlukem     int err=ldap_parse_extended_result(lc, msg, &oid, &data, 0);
242de962bdSlukem     if(err != LDAP_SUCCESS){
252de962bdSlukem         ber_bvfree(data);
262de962bdSlukem         ldap_memfree(oid);
272de962bdSlukem         throw LDAPException(err);
282de962bdSlukem     }else{
292de962bdSlukem         m_oid=string(oid);
302de962bdSlukem         ldap_memfree(oid);
312de962bdSlukem         if(data){
322de962bdSlukem             m_data=string(data->bv_val, data->bv_len);
332de962bdSlukem             ber_bvfree(data);
342de962bdSlukem         }
352de962bdSlukem     }
362de962bdSlukem }
372de962bdSlukem 
~LDAPExtResult()382de962bdSlukem LDAPExtResult::~LDAPExtResult(){
392de962bdSlukem     DEBUG(LDAP_DEBUG_DESTROY,"LDAPExtResult::~LDAPExtResult()" << endl);
402de962bdSlukem }
412de962bdSlukem 
getResponseOid() const422de962bdSlukem const string& LDAPExtResult::getResponseOid() const{
432de962bdSlukem     return m_oid;
442de962bdSlukem }
452de962bdSlukem 
getResponse() const462de962bdSlukem const string& LDAPExtResult::getResponse() const{
472de962bdSlukem     return m_data;
482de962bdSlukem }
492de962bdSlukem 
50