00001
00002
00003
00004
00005
00006
00007
00008 #ifndef LDAP_ASYN_CONNECTION_H
00009 #define LDAP_ASYN_CONNECTION_H
00010
00011 #include<iostream>
00012 #include<string>
00013
00014 #include<ldap.h>
00015 #include<lber.h>
00016
00017 #include <LDAPEntry.h>
00018 #include <LDAPException.h>
00019 #include <LDAPMessageQueue.h>
00020 #include <LDAPConstraints.h>
00021 #include <LDAPModification.h>
00022 #include <LDAPModList.h>
00023 #include <LDAPUrl.h>
00024 #include <LDAPUrlList.h>
00025 #include <SaslInteractionHandler.h>
00026
00027
00045 class LDAPAsynConnection{
00046 public :
00051 static const int SEARCH_BASE=0;
00052
00057 static const int SEARCH_ONE=1;
00058
00063 static const int SEARCH_SUB=2;
00064
00071 LDAPAsynConnection(const std::string& url=std::string("localhost"),
00072 int port=0, LDAPConstraints *cons=new LDAPConstraints() );
00073
00074
00075 virtual ~LDAPAsynConnection();
00076
00088 void init(const std::string& hostname, int port);
00089
00097 void initialize(const std::string& uri);
00098
00106 void start_tls();
00107
00118 LDAPMessageQueue* bind(const std::string& dn="",
00119 const std::string& passwd="",
00120 const LDAPConstraints *cons=0);
00121
00122 LDAPMessageQueue* saslBind(const std::string& mech,
00123 const std::string& cred,
00124 const LDAPConstraints *cons=0);
00125
00126 LDAPMessageQueue* saslInteractiveBind(const std::string& mech,
00127 int flags=0,
00128 SaslInteractionHandler *sih=0,
00129 const LDAPConstraints *cons=0);
00130
00150 LDAPMessageQueue* search(const std::string& base="", int scope=0,
00151 const std::string& filter="objectClass=*",
00152 const StringList& attrs=StringList(),
00153 bool attrsOnly=false,
00154 const LDAPConstraints *cons=0);
00155
00166 LDAPMessageQueue* del(const std::string& dn, const LDAPConstraints *cons=0);
00167
00181 LDAPMessageQueue* compare(const std::string& dn,
00182 const LDAPAttribute& attr,
00183 const LDAPConstraints *cons=0);
00184
00192 LDAPMessageQueue* add( const LDAPEntry* le,
00193 const LDAPConstraints *const=0);
00194
00206 LDAPMessageQueue* modify(const std::string& dn,
00207 const LDAPModList *modlist,
00208 const LDAPConstraints *cons=0);
00209
00224 LDAPMessageQueue* rename(const std::string& dn,
00225 const std::string& newRDN,
00226 bool delOldRDN=false, const std::string& newParentDN="",
00227 const LDAPConstraints* cons=0);
00228
00240 LDAPMessageQueue* extOperation(const std::string& oid,
00241 const std::string& value="", const LDAPConstraints *cons=0);
00242
00248 void abandon(LDAPMessageQueue *q);
00249
00255 void unbind();
00256
00261 LDAP* getSessionHandle() const ;
00262
00267 const std::string& getHost() const;
00268
00273 int getPort() const;
00274
00279 void setConstraints(LDAPConstraints *cons);
00280
00286 const LDAPConstraints* getConstraints() const;
00287
00303 LDAPAsynConnection* referralConnect(const LDAPUrlList& urls,
00304 LDAPUrlList::const_iterator& usedUrl,
00305 const LDAPConstraints* cons) const;
00306
00307 private :
00311 LDAPAsynConnection(const LDAPAsynConnection& lc){};
00312
00317 LDAP *cur_session;
00318
00324 LDAPConstraints *m_constr;
00325
00329 LDAPUrl m_uri;
00330
00331 protected:
00335 bool m_cacheEnabled;
00336 };
00337 #endif //LDAP_ASYN_CONNECTION_H
00338
00339