fix thread iterator, add some debugging iterators

git-svn-id: svn://10.0.0.236/trunk@26632 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bienvenu%netscape.com
1999-04-07 00:31:36 +00:00
parent ee6636ec3a
commit 204b373a50
3 changed files with 55 additions and 2 deletions

View File

@@ -206,6 +206,8 @@ public:
static int GetNumInCache(void) {return(GetDBCache()->Count());}
static void DumpCache();
virtual nsresult DumpContents();
nsresult DumpThread(nsMsgKey threadId);
nsresult DumpMsgChildren(nsIMessage *msgHdr);
#endif
friend class nsMsgHdr; // use this to get access to cached tokens for hdr fields

View File

@@ -2574,9 +2574,56 @@ nsresult nsMsgDatabase::DumpContents()
{
key = threads[i];
printf("thread key = %ld\n", key);
// DumpThread(key);
}
return NS_OK;
}
nsresult nsMsgDatabase::DumpMsgChildren(nsIMessage *msgHdr)
{
return NS_OK;
}
nsresult nsMsgDatabase::DumpThread(nsMsgKey threadId)
{
nsresult ret = NS_OK;
nsIMsgThread *thread = nsnull;
thread = GetThreadForThreadId(threadId);
if (thread)
{
nsIEnumerator *enumerator = nsnull;
ret = thread->EnumerateMessages(nsMsgKey_None, &enumerator);
if (NS_SUCCEEDED(ret) && enumerator)
{
for (enumerator->First(); enumerator->IsDone() != NS_OK; enumerator->Next())
{
nsIMessage *pMessage = nsnull;
ret = enumerator->CurrentItem((nsISupports**)&pMessage);
NS_ASSERTION(NS_SUCCEEDED(ret), "nsMsgDBEnumerator broken");
if (NS_FAILED(ret))
break;
if (pMessage)
{
nsMsgKey key;
nsString subject;
(void)pMessage->GetMessageKey(&key);
pMessage->GetSubject(subject);
printf("message in thread %ld %s\n", key, (const char *) &nsAutoString(subject));
}
// NS_RELEASE(pMessage);
pMessage = nsnull;
}
NS_RELEASE(enumerator);
}
}
return ret;
}
#endif

View File

@@ -191,14 +191,18 @@ NS_IMETHODIMP nsMsgThread::GetChildHdrAt(PRInt32 index, nsIMessage **result)
{
nsresult ret = NS_OK;
nsIMdbRow* resultRow;
mdb_pos pos = index;
mdb_pos pos = index - 1;
if (!result)
return NS_ERROR_NULL_POINTER;
*result = nsnull;
nsIMdbTableRowCursor *rowCursor;
ret = m_mdbTable->GetTableRowCursor(m_mdbDB->GetEnv(), pos, &rowCursor);
ret = rowCursor->NextRow(m_mdbDB->GetEnv(), &resultRow, &pos);
NS_RELEASE(rowCursor);
if (NS_FAILED(ret))
if (NS_FAILED(ret) || !resultRow)
return ret;
//Get key from row