fix news to use folder cache

This commit is contained in:
bienvenu%netscape.com 1999-09-17 20:13:22 +00:00
parent 6cbe295674
commit ec7fff420e
6 changed files with 31 additions and 26 deletions

View File

@ -31,7 +31,7 @@ public:
static const nsIID& GetIID() { static nsIID iid = NS_INEWSDATABASE_IID; return iid; }
NS_IMETHOD GetUnreadSet(nsMsgKeySet **pSet) = 0;
NS_IMETHOD SetUnreadSet(char * setStr) = 0;
NS_IMETHOD SetUnreadSet(const char * setStr) = 0;
};
#endif // nsINewsDatabase_h__

View File

@ -58,7 +58,7 @@ public:
// for nsINewsDatabase
NS_IMETHOD GetUnreadSet(nsMsgKeySet **pSet);
NS_IMETHOD SetUnreadSet(char * setStr);
NS_IMETHOD SetUnreadSet(const char * setStr);
virtual nsresult ExpireUpTo(nsMsgKey expireKey);
virtual nsresult ExpireRange(nsMsgKey startRange, nsMsgKey endRange);

View File

@ -446,7 +446,7 @@ NS_IMETHODIMP nsDBFolderInfo::SetNumNewMessages(PRInt32 numNewMessages)
NS_IMETHODIMP nsDBFolderInfo::GetNumMessages(PRInt32 *result)
{
*result = m_numMessages;
return NS_OK;;
return NS_OK;
}
NS_IMETHODIMP nsDBFolderInfo::SetNumMessages(PRInt32 numMessages)

View File

@ -383,7 +383,7 @@ NS_IMETHODIMP nsNewsDatabase::GetUnreadSet(nsMsgKeySet **pSet)
return NS_OK;
}
NS_IMETHODIMP nsNewsDatabase::SetUnreadSet(char * setStr)
NS_IMETHODIMP nsNewsDatabase::SetUnreadSet(const char * setStr)
{
NS_ASSERTION(setStr, "no setStr!");
if (!setStr) return NS_ERROR_NULL_POINTER;

View File

@ -310,6 +310,9 @@ nsMsgNewsFolder::GetSubFolders(nsIEnumerator* *result)
if (NS_FAILED(rv)) return rv;
rv = CreateSubFolders(path);
// force ourselves to get initialized from cache
UpdateSummaryTotals(PR_FALSE);
if (NS_FAILED(rv)) return rv;
mInitialized = PR_TRUE; // XXX do this on failure too?
@ -350,23 +353,29 @@ nsresult nsMsgNewsFolder::GetDatabase()
{
folderOpen = newsDBFactory->Open(pathSpec, PR_TRUE, PR_FALSE, getter_AddRefs(mDatabase));
#ifdef DEBUG_NEWS
if (NS_SUCCEEDED(folderOpen)) {
printf ("newsDBFactory->Open() succeeded\n");
}
else {
printf ("newsDBFactory->Open() failed\n");
return rv;
}
if (NS_SUCCEEDED(folderOpen)) {
printf ("newsDBFactory->Open() succeeded\n");
}
else {
printf ("newsDBFactory->Open() failed\n");
return rv;
}
#endif
}
if (mDatabase) {
rv = mDatabase->AddListener(this);
if (NS_FAILED(rv)) return rv;
rv = UpdateSummaryTotals(PR_TRUE);
if (NS_FAILED(rv)) return rv;
nsresult rv;
nsCOMPtr<nsINewsDatabase> db(do_QueryInterface(mDatabase, &rv));
if (NS_FAILED(rv))
return rv;
rv = db->SetUnreadSet(m_unreadSet.GetBuffer());
}
if (NS_FAILED(rv)) return rv;
rv = UpdateSummaryTotals(PR_TRUE);
if (NS_FAILED(rv)) return rv;
}
return NS_OK;
}
@ -375,6 +384,7 @@ nsresult nsMsgNewsFolder::GetDatabase()
NS_IMETHODIMP
nsMsgNewsFolder::UpdateFolder()
{
GetDatabase(); // want this cached...
return GetNewMessages();
}
@ -1248,16 +1258,7 @@ NS_IMETHODIMP nsMsgNewsFolder::SetUnreadSetStr(char * aUnreadSetStr)
if (!aUnreadSetStr) return NS_ERROR_NULL_POINTER;
rv = GetDatabase();
if (NS_FAILED(rv)) return rv;
m_unreadSet = aUnreadSetStr;
NS_ASSERTION(mDatabase, "no database!");
if (!mDatabase) return NS_ERROR_FAILURE;
nsCOMPtr<nsINewsDatabase> db(do_QueryInterface(mDatabase, &rv));
if (NS_FAILED(rv))
return rv;
rv = db->SetUnreadSet(aUnreadSetStr);
return rv;
return NS_OK;
}

View File

@ -123,6 +123,10 @@ protected:
nsISupportsArray *mMessages;
char *mOptionLines;
char *mHostname;
// cache this until we open the db.
nsCString m_unreadSet;
nsCOMPtr<nsIFileSpec> mNewsrcFilePath;
};