LDAPControl.cpp revision 1.1.1.1
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
11using namespace std;
12
13LDAPCtrl::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
20LDAPCtrl::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
35LDAPCtrl::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
44LDAPCtrl::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
51LDAPCtrl::~LDAPCtrl(){
52    DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl);
53}
54
55string LDAPCtrl::getOID() const{
56    DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl);
57    return m_oid;
58}
59
60bool LDAPCtrl::isCritical()const {
61    DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl);
62    return m_isCritical;
63}
64
65string LDAPCtrl::getData() const {
66    DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl);
67    return m_data;
68}
69
70LDAPControl* 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
83void 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