2 * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
7 #include "LDAPControl.h"
12 LDAPCtrl::LDAPCtrl(const LDAPCtrl& c){
13 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl(&)" << endl);
16 m_isCritical=c.m_isCritical;
19 LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data,
21 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
22 DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER,
23 " oid:" << oid << endl << " critical:" << critical << endl);
25 m_isCritical=critical;
26 if (data != 0 && length !=0){
27 m_data.assign(data,length);
34 LDAPCtrl::LDAPCtrl(const string& oid, bool critical, const string& data){
35 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
36 DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER,
37 " oid:" << oid << endl << " critical:" << critical << endl);
39 m_isCritical=critical;
43 LDAPCtrl::LDAPCtrl(const LDAPControl* ctrl){
44 DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
45 m_oid = string(ctrl->ldctl_oid);
46 m_oid = ctrl->ldctl_iscritical ? true : false;
47 m_oid = string(ctrl->ldctl_value.bv_val, ctrl->ldctl_value.bv_len );
50 LDAPCtrl::~LDAPCtrl(){
51 DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl);
54 string LDAPCtrl::getOID() const{
55 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl);
59 bool LDAPCtrl::isCritical()const {
60 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl);
64 string LDAPCtrl::getData() const {
65 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl);
69 LDAPControl* LDAPCtrl::getControlStruct() const {
70 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getControlStruct()" << endl);
71 LDAPControl* ret = new LDAPControl;
72 ret->ldctl_oid= new char[m_oid.size() + 1];
73 m_oid.copy(ret->ldctl_oid,string::npos);
74 ret->ldctl_oid[m_oid.size()]=0;
75 ret->ldctl_value.bv_len=m_data.size();
76 ret->ldctl_value.bv_val= new char[m_data.size()];
77 m_data.copy(ret->ldctl_value.bv_val,string::npos);
78 ret->ldctl_iscritical = ( m_isCritical ? 1:0);
82 void LDAPCtrl::freeLDAPControlStruct(LDAPControl *ctrl){
83 DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::freeControlStruct()" << endl);
84 delete[] ctrl->ldctl_oid;
85 delete[] ctrl->ldctl_value.bv_val;