--- /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__
+