NS_IMETHODIMP nsSmtpService::CreateSmtpServer(nsISmtpServer **aResult) { if (!aResult) return NS_ERROR_NULL_POINTER; loadSmtpServers(); nsresult rv; PRInt32 i = 0; PRBool unique = PR_FALSE; findServerByKeyEntry entry; nsCAutoString key; do { key = "smtp"; key.AppendInt(++i); entry.key = key.get(); entry.server = nsnull; mSmtpServers.EnumerateForwards(findServerByKey, (void *)&entry); if (!entry.server) unique=PR_TRUE; } while (!unique); rv = createKeyedServer(key.get(), aResult); saveKeyList(); return rv; }
NS_IMETHODIMP nsSmtpService::CreateServer(nsISmtpServer **aResult) { if (!aResult) return NS_ERROR_NULL_POINTER; loadSmtpServers(); nsresult rv; int32_t i = 0; bool unique = false; findServerByKeyEntry entry; nsAutoCString key; do { key = "smtp"; key.AppendInt(++i); entry.key = key.get(); entry.server = nullptr; mSmtpServers.EnumerateForwards(findServerByKey, (void *)&entry); if (!entry.server) unique=true; } while (!unique); rv = createKeyedServer(key.get(), aResult); NS_ENSURE_SUCCESS(rv, rv); return saveKeyList(); }
nsresult nsSmtpService::GetServerByKey(const char* aKey, nsISmtpServer **aResult) { NS_ENSURE_ARG_POINTER(aResult); if (!aKey || !*aKey) { NS_ASSERTION(PR_FALSE, "bad key"); return NS_ERROR_FAILURE; } findServerByKeyEntry entry; entry.key = aKey; entry.server = nsnull; mSmtpServers.EnumerateForwards(findServerByKey, (void *)&entry); if (entry.server) { NS_ADDREF(*aResult = entry.server); return NS_OK; } // not found in array, I guess we load it return createKeyedServer(aKey, aResult); }