diff -r 000000000000 -r 3553901f7fa8 smsprotocols/smsstack/smsprot/Inc/smspfacadestor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smsprotocols/smsstack/smsprot/Inc/smspfacadestor.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,110 @@ +// Copyright (c) 2007-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: +// + +/** + @file + @internalAll +*/ + +#ifndef __SMSPFACADESTOR_H__ +#define __SMSPFACADESTOR_H__ + +#include "smspstor.h" +#include "smspclass0stor.h" + +/** +CFacadeSmsReassemblyStore. + +This class will act as a container class for both class 0 & non-class 0 +reassembly store. It will provide generic interface through which client +of this class will add, delete or process the SMS message. +It also provides few class 0 specific functions because sometimes class 0 messsages +needs to be handled differently. +Internally it will store the SMS message in its respective reassembly store. + +@internalComponent +*/ +class CFacadeSmsReassemblyStore : public CBase + { +public: + static CFacadeSmsReassemblyStore* NewL(RFs& aFs, MSmsComm& aSmsComm); + ~CFacadeSmsReassemblyStore(); + + void OpenStoreL(); + void Close(); + RFs& FileSession() const; + + void InitL(); + void PurgeL(const TTimeIntervalMinutes& aTimeIntervalMinutes,TBool aPurgeIncompleteOnly); + TBool IsFull(); + void DeleteEnumeratedSIMEntries(); + TInt ExternalizeEnumeratedMessagesL(CSmsProvider& aProvider,TInt& aCount); + void ProcessCompleteSmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage); + + void AddSegmentToReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal); + void DeleteMessageL(const CSmsMessage& aSmsMessage, TBool aPassed); + void UpdateLogServerIdL(const CSmsMessage& aSmsMessage, TInt aIndex); + void SetMessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed=ETrue); + TBool IsSeparateClass0StoreSupported(); + //Class 0 Specific function. + void ProcessMessageIfExceedLimitationL(MSmsComm& aSmsComm); + void ForwardCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage& aSmsMessage, const TSmsAddr* aOriginalSmsAddr,const CSmsMessage* aOriginalSmsMessage,TDes& aDes); + void SetIncompleteMessageForwardedToClientL(const CSmsMessage& aSmsMessage); + void SetDiskSpaceState(TSmsDiskSpaceMonitorStatus aDiskSpaceStatus); + TBool IsWapSMS(const CSmsMessage& aSmsMessage); + +private: + CFacadeSmsReassemblyStore(RFs& aFs, MSmsComm& aSmsComm); + void ConstructL(); + +private: + void InitializeNonClass0StoreL(); + void DeleteNonClass0EnumeratedSIMEntries(); + void DeleteNonClass0MessageL(const CSmsMessage& aSmsMessage, TBool aPassed); + void AddSegmentToNonClass0ReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal); + TInt ExternalizeEnumeratedNonClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount); + TInt ExternalizeEnumeratedClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount); + void ProcessCompleteNonClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage); + void ProcessCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage); + TInt NumberOfCompleteNonClass0Messages(); + void SetNonClass0MessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed=ETrue); + void UpdateLogServerIdOfNonClass0MessageL(const CSmsMessage& aSmsMessage, TInt aIndex); + TBool IsForClass0ReassemblyStore(const CSmsMessage& aSmsMessage); + +private: + RFs& iFs; + MSmsComm& iSmsComm; + /** This re-assembly store will contain non-class 0 SMS messages + & also WAP class 0 messages if SMS stack is configured for handling + class 0 messages in out of disk condition. + In other case it will contain all type (class 0 & non-class 0) of SMS messages. + */ + + CSmsReassemblyStore* iReassemblyStore; + + /** This re-assembly store will contain only class 0 sms messages if + SMS stack is configured for handling class 0 messages in out of disk condition. + In other case it will not be used. */ + + CClass0SmsReassemblyStore* iClass0ReassemblyStore; + + /** Maximum number of comlete SMS messages that can be stored in reassembly store before + it (re-assembly store) considered to be full. IsFull() function returns TRUE if + re-assembly store contains more than this defined number of complete SMS messages. */ + TInt iMaxmumNumberOfCompleteMessagesInReassemblyStore; + }; + +#endif //__SMSPFACADESTOR_H__ +