1 // $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPControl.cpp,v 1.4.10.1 2008/04/14 23:09:26 quanah Exp $ 2 /* 3 * Copyright 2000, OpenLDAP Foundation, All Rights Reserved. 4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file 5 */ 6 7 8 #include "LDAPControl.h" 9 #include "debug.h" 10 11 using namespace std; 12 13 LDAPCtrl::LDAPCtrl(const LDAPCtrl& c){ 14 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl(&)" << endl); 15 m_oid=c.m_oid; 16 m_data=c.m_data; 17 m_isCritical=c.m_isCritical; 18 } 19 20 LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data, 21 int length){ 22 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); 23 DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER, 24 " oid:" << oid << endl << " critical:" << critical << endl); 25 m_oid = oid; 26 m_isCritical=critical; 27 if (data != 0 && length !=0){ 28 m_data.assign(data,length); 29 }else{ 30 m_data=string(); 31 } 32 } 33 34 35 LDAPCtrl::LDAPCtrl(const string& oid, bool critical, const string& data){ 36 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); 37 DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER, 38 " oid:" << oid << endl << " critical:" << critical << endl); 39 m_oid=oid; 40 m_isCritical=critical; 41 m_data=data; 42 } 43 44 LDAPCtrl::LDAPCtrl(const LDAPControl* ctrl){ 45 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); 46 m_oid = string(ctrl->ldctl_oid); 47 m_oid = ctrl->ldctl_iscritical ? true : false; 48 m_oid = string(ctrl->ldctl_value.bv_val, ctrl->ldctl_value.bv_len ); 49 } 50 51 LDAPCtrl::~LDAPCtrl(){ 52 DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl); 53 } 54 55 string LDAPCtrl::getOID() const{ 56 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl); 57 return m_oid; 58 } 59 60 bool LDAPCtrl::isCritical()const { 61 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl); 62 return m_isCritical; 63 } 64 65 string LDAPCtrl::getData() const { 66 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl); 67 return m_data; 68 } 69 70 LDAPControl* LDAPCtrl::getControlStruct() const { 71 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getControlStruct()" << endl); 72 LDAPControl* ret = new LDAPControl; 73 ret->ldctl_oid= new char[m_oid.size() + 1]; 74 m_oid.copy(ret->ldctl_oid,string::npos); 75 ret->ldctl_oid[m_oid.size()]=0; 76 ret->ldctl_value.bv_len=m_data.size(); 77 ret->ldctl_value.bv_val= new char[m_data.size()]; 78 m_data.copy(ret->ldctl_value.bv_val,string::npos); 79 ret->ldctl_iscritical = ( m_isCritical ? 1:0); 80 return ret; 81 } 82 83 void LDAPCtrl::freeLDAPControlStruct(LDAPControl *ctrl){ 84 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::freeControlStruct()" << endl); 85 delete[] ctrl->ldctl_oid; 86 delete[] ctrl->ldctl_value.bv_val; 87 delete ctrl; 88 } 89 90