/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" #include "nsILDAPConnection.idl" #include "nsIAuthModule.idl" interface nsILDAPMessage; interface nsILDAPMessageListener; interface nsILDAPModification; interface nsIMutableArray; interface nsIArray; %{C++ #define NS_LDAPOPERATION_CONTRACTID "@mozilla.org/network/ldap-operation;1" %} // XXXdmose check to make sure ctl-related err codes documented typedef uint32_t PRIntervalTime; [scriptable, uuid(4dfb1b19-fc8f-4525-92e7-f97b78a9747a)] interface nsILDAPOperation : nsISupports { /** * The connection this operation is on. * * @exception NS_ERROR_ILLEGAL_VALUE a NULL pointer was passed in */ readonly attribute nsILDAPConnection connection; /** * Callback for individual result messages related to this operation (set * by the init() method). This is actually an nsISupports proxy object, * as the callback will happen from another thread. * * @exception NS_ERROR_ILLEGAL_VALUE a NULL pointer was passed in */ readonly attribute nsILDAPMessageListener messageListener; /** * The message-id associated with this operation. * * @exception NS_ERROR_ILLEGAL_VALUE a NULL pointer was passed in */ readonly attribute long messageID; /** * private parameter (anything caller desires) */ attribute nsISupports closure; /** * No time and/or size limit specified */ const long NO_LIMIT = 0; /** * If specified, these arrays of nsILDAPControls are passed into the LDAP * C SDK for any extended operations (ie method calls on this interface * ending in "Ext"). */ attribute nsIMutableArray serverControls; attribute nsIMutableArray clientControls; /** * Initializes this operation. Must be called prior to initiating * any actual operations. Note that by default, the aMessageListener * callbacks happen on the LDAP connection thread. If you need them * to happen on the main thread (or any other thread), then you should * created an nsISupports proxy object and pass that in. * * @param aConnection connection this operation should use * @param aMessageListener interface used to call back the results. * @param aClosure private parameter (anything caller desires) * * @exception NS_ERROR_ILLEGAL_VALUE a NULL pointer was passed in * @exception NS_ERROR_UNEXPECTED failed to get connection handle */ void init(in nsILDAPConnection aConnection, in nsILDAPMessageListener aMessageListener, in nsISupports aClosure); /** * Asynchronously authenticate to the LDAP server. * * @param passwd the password used for binding; NULL for anon-binds * * @exception NS_ERROR_LDAP_ENCODING_ERROR problem encoding bind request * @exception NS_ERROR_LDAP_SERVER_DOWN server down (XXX rebinds?) * @exception NS_ERROR_LDAP_CONNECT_ERROR connection failed or lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_UNEXPECTED internal error */ void simpleBind(in AUTF8String passwd); /** * Asynchronously perform a SASL bind against the LDAP server * * @param service the host name of the service being connected to * @param mechanism the name of the SASL mechanism in use * @param authModule the nsIAuthModule to be used to perform the operation * */ void saslBind(in ACString service, in ACString mechanism, in nsIAuthModule authModule); /** * Continue a SASL bind operation * * @param token the next SASL token to send to the server * @param tokenLen the length of the token to send * */ void saslStep(in string token, in unsigned long tokenLen); /** * Kicks off an asynchronous add request. The "ext" stands for * "extensions", and is intended to convey that this method will * eventually support the extensions described in the * draft-ietf-ldapext-ldap-c-api-04.txt Internet Draft. * * @param aBaseDn Base DN to add * @param aModCount Number of modifications * @param aMods Array of modifications * * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_LDAP_NOT_SUPPORTED not supported in the version * of the LDAP protocol that the * client is using * @exception NS_ERROR_UNEXPECTED an unexpected error has * occurred * * XXX doesn't currently handle LDAPControl params */ void addExt(in AUTF8String aBaseDn, in nsIArray aMods); /** * Kicks off an asynchronous delete request. The "ext" stands for * "extensions", and is intended to convey that this method will * eventually support the extensions described in the * draft-ietf-ldapext-ldap-c-api-04.txt Internet Draft. * * @param aBaseDn Base DN to delete * * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_LDAP_NOT_SUPPORTED not supported in the version * of the LDAP protocol that the * client is using * @exception NS_ERROR_UNEXPECTED an unexpected error has * occurred * * XXX doesn't currently handle LDAPControl params */ void deleteExt(in AUTF8String aBaseDn); /** * Kicks off an asynchronous modify request. The "ext" stands for * "extensions", and is intended to convey that this method will * eventually support the extensions described in the * draft-ietf-ldapext-ldap-c-api-04.txt Internet Draft. * * @param aBaseDn Base DN to modify * @param aModCount Number of modifications * @param aMods Array of modifications * * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_LDAP_NOT_SUPPORTED not supported in the version * of the LDAP protocol that the * client is using * @exception NS_ERROR_UNEXPECTED an unexpected error has * occurred * * XXX doesn't currently handle LDAPControl params */ void modifyExt(in AUTF8String aBaseDn, in nsIArray aMods); /** * Kicks off an asynchronous rename request. * * @param aBaseDn Base DN to rename * @param aNewRDn New relative DN * @param aNewParent DN of the new parent under which to move the * entry * @param aDeleteOldRDn Indicates whether to remove the old relative * DN as a value in the entry or not * * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_LDAP_NOT_SUPPORTED not supported in the version * of the LDAP protocol that the * client is using * @exception NS_ERROR_UNEXPECTED an unexpected error has * occurred * * XXX doesn't currently handle LDAPControl params */ void rename(in AUTF8String aBaseDn, in AUTF8String aNewRDn, in AUTF8String aNewParent, in boolean aDeleteOldRDn); /** * Kicks off an asynchronous search request. The "ext" stands for * "extensions", and is intended to convey that this method will * eventually support the extensions described in the * draft-ietf-ldapext-ldap-c-api-04.txt Internet Draft. * * @param aBaseDn Base DN to search * @param aScope One of SCOPE_{BASE,ONELEVEL,SUBTREE} * @param aFilter Search filter * @param aAttributes Comma separated list of values, holding the * attributes we need * @param aTimeOut How long to wait * @param aSizeLimit Maximum number of entries to return. * * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY ran out of memory * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_LDAP_NOT_SUPPORTED not supported in the version * of the LDAP protocol that the * client is using * @exception NS_ERROR_LDAP_FILTER_ERROR * @exception NS_ERROR_UNEXPECTED */ void searchExt(in AUTF8String aBaseDn, in int32_t aScope, in AUTF8String aFilter, in ACString aAttributes, in PRIntervalTime aTimeOut, in int32_t aSizeLimit); /** * Cancels an async operation that is in progress. * * XXX controls not supported yet * * @exception NS_ERROR_NOT_IMPLEMENTED server or client controls * were set on this object * @exception NS_ERROR_NOT_INITIALIZED operation not initialized * @exception NS_ERROR_LDAP_ENCODING_ERROR error during BER-encoding * @exception NS_ERROR_LDAP_SERVER_DOWN the LDAP server did not * receive the request or the * connection was lost * @exception NS_ERROR_OUT_OF_MEMORY out of memory * @exception NS_ERROR_INVALID_ARG invalid argument * @exception NS_ERROR_UNEXPECTED internal error */ void abandonExt(); };