1
// $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPControl.cpp,v 1.4.10.1 2008/04/14 23:09:26 quanah Exp $
3
* Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
4
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
8
#include "LDAPControl.h"
13
LDAPCtrl::LDAPCtrl(const LDAPCtrl& c){
14
DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl(&)" << endl);
17
m_isCritical=c.m_isCritical;
20
LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data,
22
DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
23
DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER,
24
" oid:" << oid << endl << " critical:" << critical << endl);
26
m_isCritical=critical;
27
if (data != 0 && length !=0){
28
m_data.assign(data,length);
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);
40
m_isCritical=critical;
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 );
51
LDAPCtrl::~LDAPCtrl(){
52
DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl);
55
string LDAPCtrl::getOID() const{
56
DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl);
60
bool LDAPCtrl::isCritical()const {
61
DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl);
65
string LDAPCtrl::getData() const {
66
DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl);
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);
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;