cryptomgmtlibs/securitycommonutils/test/source/scstestclient/rscstestsession.cpp
changeset 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitycommonutils/test/source/scstestclient/rscstestsession.cpp	Thu Sep 10 14:01:51 2009 +0300
@@ -0,0 +1,139 @@
+/*
+* 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 "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: 
+* Client-side API tests an implementation of the session count server
+* by implementing a handle to a session.
+*
+*/
+
+
+/**
+ @file
+*/
+
+
+#include "scstestclient.h"
+#include "scstestcommon.h"
+
+
+EXPORT_C RScsTestSession::RScsTestSession()
+/**
+	This constructor defines a single point from which
+	the base class constructor is called.
+ */
+:	RScsClientBase()
+	{
+	// empty.
+	}
+
+EXPORT_C TInt RScsTestSession::Connect()
+/**
+	Connect to the SCS test server using the default version.
+
+	@return					Symbian OS error code where KErrNone indicates
+							success and any other value indicates failure.
+ */
+	{
+	const TVersion serverVersion = ScsTestImpl::Version();
+	return Connect(serverVersion);
+	}
+
+EXPORT_C TInt RScsTestSession::Connect(const TVersion& aVersion)
+/**
+	Connect to the SCS test server with the supplied version.  This
+	function is defined to test the version checking functionality in
+	CScsServer.  A client API would normally just ask for a server
+	version which at least matches its own.
+
+	@param	aVersion		Server version to ask for.
+	@return					Symbian OS error code where KErrNone indicates
+							success and any other value indicates failure.
+ */
+	{
+	const TUidType serverFullUid = ScsTestImpl::ServerImageFullUid();
+	
+	TInt r = RScsClientBase::Connect(
+		ScsTestImpl::KServerName, aVersion,
+		ScsTestImpl::KServerImageName, serverFullUid);
+	
+	return r;
+	}
+
+EXPORT_C TInt RScsTestSession::SendCustomFunction(TInt aFunction)
+/**
+	Sends the supplied function identifier to the server with
+	no IPC arguments.  This function should be used to test the
+	server can handle an invalid SCS or session function.
+	
+	@param	aFunction		Function identifier to send to server-side
+							session.  This is sent as-is, and can use the
+							SCS field.
+ */
+	{
+	return SendReceive(aFunction);
+	}
+
+EXPORT_C TInt RScsTestSession::NukeServer()
+/**
+	Calls an synchronous function which causes the server to panic
+*/
+	{
+	return CallSessionFunction(ScsTestImpl::ESessNukeServer);
+	}
+
+EXPORT_C TInt RScsTestSession::Double(TInt& aValue)
+/**
+	Calls a synchronous session function to ensure the function
+	call is routed to the session subclass on the server side.
+	
+	@param	aValue			An arbitrary integer.  On completion
+							this should be double its entry value.
+	@return					Symbian OS error code where KErrNone indicates
+							success and any other value indicates failure.
+ */
+	{
+	TPckg<TInt> valPckg(aValue);
+	TIpcArgs ipc(&valPckg);
+	return CallSessionFunction(ScsTestImpl::ESessDouble, ipc);
+	}
+
+EXPORT_C void RScsTestSession::Treble(TDes8& aValue, TRequestStatus& aStatus)
+/**
+	Calls an asynchronous function to test the SCS can successfully manage
+	asynchronous requests.
+	
+	@param	aValue			Describes an integer, e.g. TPckgBuf<TInt>.
+							The descriptor must be supplied by the caller
+							instead of being constructed in this function
+							because it must persist until the request has
+							been completed.
+	@param	aStatus			The server will complete this status object
+							when it has handled the function.
+	@see CancelTreble
+ */
+	{
+	TIpcArgs ipc(&aValue);
+	CallSessionFunction(ScsTestImpl::ESessTreble, ipc, aStatus);
+	}
+
+EXPORT_C void RScsTestSession::CancelTreble()
+/**
+	Cancel an outstanding request set up with Treble.  This function has
+	no effect if there is no outstanding request.
+
+	@see Treble
+ */
+	{
+	CancelSessionFunction(ScsTestImpl::ESessTreble);
+	}