testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/utils/inc/testexecuteserverutils.h
changeset 2 8bb370ba6d1d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/utils/inc/testexecuteserverutils.h	Fri Apr 09 10:46:28 2010 +0800
@@ -0,0 +1,270 @@
+/*
+* 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:  
+* Definitions of classes local to TestExecuteUtils
+*
+*/
+
+
+
+/**
+ @file TestExecuteServerUtils.h
+*/
+
+#if (!defined __SERVER_UTILS_H__)
+#define __SERVER_UTILS_H__
+#include <test/testexecuteserverbase.h>
+#include <test/testexecutestepbase.h>
+
+class CActiveBase : public CActive
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline 	TRequestStatus& Status();
+	inline 	void SetActive();
+	inline	void Kick();
+	inline	void Prime();
+	inline	void Complete(TInt aCode);
+	inline	virtual ~CActiveBase();
+	inline  TDes& Error();
+	inline TBool& TimedOut();
+protected:
+	inline	CActiveBase();
+	TBuf<KMaxTestExecuteNameLength> iError;
+	TBool iTimeOut;
+	};
+
+class CControlBase : public CActiveBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CControlBase(CTestServer& aServer);
+	inline void DoCancel();
+	virtual void Stop() =0;
+	inline CTestServer& Server();
+	inline TDes& Args();
+	inline RMessage2& Message();
+	inline RThread& WorkerThread();
+private:
+	CTestServer&						iServer;
+	RMessage2							iMessage;
+	RThread								iWorkerThread;
+	TBuf<KMaxTestExecuteCommandLength>	iArgs;
+	};
+	
+	
+class CStepControlBase : public CControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CStepControlBase(CTestServer& aServer);
+	virtual void StartL(const RMessage2& aMessage,const TDesC& aStepArgs) = 0;
+	inline TDes& StepName();
+private:
+	RMessage2 iMessage;
+	RThread iWorkerThread;
+	TBuf<KMaxTestStepNameLength> iStepName;
+	};
+
+class CBlockControlBase : public CControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CBlockControlBase(CTestServer& aServer);
+	~CBlockControlBase();
+	virtual void StartL(const RMessage2& aMessage,const TDesC& aArgs, const TDesC8& aBlockArrayPtr) = 0;
+	virtual TTEFItemArray*	BlockArray() const;
+
+protected:
+	virtual void			CreateBlockArrayL( const TDesC8& aBlockArrayPtr );
+	virtual HBufC8*			CreateBlockArrayPckgLC();
+	
+private:
+	TTEFItemArray*						iBlockArray;
+	RMessage2							iMessage;
+	RThread								iWorkerThread;
+	TBuf<KMaxTestExecuteCommandLength>	iBlockArgs;
+	};
+
+class CStepControl : public CStepControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	CStepControl(CTestServer& aServer, const TDesC& aStepName);
+	void RunL();
+	void StartL(const RMessage2& aMessage,const TDesC& aStepArgs);
+	void Stop();
+	~CStepControl();
+private:
+	};
+
+class CBlockControl : public CBlockControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	CBlockControl(CTestServer& aServer);
+	void RunL();
+	void StartL(const RMessage2& aMessage,const TDesC& aArgs, const TDesC8& aBlockArrayPtr);
+	void Stop();
+	~CBlockControl();
+	};
+
+class CWorkerMonitor;
+class CWorkerControl;
+class CPersistentStepControl : public CStepControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	CPersistentStepControl(CTestServer& aServer);
+	virtual ~CPersistentStepControl();
+	void StartL(const RMessage2& aMessage,const TDesC& aStepArgs);
+	void RunL();
+	void Stop();
+	inline void ChildCompletion();
+private:
+	CWorkerControl* iWorkerControl;
+	CWorkerMonitor* iWorkerMonitor;
+	TBool iInitialised;
+	};
+
+class CBlockWorkerControl;
+class CPersistentBlockControl : public CBlockControlBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	CPersistentBlockControl(CTestServer& aServer);
+	virtual ~CPersistentBlockControl();
+	void StartL(const RMessage2& aMessage,const TDesC& aArgs, const TDesC8& aBlockArrayPtr);
+	void RunL();
+	void Stop();
+	inline void ChildCompletion();
+
+private:
+	CBlockWorkerControl* 	iWorkerControl;
+	CWorkerMonitor* 		iWorkerMonitor;
+	TBool					iInitialised;
+	};
+
+class CWorkerMonitor : public CActiveBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CWorkerMonitor(TRequestStatus& aParentStatus);
+	inline virtual ~CWorkerMonitor();
+	inline void RunL();
+	inline void DoCancel();
+private:
+	TRequestStatus& iParentStatus;
+	};
+
+class CWorkerControl : public CActiveBase
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CWorkerControl(CTestServer& aServer,TRequestStatus& aParentStatus);
+	inline ~CWorkerControl();
+	inline void RunL();
+	inline void DoCancel();
+	inline TRequestStatus& WorkerStatus();
+	inline RThread& ControllerThread();
+	inline RSemaphore& Semaphore();
+	inline CTestServer& Server();
+	inline TInt& Result();
+	inline TPtrC& Args();
+	inline TPtrC& StepName();
+	inline TDes& PersistentError();
+	//defect 116046
+	inline void SetCleanupPtr(CTrapCleanup* aCleanup);
+	inline void Cleanup();
+	//END defect 116046
+private:
+	CTestServer& iServer;
+	TRequestStatus& iParentStatus;
+	RSemaphore iSemaphore;
+	TRequestStatus iWorkerStatus;
+	RThread iControllerThread;
+	TPtrC iArgs;
+	TPtrC iStepName;
+	TInt iResult;
+	TBuf<KMaxTestExecuteNameLength> iPersistentError;
+	//defect 116046
+	CTrapCleanup* iCleanup;
+	//END defect 116046
+	};
+
+class CBlockWorkerControl : public CWorkerControl
+/**
+@internalTechnology
+@test
+*/
+	{
+public:
+	inline CBlockWorkerControl(CTestServer& aServer,TRequestStatus& iParentStatus );
+	inline ~CBlockWorkerControl();
+	inline void				SetBlockArray( TTEFItemArray* aBlockArray );
+	inline TTEFItemArray*	BlockArray() const;
+
+private:
+	TTEFItemArray*			iBlockArray;
+	};
+	
+class CTestSession : public CSession2
+/**
+@publishedPartner
+@test
+*/
+	{
+public:
+	IMPORT_C CTestSession();
+	IMPORT_C virtual ~CTestSession();
+	IMPORT_C virtual void ServiceL(const RMessage2& aMessage);
+private:
+	CPersistentStepControl*		iPersistentStepControl;
+	CPersistentBlockControl*	iPersistentBlockControl;
+	TTEFItemArray*				iBlockArray;
+	};
+
+#include <test/testexecuteserverutils.inl>
+#endif
+