--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imap4mtm/imapmailstore/inc/cimapmailstore.h Thu Dec 17 08:44:11 2009 +0200
@@ -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 <msvapi.h>
+#include <msventry.h>
+#include <miuthdr.h>
+#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<CQueueEntryBase> iRequestArray;
+ CMsvServerEntry& iServerEntry;
+ };
+
+#endif//__CIMAPMAILSTORE_H__
\ No newline at end of file