ldapsdk 0.0.1
Public Member Functions | Static Public Attributes | Protected Attributes

LDAPAsynConnection Class Reference

This class represents an asynchronous connection to an LDAP-Server. More...

#include <LDAPAsynConnection.h>

Inheritance diagram for LDAPAsynConnection:
LDAPConnection

List of all members.

Public Member Functions

 LDAPAsynConnection (const std::string &url=std::string("localhost"), int port=0, LDAPConstraints *cons=new LDAPConstraints())
 Construtor that initializes a connection to a server.
virtual ~LDAPAsynConnection ()
void init (const std::string &hostname, int port)
 Initializes a connection to a server.
void initialize (const std::string &uri)
 Initializes a connection to a server.
void start_tls ()
 Start TLS on this connection.
LDAPMessageQueuebind (const std::string &dn="", const std::string &passwd="", const LDAPConstraints *cons=0)
 Simple authentication to a LDAP-Server.
LDAPMessageQueuesaslBind (const std::string &mech, const std::string &cred, const LDAPConstraints *cons=0)
LDAPMessageQueuesaslInteractiveBind (const std::string &mech, int flags=0, SaslInteractionHandler *sih=0, const LDAPConstraints *cons=0)
LDAPMessageQueuesearch (const std::string &base="", int scope=0, const std::string &filter="objectClass=*", const StringList &attrs=StringList(), bool attrsOnly=false, const LDAPConstraints *cons=0)
 Performing a search on a directory tree.
LDAPMessageQueuedel (const std::string &dn, const LDAPConstraints *cons=0)
 Delete an entry from the directory.
LDAPMessageQueuecompare (const std::string &dn, const LDAPAttribute &attr, const LDAPConstraints *cons=0)
 Perform the COMPARE-operation on an attribute.
LDAPMessageQueueadd (const LDAPEntry *le, const LDAPConstraints *const =0)
 Add an entry to the directory.
LDAPMessageQueuemodify (const std::string &dn, const LDAPModList *modlist, const LDAPConstraints *cons=0)
 Apply modifications to attributes of an entry.
LDAPMessageQueuerename (const std::string &dn, const std::string &newRDN, bool delOldRDN=false, const std::string &newParentDN="", const LDAPConstraints *cons=0)
 modify the DN of an entry
LDAPMessageQueueextOperation (const std::string &oid, const std::string &value="", const LDAPConstraints *cons=0)
 Perform a LDAP extended Operation.
void abandon (LDAPMessageQueue *q)
 End an outstanding request.
void unbind ()
 Performs the UNBIND-operation on the destination server.
LDAP * getSessionHandle () const
const std::stringgetHost () const
int getPort () const
void setConstraints (LDAPConstraints *cons)
 Change the default constraints of the connection.
const LDAPConstraintsgetConstraints () const
 Get the default constraints of the connection.
TlsOptions getTlsOptions () const
LDAPAsynConnectionreferralConnect (const LDAPUrlList &urls, LDAPUrlList::const_iterator &usedUrl, const LDAPConstraints *cons) const
 This method is used internally for automatic referral chasing.

Static Public Attributes

static const int SEARCH_BASE = 0
 Constant for the Search-Operation to indicate a Base-Level Search.
static const int SEARCH_ONE = 1
 Constant for the Search-Operation to indicate a One-Level Search.
static const int SEARCH_SUB = 2
 Constant for the Search-Operation to indicate a subtree Search.

Protected Attributes

bool m_cacheEnabled
 Is caching enabled?

Detailed Description

This class represents an asynchronous connection to an LDAP-Server.

It provides the methods for authentication, and all other LDAP-Operations (e.g. search, add, delete, etc.) All of the LDAP-Operations return a pointer to a LDAPMessageQueue-Object, which can be used to obtain the results of that operation. A basic example of this class could be like this:
1. Create a new LDAPAsynConnection Object:
2. Use the init-method to initialize the connection
3. Call the bind-method to authenticate to the directory
4. Obtain the bind results from the return LDAPMessageQueue-Object
5. Perform on of the operations on the directory (add, delete, search, ..)
6. Use the return LDAPMessageQueue to obtain the results of the operation
7. Close the connection (feature not implemented yet :) )


Constructor & Destructor Documentation

LDAPAsynConnection::LDAPAsynConnection ( const std::string url = std::string("localhost"),
int  port = 0,
LDAPConstraints cons = new LDAPConstraints() 
)

