⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldapsearchrequest.cpp

📁 OpenLdap是LDAP的开源项目
💻 CPP
字号:
/* * Copyright 2000, OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */#include "config.h"#include "ac/time.h"#include "debug.h"#include "LDAPSearchRequest.h"#include "LDAPException.h"#include "LDAPSearchReference.h"#include "LDAPResult.h"#include "LDAPRequest.h"#include "LDAPUrl.h"using namespace std;LDAPSearchRequest::LDAPSearchRequest(const LDAPSearchRequest& req ) :        LDAPRequest (req){    DEBUG(LDAP_DEBUG_CONSTRUCT,         "LDAPSearchRequest::LDAPSearchRequest(&)" << endl);    m_base=req.m_base;    m_scope=req.m_scope;    m_filter=req.m_filter;    m_attrs=req.m_attrs;    m_attrsOnly=req.m_attrsOnly;}        LDAPSearchRequest::LDAPSearchRequest(const string& base, int scope,         const string& filter, const StringList& attrs, bool attrsOnly,        LDAPAsynConnection *connect,        const LDAPConstraints* cons, bool isReferral,         const LDAPRequest* parent)             : LDAPRequest (connect,cons,isReferral,parent) {        DEBUG(LDAP_DEBUG_CONSTRUCT,            "LDAPSearchRequest:LDAPSearchRequest()" << endl);    DEBUG(LDAP_DEBUG_CONSTRUCT & LDAP_DEBUG_PARAMETER,            "   base:" << base << endl << "   scope:" << scope << endl            << "   filter:" << filter << endl);    m_requestType=LDAPRequest::SEARCH;    //insert some validating and copying here      m_base=base;    m_scope=scope;    if(filter == ""){        m_filter="objectClass=*";      }else{        m_filter=filter;    }    m_attrs=attrs;    m_attrsOnly=attrsOnly;}LDAPSearchRequest::~LDAPSearchRequest(){    DEBUG(LDAP_DEBUG_DESTROY, "LDAPSearchRequest::~LDAPSearchRequest" << endl);}LDAPMessageQueue* LDAPSearchRequest::sendRequest(){    int msgID;     DEBUG(LDAP_DEBUG_TRACE, "LDAPSearchRequest::sendRequest()" << endl);    timeval* tmptime=m_cons->getTimeoutStruct();    char** tmpattrs=m_attrs.toCharArray();    LDAPControl** tmpSrvCtrl=m_cons->getSrvCtrlsArray();    LDAPControl** tmpClCtrl=m_cons->getClCtrlsArray();    int aliasDeref = m_cons->getAliasDeref();    ldap_set_option(m_connection->getSessionHandle(), LDAP_OPT_DEREF,             &aliasDeref);    int err=ldap_search_ext(m_connection->getSessionHandle(), m_base.c_str(),            m_scope, m_filter.c_str(), tmpattrs, m_attrsOnly, tmpSrvCtrl,            tmpClCtrl, tmptime, m_cons->getSizeLimit(), &msgID );    delete tmptime;    ber_memvfree((void**)tmpattrs);    LDAPControlSet::freeLDAPControlArray(tmpSrvCtrl);    LDAPControlSet::freeLDAPControlArray(tmpClCtrl);    if (err != LDAP_SUCCESS){          throw LDAPException(err);    } else if (isReferral()){        m_msgID=msgID;        return 0;    }else{        m_msgID=msgID;        return  new LDAPMessageQueue(this);    }}LDAPRequest* LDAPSearchRequest::followReferral(LDAPMsg* ref){    DEBUG(LDAP_DEBUG_TRACE, "LDAPSearchRequest::followReferral()" << endl);    LDAPUrlList urls;    LDAPUrlList::const_iterator usedUrl;    LDAPAsynConnection* con;    string filter;    int scope;    if(ref->getMessageType() == LDAPMsg::SEARCH_REFERENCE){        urls = ((LDAPSearchReference *)ref)->getUrls();    }else{        urls = ((LDAPResult *)ref)->getReferralUrls();    }    con = getConnection()->referralConnect(urls,usedUrl,m_cons);    if(con != 0){        if((usedUrl->getFilter() != "") &&             (usedUrl->getFilter() != m_filter)){                filter=usedUrl->getFilter();        }else{            filter=m_filter;        }        if( (ref->getMessageType() == LDAPMsg::SEARCH_REFERENCE) &&             (m_scope == LDAPAsynConnection::SEARCH_ONE)          ){            scope = LDAPAsynConnection::SEARCH_BASE;            DEBUG(LDAP_DEBUG_TRACE,"   adjusted scope to BASE" << endl);        }else{            scope = m_scope;        }    }else{        return 0;    }    return new LDAPSearchRequest(usedUrl->getDN(), scope, filter,            m_attrs, m_attrsOnly, con, m_cons,true,this);}bool LDAPSearchRequest::equals(const LDAPRequest* req)const{    DEBUG(LDAP_DEBUG_TRACE,"LDAPSearchRequest::equals()" << endl);    if( LDAPRequest::equals(req)){        LDAPSearchRequest* sreq = (LDAPSearchRequest*)req;        if ( (m_base == sreq->m_base) &&             (m_scope == sreq->m_scope)            ){            return true;        }    }    return false;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -