| author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> | 
| Thu, 17 Dec 2009 08:44:11 +0200 | |
| changeset 0 | 72b543305e3a | 
| child 26 | ebe688cedc25 | 
| permissions | -rw-r--r-- | 
| 0 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 1 | // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 2 | // All rights reserved. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 3 | // This component and the accompanying materials are made available | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 4 | // under the terms of "Eclipse Public License v1.0" | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 5 | // which accompanies this distribution, and is available | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 6 | // at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 7 | // | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 8 | // Initial Contributors: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 9 | // Nokia Corporation - initial contribution. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 10 | // | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 11 | // Contributors: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 12 | // | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 13 | // Description: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 14 | // | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 15 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 16 | #ifndef __CIMAPFETCHBODY_H__ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 17 | #define __CIMAPFETCHBODY_H__ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 18 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 19 | #include <e32std.h> | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 20 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 21 | #include "cimapcommand.h" | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 22 | #include "cimapmailstore.h" | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 23 | #include "tmessageflaginfo.h" | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 24 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 25 | //forward declaration | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 26 | class CImapSession; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 27 | class CImapSettings; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 28 | class CImapMimeHeaderFieldsParser; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 29 | class CFetchBodyInfo; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 30 | class CImapFetchBodyResponse; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 31 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 32 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 33 | @internalTechnology | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 34 | @prototype | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 35 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 36 | class CImapFetchBody : public CImapCommand, public MMailStoreObserver, public MChunkOutOfOrderObserver | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 37 | 	{
 | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 38 | private: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 39 | enum TState | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 40 | 		{		
 | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 41 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 42 | Looking for the next data item(s), in the current line. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 43 | This state can transition to EStateBodyStructureLiteral or EStateHeaderFieldsLiteral if | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 44 | either of these data items are found, or EStateComplete if no data items are found. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 45 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 46 | EStateDataItemLine, | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 47 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 48 | Waiting for a literal that will be delivered to the body parser. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 49 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 50 | EStateBodyLiteral, | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 51 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 52 | Processing the data for BODY[x.MIME] | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 53 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 54 | EStateMime, | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 55 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 56 | This state occurs after EStateHeaderFieldsLiteral. It means that a data item line | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 57 | is expected, but it has yet to be fetched from the input stream. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 58 | This differs to EStateDataItemLine, which means that the current block of data | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 59 | still has data items in it. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 60 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 61 | EStateFetchNextDataItemLine, | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 62 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 63 | Either all data has been parsed, or the data was not recognised. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 64 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 65 | EStateComplete, | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 66 | }; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 67 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 68 | public: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 69 | // Construction and Destruction | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 70 | static CImapFetchBody* NewL(CImapFolderInfo* aSelectedFolderData, TInt aLogId, TUint aMessageUid, TBool aPeek, CFetchBodyInfo& aFetchBodyInfo, CImapFetchBodyResponse& aFetchBodyResponse, CImapSettings& aImapSettings, CImapMailStore& aImapMailStore, CImapSession& aParent); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 71 | ~CImapFetchBody(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 72 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 73 | // Overrides CImapCommand | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 74 | void Cancel(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 75 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 76 | // Fetch Body specific | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 77 | TBool IsStoreOperationComplete(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 78 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 79 | // Overrides CImapCommand::SendDataCnfL | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 80 | virtual void SendDataCnfL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 81 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 82 | private: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 83 | CImapFetchBody(CImapFolderInfo* aSelectedFolderData, TInt aLogId, TUint aMessageUid, TBool aPeek, CFetchBodyInfo& aFetchBodyInfo, CImapFetchBodyResponse& aFetchBodyResponse, CImapSettings& aImapSettings, CImapMailStore& aImapMailStore, CImapSession& aParent); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 84 | void ConstructL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 85 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 86 | // Implements CImapCommand | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 87 | void SendMessageL(TInt aTagId, MOutputStream& aStream); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 88 | CImapCommand::TParseBlockResult DoParseBlockL(const TDesC8& aData); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 89 | TInt NumberOfTaggedResponsesExpected() const; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 90 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 91 | // from MMailStoreObserver | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 92 | void StoreOperationComplete(TMsvId aId,TInt aErrorCode); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 93 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 94 | // from MChunkOutOfOrderObserver. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 95 | void EnableSendFetch(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 96 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 97 | void SendMessageL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 98 | TInt CalculateChunk(TInt aPos); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 99 | TInt TotalRequestsRequired(TInt aSize); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 100 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 101 | TParseBlockResult ProcessStartL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 102 | TParseBlockResult ProcessDataItemsL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 103 | void ProcessStartOfMimeL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 104 | void ProcessRestOfMimeL(const TDesC8& aData); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 105 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 106 | TBool GetAndStoreNextPart(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 107 | void ProcessBodyL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 108 | void ProcessFlagsL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 109 | void ProcessUidL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 110 | void ProcessBodyLiteralL(const TDesC8& aData); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 111 | void WriteMimeHeadersToCafL(); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 112 | void StoreBodyDataL(TInt aExtraFetchRequest); | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 113 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 114 | private: | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 115 | //the uid of the message on the server - used for SEND operations | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 116 | TUint iMessageUid; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 117 | //whether we want to peek, controls the /seen flag | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 118 | TBool iPeek; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 119 | //the size of the data we want to retrieve | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 120 | TInt32 iSizeToFetch; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 121 | //the total number of requests we need to issue to receive all of the data | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 122 | TInt iTotalRequests; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 123 | //running count of requests that have been issued | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 124 | TInt iRequestCount; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 125 | //the chunk where the data currently being parsed will be stored | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 126 | TInt iCurrentChunk; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 127 | //the output stream used to send the commands | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 128 | MOutputStream* iOutStream; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 129 | //the size of the literal being stored | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 130 | TInt iLiteralSize; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 131 | //the maximum fetch size | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 132 | TUint iMaxFetchSize; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 133 | //the number of commands that may be pipelined | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 134 | TUint iMaxOutstandingRequests; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 135 | //gloabal settings information | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 136 | CImapSettings& iImapSettings; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 137 | //info about this specific fetch | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 138 | CFetchBodyInfo& iFetchBodyInfo; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 139 | //the gloabl mailstore object | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 140 | CImapMailStore& iImapMailStore; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 141 | //the parent session | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 142 | CImapSession& iParent; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 143 | //if the store operation is complete | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 144 | TBool iStoreComplete; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 145 | // Mime header fields parser for BODY[x.MIME] response | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 146 | CImapMimeHeaderFieldsParser* iHeaderFieldsParser; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 147 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 148 | Whether the UID data item was found in the untagged response. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 149 | If the UID data item was NOT found then the response is an unsolicited FETCH response caused | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 150 | by a server event (e.g. a user deleting some messages from some other client such as a PC), | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 151 | rather than a direct response to our UID FETCH command - which would have included the UID DATA item. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 152 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 153 | Non-UID FETCH responses should not be returned as the result of a FetchBody request. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 154 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 155 | TBool iUidDataItemFoundInResponse; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 156 | /** | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 157 | Stores the result of parsing the FLAGS data item and the UID data item. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 158 | If both UID and FLAGS data items are included in the response, then the data in this | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 159 | object will be copied to the equivalent object in iFetchBodyResponse. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 160 | If only the FLAGS data item included in the response, then this is an unsolicited FETCH response | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 161 | and the data is discarded (so as not to corrupt the data in iFetchBodyResponse) | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 162 | */ | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 163 | TMessageFlagInfo iMessageFlagInfo; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 164 | // Stores fetch body response data | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 165 | CImapFetchBodyResponse& iFetchBodyResponse; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 166 | // part thats being parsed | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 167 | TPtrC8 iCurrentPart; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 168 | //used to track the state of the response parsing | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 169 | TState iState; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 170 | // Stores current body data | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 171 | HBufC8* iBuf; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 172 | // Indicates that we have received the MIME headers | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 173 | TBool iReceivedMimeHeaders; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 174 | // When pipelining this is the amount of commands that are pipelined. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 175 | TInt iOutstandingRequests; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 176 | // Keeps track of the fetch responses received. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 177 | TInt iResponseCount; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 178 | // to keep track of all tags we expect to receive. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 179 | RArray<TInt>iTagIds; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 180 | // Indicates whether to send FETCH command to server.Sending FETCH command | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 181 | // to server may be disabled if server sends out of order chunks. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 182 | TBool iSendFetch; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 183 | // When server responses with no body length, iUnexpectedFormat is set to ETrue. | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 184 | TBool iUnexpectedFormat; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 185 | }; | 
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 186 | |
| 
72b543305e3a
Revision: 200949
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 187 | #endif // __CIMAPFETCHBODY_H__ |