Construtor that initializes a connection to a server.

Parameters:
hostnameName (or IP-Adress) of the destination host
portPort the LDAP server is running on
consDefault constraints to use with operations over this connection
LDAPAsynConnection::~LDAPAsynConnection ( ) [virtual]

Member Function Documentation

void LDAPAsynConnection::abandon ( LDAPMessageQueue q)

End an outstanding request.

Parameters:
qAll outstanding request related to this LDAPMessageQueue will be abandoned

References DEBUG, LDAPRequest::getMsgID(), LDAPMessageQueue::getRequestStack(), and LDAP_DEBUG_TRACE.

LDAPMessageQueue * LDAPAsynConnection::add ( const LDAPEntry le,
const LDAPConstraints * const  cons = 0 
)

Add an entry to the directory.

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
leThe entry that will be added to the directory

Reimplemented in LDAPConnection.

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPAddRequest::sendRequest().

LDAPMessageQueue* LDAPAsynConnection::bind ( const std::string dn = "",
const std::string passwd = "",
const LDAPConstraints cons = 0 
)

Simple authentication to a LDAP-Server.

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured. This method does a simple (username, password) bind to the server. Other, saver, authentcation methods are provided later
Parameters:
dnthe distiguished name to bind as
passwdcleartext password to use
LDAPMessageQueue* LDAPAsynConnection::compare ( const std::string dn,
const LDAPAttribute attr,
const LDAPConstraints cons = 0 
)

Perform the COMPARE-operation on an attribute.

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
dnDistinguished name of the entry for which the compare should be performed
attrAn Attribute (one (!) value) to use for the compare operation
consA set of constraints that should be used with this request
LDAPMessageQueue* LDAPAsynConnection::del ( const std::string dn,
const LDAPConstraints cons = 0 
)

Delete an entry from the directory.

This method sends a delete request to the server

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
dnDistinguished name of the entry that should be deleted
consA set of constraints that should be used with this request

Reimplemented in LDAPConnection.

LDAPMessageQueue* LDAPAsynConnection::extOperation ( const std::string oid,
const std::string value = "",
const LDAPConstraints cons = 0 
)

Perform a LDAP extended Operation.

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
oidThe dotted decimal representation of the extended Operation that should be performed
valueThe data asociated with this operation
consA set of constraints that should be used with this request

Reimplemented in LDAPConnection.

const LDAPConstraints * LDAPAsynConnection::getConstraints ( ) const

Get the default constraints of the connection.

Returns:
Pointer to the LDAPConstraints-Object that is currently used with the Connection

Reimplemented in LDAPConnection.

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPRequest::LDAPRequest().

const string & LDAPAsynConnection::getHost ( ) const
Returns:
The Hostname of the destination server of the connection.

Reimplemented in LDAPConnection.

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPRequest::equals().

int LDAPAsynConnection::getPort ( ) const
Returns:
The Port to which this connection is connecting to on the remote server.

Reimplemented in LDAPConnection.

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPRequest::equals().

LDAP * LDAPAsynConnection::getSessionHandle ( ) const
TlsOptions LDAPAsynConnection::getTlsOptions ( ) const

Reimplemented in LDAPConnection.

void LDAPAsynConnection::init ( const std::string hostname,
int  port 
)

Initializes a connection to a server.

There actually no communication to the server. Just the object is initialized (e.g. this method is called within the LDAPAsynConnection(char*,int,LDAPConstraints) constructor.)

Parameters:
hostnameThe Name or IP-Address of the destination LDAP-Server
portThe Network Port the server is running on

Reimplemented in LDAPConnection.

void LDAPAsynConnection::initialize ( const std::string uri)

Initializes a connection to a server.

There actually no communication to the server. Just the object is initialized

Parameters:
uriThe LDAP-Uri for the destination
LDAPMessageQueue* LDAPAsynConnection::modify ( const std::string dn,
const LDAPModList modlist,
const LDAPConstraints cons = 0 
)

Apply modifications to attributes of an entry.

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
dnDistiguished Name of the Entry to modify
modlistA set of modification that should be applied to the Entry
consA set of constraints that should be used with this request

Reimplemented in LDAPConnection.

LDAPAsynConnection * LDAPAsynConnection::referralConnect ( const LDAPUrlList urls,
LDAPUrlList::const_iterator usedUrl,
const LDAPConstraints cons 
) const

This method is used internally for automatic referral chasing.

