messagingfw/wappushfw/pushwatcher/inc/CLWatcher.h
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/wappushfw/pushwatcher/inc/CLWatcher.h	Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,209 @@
+// Copyright (c) 2000-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:
+// WAP Push Message Header File - 
+// This file contains the classes for Concrete Secure/Unsecure CL Watcher and connectionless Watcher Base Class
+// 
+//
+
+/**
+ @file CLWatcher.H
+*/
+
+#ifndef __CLWATCHER_H__
+#define __CLWATCHER_H__
+
+// System Include
+#include <e32base.h>
+#include <push/pushlog.h>
+#include "cmanobserver.h"
+#include <push/murilistlookup.h>
+
+// User Include
+// User Include
+#include "errorcodes.h"
+// Forward Declares
+class CWapPushMessageFilter;
+class CWapBoundCLPushService;
+
+/**
+ * KRecieveBufferSize
+ *
+ *	Pre-allocated buffer size for recieving a Push Message.  
+ */
+const TInt KRecieveBufferSize=256;  
+
+
+/**
+ * PushPorts
+ */
+const Wap::TPort KPushPortUnsecure = 2948; 
+const Wap::TPort KPushPortSecure = 2949; 
+
+
+/**
+ *		Connectionless Watcher Base Class
+ *		Connects to the WapStack, waits for a Push Message, dispatches it, waits
+ */
+//##ModelId=3B659EEA027E
+class CCLWatcherBase : public CActive
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	//##ModelId=3B659EEB0009
+	virtual ~CCLWatcherBase();
+
+
+	enum TCLWatcherBasePanic 
+		{
+		ENoMessageExists,
+		EUnknownState
+		};
+
+protected:
+	//##ModelId=3B659EEA03CB
+	CCLWatcherBase(MWapPushLog& aLog, MConnManObserver& aManager); 
+	
+	//##ModelId=3B659EEA03CA
+	void ConstructL();
+
+	// Called by ConstructL()
+	// Override and use for initialization
+	//##ModelId=3B659EEA03C9
+	virtual void SetupCLWatcherL() = 0;
+
+	// CActive 
+	//##ModelId=3B659EEA03BF
+	void RunL();
+	//##ModelId=3B659EEA03AD
+	TInt RunError(TInt aError);
+	//##ModelId=3B659EEA03AC
+	void DoCancel();
+	
+	//##ModelId=3B659EEA03AB
+	void IdleComplete();
+
+	//##ModelId=3B659EEA0398
+	void Panic(TCLWatcherBasePanic aPanicCode);
+
+private:
+
+	//##ModelId=3B659EEA0397
+	void WaitForPushL();
+	//##ModelId=3B659EEA038F
+	void ReceivePushL();
+	//##ModelId=3B659EEA038E
+	void DispatchMessageL();
+	//##ModelId=3B659EEA038D
+	void FilterMessageL();
+
+protected:	
+
+	enum TCLWatcherState 
+		{ 
+		EWaiting, 
+		EReceiving,
+		EFiltering, 
+		EDispatching
+		} iState;
+	
+
+	//##ModelId=3B659EEA037B
+	MWapPushLog&				iLog;
+	//##ModelId=3B659EEA0365
+	MConnManObserver&			iManager;
+
+	//##ModelId=3B659EEA033F
+	CWapBoundCLPushService		*iWapCLServ;
+
+	//##ModelId=3B659EEA030D
+	TBuf8<KRecieveBufferSize>	iBodyBuf;
+	//##ModelId=3B659EEA02F9
+	TBuf8<KRecieveBufferSize>	iHeadersBuf;
+	//##ModelId=3B659EEA02D8
+	HBufC8*						iBody;
+	//##ModelId=3B659EEA02CE
+	HBufC8*						iHeaders;
+	//##ModelId=3B659EEA02BC
+	TPckgBuf<TUint8>			iPushID;
+	//##ModelId=3B659EEA02B2
+	TBool						iCachedFilter;
+	//##ModelId=3B659E71016E
+	CWapPushMessageFilter*		iPushMsgFilter;
+	//##ModelId=3B659E710164
+	TBool						iPassedFilter;
+
+	//##ModelId=3B659EEA0292
+	CPushMessage*				iCurrentMessage;
+
+	HBufC8* iServerAddress;
+	
+private: 
+	MUriListLookup* iUriListLookup;
+	};
+
+/**
+ * Concrete Unsecure CL Watcher
+ */
+//##ModelId=3B659EE401D5
+class CCLUnsecureWatcher : public CCLWatcherBase
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	//##ModelId=3B659EE401EF
+	static CCLUnsecureWatcher* NewL(MWapPushLog& aLog, MConnManObserver& aManager);
+	//##ModelId=3B659EE401EE
+	~CCLUnsecureWatcher();
+
+protected:
+	//##ModelId=3B659EE401ED
+	virtual void SetupCLWatcherL();
+
+private:
+	//##ModelId=3B659EE401EA
+	CCLUnsecureWatcher(MWapPushLog& aLog,MConnManObserver& aManager) : CCLWatcherBase(aLog,aManager){};
+	};
+
+/**
+ * Concrete Secure CL Watcher
+ */
+//##ModelId=3B659EE00388
+class CCLSecureWatcher : public CCLWatcherBase
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	//##ModelId=3B659EE003A1
+	static CCLSecureWatcher* NewL(MWapPushLog& aLog, MConnManObserver& aManager);
+	//##ModelId=3B659EE003A0
+	~CCLSecureWatcher();
+
+protected:
+	//##ModelId=3B659EE0039F
+	virtual void SetupCLWatcherL();
+
+private:
+	//##ModelId=3B659EE0039C
+	CCLSecureWatcher(MWapPushLog& aLog,MConnManObserver& aManager) : CCLWatcherBase(aLog,aManager){};
+	};
+
+
+#endif