messagingfw/biomsgfw/BioWatchers/Inc/SmsWatcher.h
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/BioWatchers/Inc/SmsWatcher.h	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,101 @@
+// Copyright (c) 2003-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 SMS_BASE_WATCHER_H
+#define SMS_BASE_WATCHER_H
+
+#include "SmsSocketWatcher.h"
+#include <watcher.h>
+#include <bifchangeobserver.h>
+
+class CActive;
+
+// Data types
+class CSmsBaseWatcher : public CActive, public MBioWatcherObserver, public MBifChangeObserver, public MMsvSessionObserver
+	{
+public:
+	//--------------------------------------
+	//     Construction & Destruction
+	//--------------------------------------
+	IMPORT_C ~CSmsBaseWatcher();
+
+protected:
+	IMPORT_C CSmsBaseWatcher(RFs& aFs, CWatcherLog& aLog, TInt aPriority = EPriorityStandard);
+	IMPORT_C void ConstructL();
+	IMPORT_C virtual void StartL();
+	IMPORT_C virtual void Reset();
+
+	IMPORT_C void RunL();
+	IMPORT_C TInt RunError(TInt aError);
+	IMPORT_C void DoCancel();
+	IMPORT_C void CompleteMyself(TInt aError);
+
+	//MBioWatcherObserver
+	IMPORT_C void HandleWatcherComplete(CBaseSmsActiveSocketWatcher& aWatcher, TInt aError);
+
+	IMPORT_C void CreateSocketWatchersFromBioDbL(TBioMsgIdType aType);
+	IMPORT_C void CreateSocketWatchersFromBioDbL(TBioMsgIdType aType, TUid aBioID);
+
+	IMPORT_C void DeleteSocketWatchersWithUidL(TUid aUid);
+
+	IMPORT_C void StartSocketWatchersL();
+
+	virtual CBaseSmsActiveSocketWatcher* CreateSocketWatcherLC(const TUid aBioUid, const TBioMsgId& aBioMsg) = 0;
+	virtual TBool SupportBioMsgId(const TBioMsgId& aBioMsg) const = 0;
+
+	//MBifChangeObserver
+	IMPORT_C void HandleBifChangeL(TBifChangeEvent aEvent, TUid aBioID);
+
+	virtual void AddBifL(TUid aBioID) = 0;
+	IMPORT_C void AddBifWithTypeL(TBioMsgIdType aType, TUid aBioID);
+
+	IMPORT_C virtual void DeleteBifL(TUid aBioID);
+	IMPORT_C virtual void ReloadBifL(TUid aBioID);
+
+	//Returns the error returned by SetupL()
+	//Leaves if:
+	//	Setup() returns other than KErrNone, KErrNotFound, KErrAlreadyExists; or
+	//	AppendL() leaves
+	IMPORT_C TInt SetupAndAppendL(CBaseSmsActiveSocketWatcher& aSocketWatcher, CArrayPtrFlat<CBaseSmsActiveSocketWatcher>& rSocketWatchers);
+	IMPORT_C void ResetDb();
+
+	IMPORT_C void GetBioServiceId(CMsvSession& aSession, TMsvId& aBioServiceId, TMsvId& aSmsServiceId);
+private:
+	void CreateSocketWatchersFromBioDbL(TBioMsgIdType aType, CArrayPtrFlat<CBaseSmsActiveSocketWatcher>& rSocketWatchers);
+	void CreateSocketWatchersFromBioDbL(TBioMsgIdType aType, TUid aBioID, CArrayPtrFlat<CBaseSmsActiveSocketWatcher>& rSocketWatchers);
+	void StartSocketWatchersL(const CArrayPtrFlat<CBaseSmsActiveSocketWatcher>& aSocketWatchers);
+	void ConstructDbL();
+	
+	//MMsvSessionObserver
+	void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*) {};
+protected:
+	CArrayPtrFlat<CBaseSmsActiveSocketWatcher>* iSocketWatchers;
+
+	RFs& iFs;
+	CWatcherLog& iWatcherLog;
+
+	CBifChangeObserver* iBifObserver;
+
+	CBIODatabase* iBioDb;	//used during construction only
+	RTimer iTimer;
+	
+	CMsvSession* iSession;
+	
+	// member variables used to pass settings
+	TMsvId iBioServiceId;
+	TMsvId iSmsServiceId;
+	};
+
+#endif