buildverification/smoketest/Utils/Src/SmokeTestSecureFSserver.cpp
branchGCC_SURGE
changeset 17 03d9ade4748d
parent 14 5d7fec11a5ce
parent 15 5b5908ec640f
--- a/buildverification/smoketest/Utils/Src/SmokeTestSecureFSserver.cpp	Fri Jun 11 16:24:17 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,393 +0,0 @@
-// 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:
-// TestServer - server implementation
-// 
-//
-
-#include "e32std.h"
-#include "SmokeTestSecureFSserver.h"
-#include <f32file.h>
-
-TRequestStatus aStatus;
-TRequestStatus* aSt = &aStatus;
-
-
-inline CTestSecureFSshutdown::CTestSecureFSshutdown()
-	:CTimer(-1)
-	{CActiveScheduler::Add(this);}
-inline void CTestSecureFSshutdown::ConstructL()
-	{CTimer::ConstructL();}
-inline void CTestSecureFSshutdown::Start()
-	{After(KMyShutdownDelay);}
-
-inline CTestSecureFSserver::CTestSecureFSserver()
-	:CServer2(0,ESharableSessions)
-	{}
-
-inline CTestSecureFSSession::CTestSecureFSSession()
-	{}
-inline CTestSecureFSserver& CTestSecureFSSession::Server()
-	{return *static_cast<CTestSecureFSserver*>(const_cast<CServer2*>(CSession2::Server()));}
-inline TBool CTestSecureFSSession::ReceivePending() const
-	{return !iReceive.IsNull();}
-
-//
-
-void CTestSecureFSSession::CreateL()
-//
-// 2nd phase construct for sessions - called by the CServer framework
-//
-	{
-	//RDebug::Print(_L("Server::CTestSecureFSSession::CreateL - start"));
-
-	Server().AddSession();
-	//RDebug::Print(_L("Server::CTestSecureFSSession::CreateL - end"));
-	}
-
-CTestSecureFSSession::~CTestSecureFSSession()
-	{
-	Server().DropSession();
-	}
-
-void CTestSecureFSSession::Send(const TDesC& aMessage)
-//
-// Deliver the message to the client, truncating if required
-// If the write fails, panic the client, not the sender
-//
-	{
-	if (ReceivePending())
-		{
-		TPtrC m(aMessage);
-		if (iReceive.Int1()<aMessage.Length())
-			m.Set(m.Left(iReceive.Int1()));
-		TInt r=iReceive.Write(0,m);
-		if (r==KErrNone)
-			iReceive.Complete(KErrNone);
-		else
-			PanicClient(iReceive,EPanicBadDescriptor);
-		}
-	}
-
-void CTestSecureFSSession::ServiceL(const RMessage2& aMessage)
-//
-// Handle a client request.
-// Leaving is handled by CMyServer::ServiceError() which reports
-// the error code to the client
-//
-	{
-	TInt result = KErrNone;
-
-	switch (aMessage.Function())
-		{
-	case ETestIpcSetHomeTime:
-		DoSetHomeTime(aMessage);
-		break;
-
-	case ETestIpcDeleteFile:
-		result = DoDeleteFileL(aMessage);
-		break;
-	
-	case ETestIpcKillProcess:
-		DoKillProcess(aMessage);
-		break;
-
-	case ETestIpcChangeLocale:
-		result = DoChangeLocale(aMessage);
-		break;
-		
-	case ETestIpcCheckForFile:
-	    result = DoCheckForFile(aMessage);
-	    break;
-	    
-	case ETestIpcCopyFile:
-	    result = DoCopyFile(aMessage);
-	    break; 
-	    
-	case ETestIpcSetUpFbs:
-	    DoSetUpFbs(); 
-	    break;
-	     
-	default:
-		PanicClient(aMessage,EPanicIllegalFunction);
-		break;
-		}
-	aMessage.Complete(result);
-	}
-
-//
-
-void CTestSecureFSSession::DoSetHomeTime(const RMessage2& aMessage)
-	{
-	TPckgBuf<TTime> pckg;
-	aMessage.Read(0,pckg);
-	User::SetHomeTime(pckg());
-	}
-
-TInt CTestSecureFSSession::DoDeleteFileL(const RMessage2& aMessage)
-	{
-	RFs fs;
-	TFileName* const fileName=new(ELeave) TFileName;
-	CleanupStack::PushL(fileName);
-	User::LeaveIfError(fs.Connect());
-
-	CleanupClosePushL(fs);
-	aMessage.ReadL(0,*fileName);
-	TInt err=fs.Delete(*fileName);
-	if (!(err==KErrNone || err==KErrNotFound || err==KErrPathNotFound)) // ignore not found error
-		{
-		User::Leave(err);
-		}
-	CleanupStack::PopAndDestroy(&fs);
-	CleanupStack::PopAndDestroy(fileName);
-	return err;
-	}
-
-void CTestSecureFSSession::DoKillProcess(const RMessage2& aMessage)
-	{
-	TFullName* name = new(ELeave) TFullName;
-	CleanupStack::PushL(name);
-
-	aMessage.ReadL(0,*name);
-	TFindProcess* finder = new (ELeave) TFindProcess(*name);
-	CleanupStack::PushL(finder);
-	RProcess* process = new (ELeave) RProcess;
-	CleanupStack::PushL(process);
-
-	if (finder->Next(*name) == KErrNone)
-		{
-		if (process->Open(*name) == KErrNone)
-			{
-			process->Kill(KErrNone);
-			}
-		}
-
-	if (process != NULL)
-		{
-		process->Close();
-		}
-	CleanupStack::PopAndDestroy(process);
-	CleanupStack::PopAndDestroy(finder);
-	CleanupStack::PopAndDestroy(name);		
-	}
-
-
-TInt CTestSecureFSSession::DoChangeLocale(const RMessage2& aMessage)
-	{
-	TBuf<50> locname;
-	TInt result;
-	aMessage.ReadL(0,locname);
-
-	result = UserSvr::ChangeLocale(locname);
-
-	return result;
-	}
-
-TInt CTestSecureFSSession::DoCheckForFile(const RMessage2& aMessage)
-{
-    RFs fs;
-    TInt err;
-	TFileName* const fileName=new(ELeave) TFileName;
-	CleanupStack::PushL(fileName);
-	User::LeaveIfError(fs.Connect());
-
-	CleanupClosePushL(fs);
-	aMessage.ReadL(0,*fileName);
-	
-	TUint attribs;
-	err=fs.Att(*fileName, attribs);
-	fs.Close();
-		
-	CleanupStack::PopAndDestroy(&fs);
-	CleanupStack::PopAndDestroy(fileName);
-	return err;
-	
-}
-
-TInt CTestSecureFSSession::DoCopyFile(const RMessage2& aMessage)
-{
-
-    RFs fs;
-    TInt result;
- 
-    User::LeaveIfError(fs.Connect());
-    CleanupClosePushL(fs);
-
-    TFileName fileSource;
-    TFileName fileDest;
-
-    aMessage.ReadL(0,fileSource);
-    aMessage.ReadL(1,fileDest);
-    	   
-	CFileMan* fileMan = NULL;
-	
-	fileMan = CFileMan::NewL(fs);
-	CleanupStack::PushL( fileMan );
-	
-	fs.MkDirAll(fileDest);
-	result = fileMan->Copy( fileSource, fileDest, CFileMan::EOverWrite );
-	
-	User::LeaveIfError(fs.Connect());
-	fs.SetAtt(fileDest,KEntryAttNormal,KEntryAttReadOnly);
-	fs.Close();
-
-    CleanupStack::PopAndDestroy(fileMan);
-    CleanupStack::PopAndDestroy(&fs);
-	return result;
-	
-}
-
-void CTestSecureFSSession::DoSetUpFbs()
-{
-//	FbsStartup();
-//    User::LeaveIfError( RFbsSession::Connect() );
-//   CleanupStack::PushL( TCleanupItem( TCleanupOperation(&RFbsSession::Disconnect ), NULL ) );
-}
-
-//
-
-void CTestSecureFSSession::ServiceError(const RMessage2& aMessage,TInt aError)
-//
-// Handle an error from CMySession::ServiceL()
-// A bad descriptor error implies a badly programmed client, so panic it;
-// otherwise use the default handling (report the error to the client)
-//
-	{
-	if (aError==KErrBadDescriptor)
-		PanicClient(aMessage,EPanicBadDescriptor);
-	CSession2::ServiceError(aMessage,aError);
-	}
-
-void CTestSecureFSshutdown::RunL()
-//
-// Initiate server exit when the timer expires
-//
-	{
-	CActiveScheduler::Stop();
-	}
-
-CServer2* CTestSecureFSserver::NewLC()
-	{
-	CTestSecureFSserver* self=new(ELeave) CTestSecureFSserver;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-	}
-
-void CTestSecureFSserver::ConstructL()
-//
-// 2nd phase construction - ensure the timer and server objects are running
-//
-	{
-	StartL(KTestServerName);
-	iShutdown.ConstructL();
-	// ensure that the server still exits even if the 1st client fails to connect
-	iShutdown.Start();
-	}
-
-
-CSession2* CTestSecureFSserver::NewSessionL(const TVersion&,const RMessage2&) const
-//
-// Cretae a new client session. This should really check the version number.
-//
-	{
-	return new(ELeave) CTestSecureFSSession();
-	}
-
-void CTestSecureFSserver::AddSession()
-//
-// A new session is being created
-// Cancel the shutdown timer if it was running
-//
-	{
-	++iSessionCount;
-	iShutdown.Cancel();
-	}
-
-void CTestSecureFSserver::DropSession()
-//
-// A session is being destroyed
-// Start the shutdown timer if it is the last session.
-//
-	{
-	if (--iSessionCount==0)
-		iShutdown.Start();
-	}
-
-void CTestSecureFSserver::Send(const TDesC& aMessage)
-//
-// Pass on the signal to all clients
-//
-	{
-	iSessionIter.SetToFirst();
-	CSession2* s;
-	while ((s=iSessionIter++)!=0)
-		static_cast<CTestSecureFSSession*>(s)->Send(aMessage);
-	}
-
-void PanicClient(const RMessage2& aMessage,TTestPanic aPanic)
-//
-// RMessage::Panic() also completes the message. This is:
-// (a) important for efficient cleanup within the kernel
-// (b) a problem if the message is completed a second time
-//
-	{
-	_LIT(KPanic,"TestServer");
- 	aMessage.Panic(KPanic,aPanic);
-	}
-
-
-
-/**
-Perform all server initialisation, in particular creation of the
-scheduler and server and then run the scheduler
-*/
-
-static void RunServerL()
-	{
-	// naming the server thread after the server helps to debug panics
-  	User::LeaveIfError(RThread::RenameMe(KTestServerName));
-	// create and install the active scheduler we need
-	CActiveScheduler* s=new(ELeave) CActiveScheduler;
-	CleanupStack::PushL(s);
-	CActiveScheduler::Install(s);
-	CTestSecureFSserver::NewLC(); // create the server (leave it on the cleanup stack)
-	RProcess::Rendezvous(KErrNone);
-	CActiveScheduler::Start();
-	CleanupStack::PopAndDestroy(2); 	// Cleanup the server and scheduler
-	}
-
-
-
-
-TInt E32Main()
-//
-// Server process entry-point
-//
-	{
-	__UHEAP_MARK;
-	//
-	RDebug::Print(_L("Server::E32Main Version 0.0.0"));
-	CTrapCleanup* cleanup=CTrapCleanup::New();
-	TInt r=KErrNoMemory;
-	if (cleanup)
-		{
-		TRAP(r,RunServerL());
-		delete cleanup;
-		}
-	//
-	__UHEAP_MARKEND;
-	return r;
-	}
-
-