xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPControl.cpp (revision 6dffe8d42bd46273f674d7ab834e7be9b1af990e)
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