--- /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);
+ }