It tries to bind to a destination server of the URLs of a referral.

Exceptions:
LDAPExceptionin any case of an error
Parameters:
urlsContains a std::list of LDAP-Urls that indicate the destinations of a referral
usedUrlAfter this method has successfully bind to one of the Destination URLs this parameter contains the URLs which was contacted.
consAn LDAPConstraints-Object that should be used for the new connection. If this object contains a LDAPRebind-object it is used to bind to the new server

References LDAPUrlList::begin(), DEBUG, LDAPUrlList::end(), LDAPRebindAuth::getDN(), LDAPRebindAuth::getPassword(), LDAPRebind::getRebindAuth(), LDAPConstraints::getReferralRebind(), getSessionHandle(), and LDAP_DEBUG_TRACE.

Referenced by LDAPSearchRequest::followReferral(), LDAPModifyRequest::followReferral(), LDAPModDNRequest::followReferral(), LDAPExtRequest::followReferral(), LDAPDeleteRequest::followReferral(), LDAPCompareRequest::followReferral(), and LDAPAddRequest::followReferral().

LDAPMessageQueue* LDAPAsynConnection::rename ( const std::string dn,
const std::string newRDN,
bool  delOldRDN = false,
const std::string newParentDN = "",
const LDAPConstraints cons = 0 
)

modify the DN of an entry

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
dnDN to modify
newRDNThe new relative DN for the entry
delOldRDNtrue=The old RDN will be removed from the attributes
false=The old RDN will still be present in the attributes of the entry
newParentDNThe DN of the new parent entry of the entry 0 to keep the old one

Reimplemented in LDAPConnection.

LDAPMessageQueue * LDAPAsynConnection::saslBind ( const std::string mech,
const std::string cred,
const LDAPConstraints cons = 0 
)
LDAPMessageQueue * LDAPAsynConnection::saslInteractiveBind ( const std::string mech,
int  flags = 0,
SaslInteractionHandler sih = 0,
const LDAPConstraints cons = 0 
)
LDAPMessageQueue* LDAPAsynConnection::search ( const std::string base = "",
int  scope = 0,
const std::string filter = "objectClass=*",
const StringList attrs = StringList(),
bool  attrsOnly = false,
const LDAPConstraints cons = 0 
)

Performing a search on a directory tree.

Use the search method to perform a search on the LDAP-Directory

Exceptions:
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters:
baseThe distinguished name of the starting point for the search operation
scopeThe scope of the search. Possible values:
LDAPAsynConnection::SEARCH_BASE,
LDAPAsynConnection::SEARCH_ONE,
LDAPAsynConnection::SEARCH_SUB
filterThe std::string representation of a search filter to use with this operation
attrsOnlytrue if only the attributes names (no values) should be returned
consA set of constraints that should be used with this request

Reimplemented in LDAPConnection.

void LDAPAsynConnection::setConstraints ( LDAPConstraints cons)

Change the default constraints of the connection.

cons cons New LDAPConstraints to use with the connection

Reimplemented in LDAPConnection.

References DEBUG, and LDAP_DEBUG_TRACE.

void LDAPAsynConnection::start_tls ( )

Start TLS on this connection.

This isn't in the constructor, because it could fail (i.e. server doesn't have SSL cert, client api wasn't compiled against OpenSSL, etc.).

Exceptions:
LDAPExceptionif the TLS Layer could not be setup correctly

Reimplemented in LDAPConnection.

void LDAPAsynConnection::unbind ( )

Performs the UNBIND-operation on the destination server.

Exceptions:
LDAPExceptionin any case of an error

Reimplemented in LDAPConnection.

References DEBUG, LDAPControlSet::freeLDAPControlArray(), and LDAP_DEBUG_TRACE.


Member Data Documentation

Is caching enabled?

const int LDAPAsynConnection::SEARCH_BASE = 0 [static]

Constant for the Search-Operation to indicate a Base-Level Search.

Reimplemented in LDAPConnection.

Referenced by LDAPSearchRequest::followReferral().

const int LDAPAsynConnection::SEARCH_ONE = 1 [static]

Constant for the Search-Operation to indicate a One-Level Search.

Reimplemented in LDAPConnection.

Referenced by LDAPSearchRequest::followReferral().

const int LDAPAsynConnection::SEARCH_SUB = 2 [static]

Constant for the Search-Operation to indicate a subtree Search.

Reimplemented in LDAPConnection.


The documentation for this class was generated from the following files: