nsresult nsAbQueryLDAPMessageListener::DoSearch() { nsresult rv; mCanceled = mFinished = PR_FALSE; mSearchOperation = do_CreateInstance(NS_LDAPOPERATION_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIProxyObjectManager> proxyMgr = do_GetService(NS_XPCOMPROXY_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsILDAPMessageListener> proxyListener; rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsILDAPMessageListener), this, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(proxyListener)); NS_ENSURE_SUCCESS(rv, rv); rv = mSearchOperation->Init (mConnection, proxyListener, nsnull); NS_ENSURE_SUCCESS(rv, rv); nsCAutoString dn; rv = mUrl->GetDn (dn); NS_ENSURE_SUCCESS(rv, rv); PRInt32 scope; rv = mUrl->GetScope (&scope); NS_ENSURE_SUCCESS(rv, rv); nsCAutoString filter; rv = mUrl->GetFilter (filter); NS_ENSURE_SUCCESS(rv, rv); CharPtrArrayGuard attributes; rv = mUrl->GetAttributes (attributes.GetSizeAddr (), attributes.GetArrayAddr ()); NS_ENSURE_SUCCESS(rv, rv); // I don't _think_ it's ever actually possible to get here without having // an nsAbLDAPDirectory object, but, just in case, I'll do a QI instead // of just static casts... nsCOMPtr<nsIAbLDAPDirectory> nsIAbDir = do_QueryInterface(mDirectoryQuery, &rv); NS_ENSURE_SUCCESS(rv, rv); nsAbLDAPDirectory *dir = NS_STATIC_CAST(nsAbLDAPDirectory *, NS_STATIC_CAST(nsIAbLDAPDirectory *, nsIAbDir.get())); rv = mSearchOperation->SetServerControls(dir->mSearchServerControls.get()); NS_ENSURE_SUCCESS(rv, rv); rv = mSearchOperation->SetClientControls(dir->mSearchClientControls.get()); NS_ENSURE_SUCCESS(rv, rv); rv = mSearchOperation->SearchExt (dn, scope, filter, attributes.GetSize (), attributes.GetArray (), mTimeOut, mResultLimit); return rv; }
nsresult nsAbQueryLDAPMessageListener::DoTask() { nsresult rv; mCanceled = mFinished = false; mOperation = do_CreateInstance(NS_LDAPOPERATION_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = mOperation->Init(mConnection, this, nullptr); NS_ENSURE_SUCCESS(rv, rv); mOperation->SetRequestNum(++sCurrentRequestNum); nsAutoCString dn; rv = mSearchUrl->GetDn(dn); NS_ENSURE_SUCCESS(rv, rv); int32_t scope; rv = mSearchUrl->GetScope(&scope); NS_ENSURE_SUCCESS(rv, rv); nsAutoCString filter; rv = mSearchUrl->GetFilter(filter); NS_ENSURE_SUCCESS(rv, rv); nsAutoCString attributes; rv = mSearchUrl->GetAttributes(attributes); NS_ENSURE_SUCCESS(rv, rv); rv = mOperation->SetServerControls(mServerSearchControls); NS_ENSURE_SUCCESS(rv, rv); rv = mOperation->SetClientControls(mClientSearchControls); NS_ENSURE_SUCCESS(rv, rv); return mOperation->SearchExt(dn, scope, filter, attributes, mTimeOut, mResultLimit); }