]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPControl.cpp
Entry rwlock is no longer needed as concurrency is managed
[openldap] / contrib / ldapc++ / src / LDAPControl.cpp
1 /*
2  * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5
6
7 #include "LDAPControl.h"
8 #include "debug.h"
9
10 using namespace std;
11
12 LDAPCtrl::LDAPCtrl(const LDAPCtrl& c){
13     DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl(&)" << endl);
14     m_oid=c.m_oid;
15     m_data=c.m_data;
16     m_isCritical=c.m_isCritical;
17 }
18
19 LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data,
20         int length){
21     DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
22     DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER,
23             "   oid:" << oid << endl << "   critical:" << critical << endl);
24     m_oid = oid;
25     m_isCritical=critical;
26     if (data != 0 && length !=0){
27         m_data.assign(data,length);
28     }else{
29         m_data=string();
30     }
31 }
32
33
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);
38     m_oid=oid;
39     m_isCritical=critical;
40     m_data=data;
41 }
42
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 );
48 }
49
50 LDAPCtrl::~LDAPCtrl(){
51     DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl);
52 }
53
54 string LDAPCtrl::getOID() const{
55     DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl);
56     return m_oid;
57 }
58
59 bool LDAPCtrl::isCritical()const {
60     DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl);
61     return m_isCritical;
62 }
63
64 string LDAPCtrl::getData() const {
65     DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl);
66     return m_data;
67 }
68          
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);
79     return ret;
80 }
81
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;
86     delete ctrl;
87 }
88