smsprotocols/smsstack/smsprot/Inc/smspfacadestor.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /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__
+