]> git.sur5r.net Git - openldap/blob - contrib/ldapc++/src/LDAPCompareRequest.cpp
Initial check of the LDAP C++ SDK written by Ralf Haferkamp <rhafer@suse.de>
[openldap] / contrib / ldapc++ / src / LDAPCompareRequest.cpp
1 /*
2  * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5
6 #include <ldap.h>
7
8 #include "debug.h"
9
10 #include "LDAPCompareRequest.h"
11 #include "LDAPException.h"
12 #include "LDAPMessageQueue.h"
13
14 LDAPCompareRequest::LDAPCompareRequest(const LDAPCompareRequest& req){
15     DEBUG(LDAP_DEBUG_TRACE, 
16             "LDAPCompareRequest::LDAPCompareRequest(LDAPCompareRequest&)" 
17             << endl);
18 }
19
20 LDAPCompareRequest::LDAPCompareRequest(const char *dn, 
21         const LDAPAttribute *attr, const LDAPAsynConnection *connect, 
22         const LDAPConstraints *cons, bool isReferral=false) :
23         LDAPRequest(connect, cons, isReferral){
24     DEBUG(LDAP_DEBUG_TRACE, "LDAPCompareRequest::LDAPCompareRequest()" 
25             << endl);
26     DEBUG(LDAP_DEBUG_PARAMETER, "   dn:" << dn << endl 
27             << "   attr:" << attr << endl);
28     m_requestType=LDAPRequest::COMPARE;
29     if(dn != 0){
30         m_dn=strdup(dn);
31     }
32     if(attr != 0){
33         //TODO: test for number of values ???
34         m_attr = new LDAPAttribute(*attr);
35     }
36
37     
38 LDAPCompareRequest::~LDAPCompareRequest(){
39     DEBUG(LDAP_DEBUG_TRACE, "LDAPCompareRequest::~LDAPCompareRequest()" 
40             << endl);
41     delete[] m_dn;
42     delete m_attr;
43 }
44
45 LDAPMessageQueue* LDAPCompareRequest::sendRequest(){
46     DEBUG(LDAP_DEBUG_TRACE, "LDAPCompareRequest::sendRequest()" << endl);
47     int msgID=0;
48     BerValue **tmp=m_attr->getValues();
49     int err=ldap_compare_ext(m_connection->getSessionHandle(),m_dn,
50             m_attr->getName(), tmp[0], m_cons->getSrvCtrlsArray(), 
51             m_cons->getClCtrlsArray(), &msgID);
52     if(err != LDAP_SUCCESS){
53         delete this;
54         throw LDAPException(err);
55     }else{
56         m_msgID=msgID;
57         return new LDAPMessageQueue(this);
58     }
59 }
60
61 LDAPRequest* LDAPCompareRequest::followReferral(LDAPUrlList *urls){
62         DEBUG(LDAP_DEBUG_TRACE, "LDAPCompareRequest::followReferral()" << endl);
63     cerr << "to be implemented" << endl;
64     return 0;
65 }
66