testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/utils/src/testserver2.cpp
changeset 2 8bb370ba6d1d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/utils/src/testserver2.cpp	Fri Apr 09 10:46:28 2010 +0800
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2005-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
+* This contains CTestServer2
+*
+*/
+
+
+
+/**
+ @prototype
+ @test
+*/
+
+//	User Includes
+#include "testserver2.h"
+
+TUint32 CTestServer2::Hash(const TDataDictionaryName& aName)
+	{
+	return DefaultHash::Des16(aName);
+	}
+
+TBool CTestServer2::Identity(const TDataDictionaryName& aName1, const TDataDictionaryName& aName2)
+	{
+	return aName1.Compare(aName2)==0;
+	}
+
+EXPORT_C CTestServer2::CTestServer2()
+/*
+ * Constructor
+ */
+:	CTestServer()
+,	iStore(Hash, Identity)
+,	iActiveScheduler(NULL)
+	{
+	}
+
+EXPORT_C CTestServer2::~CTestServer2()
+/*
+ * Destructor
+ */
+	{
+	TDataIter	iter(iStore);
+	iter.Reset();
+	for ( const TDataElement* data=iter.NextValue(); data!=NULL; data=iter.NextValue() )
+		{
+		data->iCleanupOperation(data->iAny);
+		}
+	iStore.Close();
+
+	if( iActiveScheduler )
+		{
+		delete iActiveScheduler;
+		iActiveScheduler=NULL;
+		}
+	}
+
+EXPORT_C void CTestServer2::ConstructL()
+/*
+ * Second phase of construction
+ */
+	{
+	RProcess	handle = RProcess();
+	TParsePtrC	serverName(handle.FileName());
+	CTestServer::ConstructL(serverName.Name());
+	}
+
+// MTEFCallback::MSharedData implementation
+EXPORT_C void CTestServer2::CreateActiveSchedulerL()
+	{
+	if( iActiveScheduler==NULL )
+		{
+		iActiveScheduler=new (ELeave) CActiveScheduler();
+		CActiveScheduler::Install(iActiveScheduler);
+		}
+	}
+
+// MTEFCallback::MSharedData implementation
+EXPORT_C void CTestServer2::DeleteActiveSchedulerL()
+	{
+	if( iActiveScheduler )
+		{
+		delete iActiveScheduler;
+		iActiveScheduler=NULL;
+		}
+	}
+
+// MTEFCallback::MSharedData implementation
+EXPORT_C TAny* CTestServer2::GetObjectAndOwnL(const TDesC& aName)
+	{
+	TDataElement*	element=iStore.Find(aName);
+	TAny*			ret=NULL;
+
+	if ( element != NULL )
+		{
+		ret=element->iAny;
+		iStore.Remove(aName);
+		}
+	else
+		{
+		User::Leave(KErrNotFound);
+		}
+
+	return ret;
+	}
+
+// MTEFCallback::MSharedData implementation
+EXPORT_C void CTestServer2::PutAndDisownL(const TDesC& aName, TAny* aAny, TCleanupOperation aCleanupOperation)
+	{
+	TDataElement*	element=iStore.Find(aName);
+	//	Ensure name does not already exist
+	if ( element!=NULL )
+		{
+		User::Leave(KErrAlreadyExists);
+		}
+
+	TDataIter	iter(iStore);
+	iter.Reset();
+	for ( const TDataElement* data=iter.NextValue(); data!=NULL; data=iter.NextValue() )
+		{
+		if ( aAny == data->iAny )
+			{
+			User::Leave(KErrAlreadyExists);
+			}
+		}
+
+	TDataElement	newElement={aAny, aCleanupOperation};
+	iStore.InsertL(aName, newElement);
+	}
+
+
+// CTestServer implementation
+EXPORT_C CTestStep* CTestServer2::CreateTestStep(const TDesC& /*aStepName*/)
+	{
+	CTestStep* step = NULL;
+	return step;
+	}