From 63703948c11eb53f64fa74819ae58d06d34e43cf Mon Sep 17 00:00:00 2001 From: "putterman%netscape.com" Date: Tue, 13 Jul 1999 20:31:58 +0000 Subject: [PATCH] Added NS_NewMsgMailSession and Init. --- mailnews/base/src/nsMsgMailSession.cpp | 53 +++++++++++++++++++------- mailnews/base/src/nsMsgMailSession.h | 9 ++++- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/mailnews/base/src/nsMsgMailSession.cpp b/mailnews/base/src/nsMsgMailSession.cpp index b7eaa70ed1e1..b64944b5db97 100644 --- a/mailnews/base/src/nsMsgMailSession.cpp +++ b/mailnews/base/src/nsMsgMailSession.cpp @@ -35,23 +35,13 @@ static NS_DEFINE_CID(kMsgAccountManagerCID, NS_MSGACCOUNTMANAGER_CID); nsMsgMailSession::nsMsgMailSession(): mRefCnt(0), - m_accountManager(0) + m_accountManager(0), + mListeners(nsnull) { NS_INIT_REFCNT(); - - nsresult rv; - - rv = nsComponentManager::CreateInstance(kMsgAccountManagerCID, - NULL, - nsCOMTypeInfo::GetIID(), - (void **)&m_accountManager); - if (NS_SUCCEEDED(rv)) - m_accountManager->LoadAccounts(); - - mListeners = new nsVoidArray(); - } + nsMsgMailSession::~nsMsgMailSession() { if(m_accountManager) @@ -66,6 +56,26 @@ nsMsgMailSession::~nsMsgMailSession() } +nsresult nsMsgMailSession:: Init() +{ + nsresult rv; + + rv = nsComponentManager::CreateInstance(kMsgAccountManagerCID, + NULL, + nsCOMTypeInfo::GetIID(), + (void **)&m_accountManager); + if (NS_FAILED(rv)) + return rv; + + m_accountManager->LoadAccounts(); + + mListeners = new nsVoidArray(); + if(!mListeners) + return NS_ERROR_OUT_OF_MEMORY; + + return NS_OK; + +} // nsIMsgMailSession nsresult nsMsgMailSession::GetCurrentIdentity(nsIMsgIdentity ** aIdentity) @@ -184,3 +194,20 @@ NS_IMETHODIMP nsMsgMailSession::NotifyFolderItemDeleted(nsIFolder *folder, nsISu return NS_OK; } + +nsresult +NS_NewMsgMailSession(const nsIID& iid, void **result) +{ + if (!result) return NS_ERROR_NULL_POINTER; + + nsMsgMailSession *mailSession = new nsMsgMailSession; + if (!mailSession) return NS_ERROR_OUT_OF_MEMORY; + + nsresult rv = mailSession->Init(); + if(NS_FAILED(rv)) + { + delete mailSession; + return rv; + } + return mailSession->QueryInterface(iid, result); +} \ No newline at end of file diff --git a/mailnews/base/src/nsMsgMailSession.h b/mailnews/base/src/nsMsgMailSession.h index 19c4aa2a06c4..9aa1ff08f66a 100644 --- a/mailnews/base/src/nsMsgMailSession.h +++ b/mailnews/base/src/nsMsgMailSession.h @@ -54,11 +54,18 @@ public: NS_IMETHOD NotifyFolderItemAdded(nsIFolder *folder, nsISupports *item); NS_IMETHOD NotifyFolderItemDeleted(nsIFolder *folder, nsISupports *item); - + nsresult Init(); protected: nsIMsgAccountManager *m_accountManager; nsVoidArray *mListeners; }; +NS_BEGIN_EXTERN_C + +nsresult +NS_NewMsgMailSession(const nsIID& iid, void **result); + +NS_END_EXTERN_C + #endif /* nsMsgMailSession_h__ */