From 6fb5a404d6d99dec385bbc1c4dede25d57d3e0ec Mon Sep 17 00:00:00 2001 From: "sspitzer%netscape.com" Date: Tue, 16 May 2000 22:14:23 +0000 Subject: [PATCH] a bit of code cleanup. start of the work to support hostinfo.dat git-svn-id: svn://10.0.0.236/trunk@70117 18797224-902f-48f8-a5cc-f745e15eee43 --- .../imap/src/nsImapIncomingServer.cpp | 16 +-- .../news/src/nsNntpIncomingServer.cpp | 98 ++++++++++++++++--- .../mailnews/news/src/nsNntpIncomingServer.h | 4 + 3 files changed, 95 insertions(+), 23 deletions(-) diff --git a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp index fe52041508b..4695ff3e4dd 100644 --- a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp +++ b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp @@ -1864,14 +1864,6 @@ nsImapIncomingServer::OnStopRunningUrl(nsIURI *url, nsresult exitCode) mDoingSubscribeDialog = PR_FALSE; - nsCOMPtr listener; - rv = GetSubscribeListener(getter_AddRefs(listener)); - if (NS_FAILED(rv)) return rv; - if (!listener) return NS_ERROR_FAILURE; - - rv = listener->OnStopPopulating(); - if (NS_FAILED(rv)) return rv; - rv = StopPopulatingSubscribeDS(); if (NS_FAILED(rv)) return rv; @@ -1939,6 +1931,14 @@ nsImapIncomingServer::StopPopulatingSubscribeDS() { nsresult rv; + nsCOMPtr listener; + rv = GetSubscribeListener(getter_AddRefs(listener)); + if (NS_FAILED(rv)) return rv; + if (!listener) return NS_ERROR_FAILURE; + + rv = listener->OnStopPopulating(); + if (NS_FAILED(rv)) return rv; + NS_ASSERTION(mInner,"not initialized"); if (!mInner) return NS_ERROR_FAILURE; rv = mInner->StopPopulatingSubscribeDS(); diff --git a/mozilla/mailnews/news/src/nsNntpIncomingServer.cpp b/mozilla/mailnews/news/src/nsNntpIncomingServer.cpp index 590804ed389..4936e6a548a 100644 --- a/mozilla/mailnews/news/src/nsNntpIncomingServer.cpp +++ b/mozilla/mailnews/news/src/nsNntpIncomingServer.cpp @@ -318,6 +318,7 @@ nsNntpIncomingServer::GetNewsrcHasChanged(PRBool *aNewsrcHasChanged) NS_IMETHODIMP nsNntpIncomingServer::CloseCachedConnections() { + nsresult rv; // iterate through the connection cache for a connection that can handle this url. PRUint32 cnt; nsCOMPtr aSupport; @@ -325,7 +326,7 @@ nsNntpIncomingServer::CloseCachedConnections() if (m_connectionCache) { - nsresult rv = m_connectionCache->Count(&cnt); + rv = m_connectionCache->Count(&cnt); if (NS_FAILED(rv)) return rv; for (PRUint32 i = 0; i < cnt; i++) { @@ -335,7 +336,15 @@ nsNntpIncomingServer::CloseCachedConnections() rv = connection->CloseConnection(); } } - return WriteNewsrcFile(); + rv = WriteNewsrcFile(); + if (NS_FAILED(rv)) return rv; + + if (mHostInfoHasChanged) { + rv = WriteHostInfoFile(); + if (NS_FAILED(rv)) return rv; + } + + return NS_OK; } NS_IMPL_SERVERPREF_INT(nsNntpIncomingServer, MaximumConnectionsNumber, @@ -598,14 +607,6 @@ nsNntpIncomingServer::OnStopRunningUrl(nsIURI *url, nsresult exitCode) rv = UpdateSubscribedInSubscribeDS(); if (NS_FAILED(rv)) return rv; - nsCOMPtr listener; - rv = GetSubscribeListener(getter_AddRefs(listener)); - if (NS_FAILED(rv)) return rv; - if (!listener) return NS_ERROR_FAILURE; - - rv = listener->OnStopPopulating(); - if (NS_FAILED(rv)) return rv; - rv = StopPopulatingSubscribeDS(); if (NS_FAILED(rv)) return rv; @@ -661,13 +662,52 @@ nsNntpIncomingServer::SubscribeToNewsgroup(const char *name) return NS_OK; } +nsresult +nsNntpIncomingServer::WriteHostInfoFile() +{ +#ifdef DEBUG_sspitzer + printf("WriteHostInfoFile()\n"); +#endif + mHostInfoHasChanged = PR_FALSE; + return NS_OK; +} + +nsresult +nsNntpIncomingServer::LoadHostInfoFile() +{ +#ifdef DEBUG_sspitzer + printf("LoadHostInfoFile()\n"); +#endif + mHostInfoLoaded = PR_TRUE; + return NS_OK; +} + +nsresult +nsNntpIncomingServer::PopulateSubscribeDatasourceFromHostInfo(nsIMsgWindow *aMsgWindow) +{ + nsresult rv; +#ifdef DEBUG_sspitzer + printf("PopulateSubscribeDatasourceFromHostInfo()\n"); +#endif + rv = AddNewsgroupToSubscribeDS("a.b.d"); + if (NS_FAILED(rv)) return rv; + rv = AddNewsgroupToSubscribeDS("a.b.e"); + if (NS_FAILED(rv)) return rv; + rv = AddNewsgroupToSubscribeDS("a.b.f"); + if (NS_FAILED(rv)) return rv; + rv = AddNewsgroupToSubscribeDS("a.c"); + if (NS_FAILED(rv)) return rv; + + rv = StopPopulatingSubscribeDS(); + if (NS_FAILED(rv)) return rv; + + return NS_OK; +} + NS_IMETHODIMP nsNntpIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow) { nsresult rv; -#ifdef DEBUG_sspitzer - printf("in PopulateSubscribeDatasource()\n"); -#endif rv = StartPopulatingSubscribeDS(); if (NS_FAILED(rv)) return rv; @@ -676,8 +716,27 @@ nsNntpIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow) if (NS_FAILED(rv)) return rv; if (!nntpService) return NS_ERROR_FAILURE; - rv = nntpService->BuildSubscribeDatasource(this, aMsgWindow); - if (NS_FAILED(rv)) return rv; +#ifdef DEBUG_sspitzer_ + if (!mHostInfoLoaded) { + // will set mHostInfoLoaded, if we were able to load the hostinfo.dat file + rv = LoadHostInfoFile(); + if (NS_FAILED(rv)) return rv; + } +#else + mHostInfoLoaded = PR_FALSE; +#endif + + if (mHostInfoLoaded) { + rv = PopulateSubscribeDatasourceFromHostInfo(aMsgWindow); + if (NS_FAILED(rv)) return rv; + } + else { +#ifdef DEBUG_sspitzer + printf("todo: build up the host info stuff, and set mHostInfoLoaded\n"); +#endif + rv = nntpService->BuildSubscribeDatasource(this, aMsgWindow); + if (NS_FAILED(rv)) return rv; + } return NS_OK; } @@ -750,6 +809,15 @@ NS_IMETHODIMP nsNntpIncomingServer::StopPopulatingSubscribeDS() { nsresult rv; + + nsCOMPtr listener; + rv = GetSubscribeListener(getter_AddRefs(listener)); + if (NS_FAILED(rv)) return rv; + if (!listener) return NS_ERROR_FAILURE; + + rv = listener->OnStopPopulating(); + if (NS_FAILED(rv)) return rv; + NS_ASSERTION(mInner,"not initialized"); if (!mInner) return NS_ERROR_FAILURE; rv = mInner->StopPopulatingSubscribeDS(); diff --git a/mozilla/mailnews/news/src/nsNntpIncomingServer.h b/mozilla/mailnews/news/src/nsNntpIncomingServer.h index 853f2862d81..195af387151 100644 --- a/mozilla/mailnews/news/src/nsNntpIncomingServer.h +++ b/mozilla/mailnews/news/src/nsNntpIncomingServer.h @@ -68,6 +68,10 @@ protected: NS_IMETHOD GetServerRequiresPasswordForBiff(PRBool *_retval); private: + nsresult WriteHostInfoFile(); + nsresult LoadHostInfoFile(); + nsresult PopulateSubscribeDatasourceFromHostInfo(nsIMsgWindow *aMsgWindow); + PRBool mNewsrcHasChanged; nsAdapterEnumerator *mGroupsEnumerator; PRBool mHostInfoLoaded;