telephonyprotocols/pdplayer/inc/pdpservices.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/pdplayer/inc/pdpservices.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,139 @@
+// Copyright (c) 2008-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
+ @internalComponent
+*/
+
+#ifndef SYMBIAN_PDPSERVICES_H
+#define SYMBIAN_PDPSERVICES_H
+
+#include "mbmsengine.h"
+#include <comms-infras/coretiermanager.h>
+#include <networking/mbmsparams.h>
+#include <pcktretrieve.h>
+
+using namespace ESock;
+using namespace ConnectionServ;
+
+class CMBMSEngine;
+
+/* This class is used to send and retrieve MBMS parameters from the client and Etel.
+ The MBMS parameters are fetched from the bundle and sent to Etel inorder to process the MBMS requests.
+ Different State Changes are maintained in this class to carry out the MBMS requests.*/
+class CMBMSServiceRequest: public CActive
+{
+public:
+	static CMBMSServiceRequest* NewL(
+					CMBMSEngine& aMBMSEngine,
+					const Messages::TNodeId& aMBMSTMCommsId,
+					Messages::RNodeInterface* aOriginatorInterface,
+					const Messages::TRuntimeCtxId& aOriginator,
+					const Messages::TNodeSignal::TMessageId& aRequestType,
+					ESock::CRefCountOwnedParameterBundle* aRequestBundleOwner,
+					const XMBMSServiceQuerySet::TQueryType aQueryType
+					);
+
+	~CMBMSServiceRequest();
+
+	// From CActive
+	virtual void	RunL();
+	virtual void	DoCancel();
+	virtual TInt	RunError(TInt aError);
+
+	//This function is used to cancel the current outstanding requests.
+	void CancelMessage(const TInt aError);
+	//This function is used to get the client ID.
+	const Messages::TNodeId& GetClientId();
+	//This function is used to start MBMS requests.
+	void StartRequest();
+
+private:
+	CMBMSServiceRequest(
+			CMBMSEngine& aMBMSEngine,
+			const Messages::TNodeId& aMBMSTMCommsId,
+			const Messages::TNodeSignal::TMessageId& aRequestType,
+			ESock::CRefCountOwnedParameterBundle* aRequestBundleOwner,
+			const XMBMSServiceQuerySet::TQueryType aQueryType
+			);
+
+	void ConstructL(Messages::RNodeInterface* aOriginatorInterface, const Messages::TRuntimeCtxId& aOriginator);
+
+	//This function is used to update the service list which is passed to Etel.
+	CPcktMbmsMonitoredServiceList* UpdateMonitorServiceListL();
+	//This function is used to prepare result bundle.
+	CConnectionServParameterBundle* PrepareMonitorResultBundleL() const;
+	//This function is used to prepare result bundle containing bearer availability.
+	CConnectionServParameterBundle* PrepareBearerResultBundleL() const;
+	//This function is used to prepare empty bundle.
+	CConnectionServParameterBundle* PrepareRemoveAllBundleL() const;
+	/*This function is used to prepare  bundle containing current and max count of service/monitor
+	 list table.*/
+	CConnectionServParameterBundle* PrepareCountBundleL() const;
+	//This function is used to send result bundle to the client.
+	void SendResultBundleL();
+
+private:
+	// Required for setting and controlling the StateChanges within the engine
+	enum TScanEngineState
+	 {
+	 EInitialising = 0,
+	 EChecking,
+	 EBearerAvailable,
+	 ERetrieveBearerAvailability,
+	 EServiceAdd,
+	 ENotifyService,
+	 EServiceRemove,
+	 EServiceRemoveAll,
+	 ERemoveAllComplete,
+	 EStartMonitor,
+	 EGetMonitorList,
+	 EResultCount,
+	 EGetCountMonitorList,
+	 EGetCountServiceList
+	 };
+
+	RPacketService::TStatus iPsdStatus;
+
+    //to maintain different states in state machine
+	TScanEngineState iScanEngineState;
+
+	//required by CMBMSServiceRequest.
+	CMBMSEngine& iMBMSEngine;
+
+	// Needed for NotificationRequest Messages
+	Messages::TNodeId iMBMSTMCommsId;
+	Messages::RRequestOriginator iRequestOriginator;
+	Messages::TNodeSignal::TMessageId iRequestType;
+
+	//parameter bundle
+	ESock::CRefCountOwnedParameterBundle* iObjectBundleOwner;
+
+	TMbmsNetworkServiceStatus iNetworkServiceStatus;
+	//operation type on MBMS Monitor List table
+	TMbmsAction iMbmsAction;
+
+	CRetrievePcktMbmsMonitoredServices*	iRetrievePcktMbms;
+	//MBMS query set by the client
+	XMBMSServiceQuerySet::TQueryType iQueryType;
+
+	//to maintain current and max count of entries in monitor/service list table.
+	TInt iCount;
+	TInt iMaxCount;
+
+};
+#endif // SYMBIAN_PDPSERVICES_H
+