diff -r 000000000000 -r 72b543305e3a email/imap4mtm/imaputils/src/cimaputils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imap4mtm/imaputils/src/cimaputils.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,141 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "cimaputils.h" +#include "cimaplogger.h" +#include "cimapcharconv.h" + +/** +Create the IMAP utilities class. +There is only one instance of this class at any one time. If more than one +server MTM instance exists at any time, then they share this class. +This is a static function. +*/ +EXPORT_C void CImapUtils::CreateL() + { + CImapUtils* self = NULL; + + TAny* tls = Dll::Tls(); + if (tls) + { + self = static_cast(tls); + ++self->iRefCount; + } + else + { + self = new (ELeave) CImapUtils(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + Dll::SetTls(self); + self->iRefCount = 1; + } + } + +/** +Delete the IMAP utilities class. +The class uses a reference count to ensure that there is only ever one instance +of the class at any time. Once the reference count hits 0, the class is destroyed. +This is a static function. +*/ +EXPORT_C void CImapUtils::Delete() + { + TAny* tls = Dll::Tls(); + + if (tls) + { + CImapUtils* self = static_cast(tls); + --self->iRefCount; + if (self->iRefCount == 0) + { + delete self; + Dll::SetTls(NULL); + } + } + } + +/** +Get a reference to the IMAP utilities class. +This is a static function. + +@return Reference to IMAP utilities class. +*/ +EXPORT_C CImapUtils& CImapUtils::GetRef() + { + TAny* tls = Dll::Tls(); + + __ASSERT_DEBUG(tls != NULL, User::Invariant()); + + CImapUtils* utils = static_cast(tls); + return *utils; + } + +CImapUtils::CImapUtils() + { + } + +void CImapUtils::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + iLogger = CImapLogger::NewL(); + iCharconv = CImapCharconv::NewL(iFs); + } + +CImapUtils::~CImapUtils() + { + delete iLogger; + delete iCharconv; + iFs.Close(); + } + +/** +Gets a connected file system object. + +@return a connected file system object. +*/ +EXPORT_C RFs& CImapUtils::Fs() + { + return iFs; + } + +/** +Gets a reference to the logger utility class. + +@return Reference to the logger utility class. +*/ +EXPORT_C CImapLogger& CImapUtils::Logger() + { + return *iLogger; + } + +/** +Gets a reference to the character converter utility class. + +@return reference to the character converter utility class. +*/ +EXPORT_C CImapCharconv& CImapUtils::Charconv() + { + return *iCharconv; + } + +/** +The panic function for the imapserver. +@param aPanic The panic code. +*/ +EXPORT_C void TImapServerPanic::ImapPanic(TImpsPanic aPanic) + { + _LIT(KImapServerPanic, "IMAPServer"); + User::Panic(KImapServerPanic(), aPanic); + }