email/mobilitytestframework/src/cimmobilitytestframework.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mobilitytestframework/src/cimmobilitytestframework.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,176 @@
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "cimmobilitytestframework.h"
+#include "cimmobilitytesttls.h"
+#include "cimmobilitymanager.h"
+#include "cmsgtestpropertywatcher.h"
+#include "mobilitytestpropertyvalue.h"
+
+/**
+Creates a test framework.
+Static method.
+
+@param aServiceId Service ID of associated MTM
+@param aMobilityManager Associated mobility manager
+*/
+EXPORT_C void CImMobilityTestFramework::Create(TMsvId aServiceId, CImMobilityManager& aMobilityManager)
+	{
+	TRAP_IGNORE(NewL(aServiceId, aMobilityManager));
+	}
+
+/**
+Deletes a test framework.
+Static method.
+
+@param aMobilityManager Associated mobility manager
+*/	
+EXPORT_C void CImMobilityTestFramework::Delete(CImMobilityManager& aMobilityManager)
+	{
+	CImMobilityTestTls* testTls = static_cast<CImMobilityTestTls*>(Dll::Tls());
+
+	if (testTls)
+		{
+		TBool lastOne = EFalse;
+		CImMobilityTestFramework* framework = testTls->RemoveFramework(aMobilityManager, lastOne);
+
+		if (framework)
+			{
+			delete framework;
+			}
+
+		if (lastOne)
+			{
+			delete testTls;
+			}
+		}
+	}
+
+/**
+Called by an MTM when it reaches a specific operation state.
+Static method.
+
+@param aServiceId Service ID of MTM
+@param aMtmState MTM state
+*/
+EXPORT_C void CImMobilityTestFramework::MtmState(TMsvId aServiceId, TImMobilityTestMtmState aMtmState)
+	{
+	CImMobilityTestTls* testTls = static_cast<CImMobilityTestTls*>(Dll::Tls());
+
+	if (testTls)
+		{
+		CImMobilityTestFramework* framework = testTls->GetFramework(aServiceId);
+		if (framework)
+			{
+			// Flag the call
+			RProperty& property = framework->iPropertyWatcher->Property();
+   		property.Set(aMtmState);
+			}
+		}
+	}
+	
+/**
+Called by the net test stub to determine the service id.
+Static method.
+
+@param aProtocol reference to MMobilityProtocolResp
+*/
+EXPORT_C TMsvId CImMobilityTestFramework::GetServiceId(MMobilityProtocolResp& aProtocol)
+	{
+	CImMobilityTestTls* testTls = static_cast<CImMobilityTestTls*>(Dll::Tls());
+
+	if (testTls)
+		{
+		CImMobilityTestFramework* framework = testTls->GetFramework(aProtocol);
+		if (framework)
+			{
+			return framework->ServiceId();
+			}
+		}
+
+	return KErrNotFound;
+	}
+
+/**
+Factory constructor.
+Static method.
+
+@param aServiceId Service ID of associated MTM
+@param aMobilityManager Associated mobility manager
+*/
+void CImMobilityTestFramework::NewL(TMsvId aServiceId, CImMobilityManager& aMobilityManager)
+	{
+	CImMobilityTestTls* testTls = CImMobilityTestTls::NewL();
+
+	CImMobilityTestFramework* self = new (ELeave) CImMobilityTestFramework(aServiceId, aMobilityManager);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	// Store framework. Ownership is passed.
+	testTls->AddFrameworkL(*self);
+	}
+
+/**
+Class constructor.
+
+@param aServiceId Service ID of associated MTM
+@param aMobilityManager Associated mobility manager
+*/
+CImMobilityTestFramework::CImMobilityTestFramework(TMsvId aServiceId, CImMobilityManager& aMobilityManager) :
+ iMobilityManager(aMobilityManager),
+ iServiceId(aServiceId)
+	{
+	}
+
+/**
+Second phase constructor
+*/
+void CImMobilityTestFramework::ConstructL()
+	{
+	iPropertyWatcher = CMsgTestPropertyWatcher::NewL(KPropertyCatMsgTestUtilityServer2, EMyPropertyCounter, *this);
+	}
+
+/**
+Class destructor
+*/
+CImMobilityTestFramework::~CImMobilityTestFramework()
+	{
+	delete iPropertyWatcher;
+	}
+
+/**
+Returns service ID of associated MTM
+
+@return Service ID of MTM
+*/
+TMsvId CImMobilityTestFramework::ServiceId()
+	{
+	return iServiceId;
+	}
+
+/**
+Returns associated mobility maanger
+
+@return Mobility manager
+*/
+CImMobilityManager& CImMobilityTestFramework::MobilityManager()
+	{
+	return iMobilityManager;
+	}
+
+void CImMobilityTestFramework::HandleEventL(RProperty& /*aProperty*/, TUint /*aKey*/)
+	{
+	//Don't need to respond to events here.
+	}