diff -r 2981cb3aa489 -r 8b14b30db193 email/imap4mtm/imapmailstore/inc/cimapmailstore.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imap4mtm/imapmailstore/inc/cimapmailstore.h Wed Nov 03 22:55:44 2010 +0530 @@ -0,0 +1,111 @@ +// 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: +// + +#ifndef __CIMAPMAILSTORE_H__ +#define __CIMAPMAILSTORE_H__ + +#define _MSVAPI_DONT_INCLUDE_FLOGGER_ + +#include +#include +#include +#include "cimapsettings.h" +#include "cfetchbodyinfo.h" + +//Forward declarations +class CQueueEntryBase; +class CImHeader; +class CImMimeHeader; +class CImapCharconvTls; + +/** + Created to enable a session to be created with the messaging framework. Observer not used. + @internalComponent + @prototype +*/ +class CSessionObserver : public CBase, public MMsvSessionObserver + { +public: + void HandleSessionEventL(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/) + { + } + }; + +/** +Observer class used by CQueueEntryBase to call back to into the caller with the result of a +storage operation. +@internalComponent +@prototype +*/ +class MMailStoreObserver + { +public: + //pure virtual member + virtual void StoreOperationComplete(TMsvId aId,TInt aErrorCode)=0; + }; + +/** +Observer class used by CQueueEntryBase to call back to into the caller when proper chunk is recieved fron server +and the chunks are written to the store in order. +@internalComponent +@prototype +*/ +class MChunkOutOfOrderObserver + { +public: + /** + Notify CImapFetchBody to send FETCH command to server, if it was disabled because the client recieved + out of order chunks and it reached it maximum buffer capacity(default 3 chunks). + */ + virtual void EnableSendFetch()=0; + }; + + +/** +This class provides a public API which implements a wrapper over CMsvStosre and allows clients to make requests to stream data to the message store. +The class maintains an array of CQueueEntryBase derived objects that service the requests. +@internalComponent +@prototype +*/ +class CImapMailStore : public CBase + { +public: + virtual ~CImapMailStore(); + IMPORT_C static CImapMailStore* NewL(CMsvServerEntry& aServerEntry); + IMPORT_C void StorePartL(CImHeader* aHeader,TMsvId aId,MMailStoreObserver& aObserver); + IMPORT_C void StorePartL(CImMimeHeader* aHeader,TMsvId aId, MMailStoreObserver& aObserver); + IMPORT_C void InitialiseStoreBody16L(TInt aTotalChunks, CImapSettings& aImapSettings,CFetchBodyInfo& aFetchBodyInfo,TInt aLogId,MMailStoreObserver& aObserver, TBool aBinaryCap=EFalse); + IMPORT_C void InitialiseStoreBody8L(TInt aTotalChunks, CImapSettings& aImapSettings,CFetchBodyInfo& aFetchBodyInfo,TInt aLogId,MMailStoreObserver& aObserver, TBool aBinaryCap=EFalse); + IMPORT_C void StoreBodyChunk16L(HBufC8* aData,TMsvId aId,TInt aChunkNumber, TInt aExtraFetchRequestCount=0); + IMPORT_C void StoreBodyChunk8L(HBufC8* aData,TMsvId aId,TInt aChunkNumber, TInt aExtraFetchRequestCount=0); + IMPORT_C void InitialiseStoreAttachmentL(TInt aTotalChunks,CImapSettings& aImapSettings,CFetchBodyInfo& aFetchBodyInfo,TInt aLogId,MMailStoreObserver& aObserver); + IMPORT_C void StoreAttachmentChunkL(HBufC8* aData,TMsvId aId,TInt aChunkNumber); + IMPORT_C TInt CancelRequest(MMailStoreObserver& aObserver); + IMPORT_C TInt CancelRequest(TMsvId aId); + IMPORT_C TInt RequestCount()const; + IMPORT_C void CreateAttachmentInfoL(TMsvId aId); + IMPORT_C void InitialiseStorePlainBodyTextL(TInt aTotalChunks, CImapSettings& aImapSettings, CFetchBodyInfo& aFetchBodyInfo, TInt aLogId, MMailStoreObserver& aObserver, MChunkOutOfOrderObserver& aChunkObserver, TBool aBinaryCap=EFalse); + IMPORT_C TBool StorePlainBodyTextL(HBufC8* aData, TMsvId aId, TInt aChunkNumber, TInt aExtraFetchRequestCount=0); + void RemoveFromQueueAndDelete(CQueueEntryBase* aQueueEntry); +private: + void ConstructL(); + CImapMailStore(CMsvServerEntry& aServerEntry); + static TBool IdsAndTypeMatch(const CQueueEntryBase& aLeft,const CQueueEntryBase& aRight); +private: + RPointerArray iRequestArray; + CMsvServerEntry& iServerEntry; + }; + +#endif//__CIMAPMAILSTORE_H__ \ No newline at end of file