diff -r 000000000000 -r e6b17d312c8b ximpfw/tsrc/tsrcutils/testcaseutils/prfwsrvtestclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/tsrc/tsrcutils/testcaseutils/prfwsrvtestclient.cpp Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,184 @@ +/* +* Copyright (c) 2006 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: XIMP Framework server test client implementation +* +*/ + + +// INCLUDE FILES +#include "ximpbase.h" +#include "ximpsrvtestclient.h" +#include "ximpprocessstarter.h" +#include "ximprootserverdefs.h" +#include "ximpserverdefs.h" +#include "prfwtestserverdefs.h" + +#include +#include + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// RXIMPSrvRootClient::RXIMPSrvRootClient() +// --------------------------------------------------------------------------- +// +RXIMPSrvTestClient::RXIMPSrvTestClient() + { + } + + +// --------------------------------------------------------------------------- +// RXIMPSrvRootClient::Connect() +// --------------------------------------------------------------------------- +// +TInt RXIMPSrvTestClient::Connect() + { + TFileName fullExePath; + XIMPProcessStarter::FullExePathForClienLocation( NRootSrv::NName::KExecutable, + fullExePath ); + + TInt ret = XIMPProcessStarter::ConnectToServer( fullExePath, + KNullDesC, + NULL, + *this, + NRootSrv::NName::KSymbianServer, + TVersion( NRootSrv::NVersion::KMajor, + NRootSrv::NVersion::KMinor, + NRootSrv::NVersion::KBuild ), + NRootSrv::NRequest::KMsgSlotCount ); + + if ( ret == KErrNone ) + { + TIpcArgs msgArgs; + ret = SendReceive( NTestSrv::NRequest::EInstantiateTestSession, msgArgs ); + } + + return ret; + } + +// --------------------------------------------------------------------------- +// RXIMPSrvContextClient::Connect() +// --------------------------------------------------------------------------- +// +void RXIMPSrvTestClient::ConnectL( TUid aProtocolImpUid ) + { + // create the server name: "!XIMPCtxSrv9bde667a" + HBufC* serverName = HBufC::NewLC( NXIMPSrv::NName::KSymbianServer().Length() + + NXIMPSrv::NStartupParam::KProtocolUidMaxLen + + 1 ); + + serverName->Des().Copy( NXIMPSrv::NName::KSymbianServer ); + serverName->Des().AppendNumFixedWidth( aProtocolImpUid.iUid, + EHex, + NXIMPSrv::NStartupParam::KProtocolUidMaxLen ); + + // Pass the UID to server side. + // For security reasons it was not allowed to pass the complete + // server name descriptor but just the UID part + RArray< TXIMPProcessStartupParam > params; + CleanupClosePushL( params ); + + TXIMPProcessStartupParam paramUid; + paramUid.Set( NXIMPSrv::NStartupParam::KProtocolUidIndex, + aProtocolImpUid.iUid ); + + User::LeaveIfError( params.Append( paramUid ) ); + TArray< TXIMPProcessStartupParam > array = params.Array(); + + + //Get path to correct exe to launch + TFileName fullExePath; + XIMPProcessStarter::FullExePathForClienLocation( NXIMPSrv::NName::KExecutable, + fullExePath ); + + //Create a connection + TInt ret = XIMPProcessStarter::ConnectToServer( fullExePath, + KNullDesC, + &array, + *this, + *serverName, + TVersion( NXIMPSrv::NVersion::KMajor, + NXIMPSrv::NVersion::KMinor, + NXIMPSrv::NVersion::KBuild ), + NXIMPSrv::NRequest::KMsgSlotCount ); + User::LeaveIfError( ret ); + CleanupStack::PopAndDestroy( 2, serverName ); // params, serverName + + //Mutate the server side session to correct type + ret = SendReceive( NTestSrv::NRequest::EInstantiateTestSession ); + User::LeaveIfError( ret ); + } + +// --------------------------------------------------------------------------- +// RXIMPSrvRootClient::Close() +// --------------------------------------------------------------------------- +// +void RXIMPSrvTestClient::Close() + { + RSessionBase::Close(); + } + + +// --------------------------------------------------------------------------- +// RXIMPSrvTestClient::SetAllocFailureL() +// --------------------------------------------------------------------------- +// +void RXIMPSrvTestClient::SetAllocFailure( TInt aRate ) + { + TPckgBuf< TInt > rateBuf( aRate ); + TIpcArgs msgArgs; + msgArgs.Set( 0, &rateBuf ); + + SendReceive( NTestSrv::NRequest::ESetAllocFail, msgArgs ); + } + +// --------------------------------------------------------------------------- +// RXIMPSrvRootClient::GetLastError() +// --------------------------------------------------------------------------- +// +NTestSrv::SErrorData RXIMPSrvTestClient::FetchErrorData() + { + NTestSrv::SErrorData errorData; + TPckgBuf< NTestSrv::SErrorData > errorBuf( errorData ); + TIpcArgs msgArgs; + msgArgs.Set( 0, &errorBuf ); + TInt retVal = SendReceive( NTestSrv::NRequest::EPrepareErrorData, msgArgs ); + __ASSERT_ALWAYS( retVal >= 0, User::Panic( _L( "SendReceive failed" ), retVal ) ); + errorData = errorBuf(); + return errorData; +// return GetData( NTestSrv::NRequest::EPrepareErrorData ); + } + +// --------------------------------------------------------------------------- +// RXIMPSrvRootClient::GetDataL() +// --------------------------------------------------------------------------- +// +NTestSrv::SErrorData RXIMPSrvTestClient::GetData( TInt aMsg ) + { +/* TInt bufSize = SendReceive( aMsg ); + __ASSERT_ALWAYS( bufSize == NTestSrv::KErrorDataSize, User::Panic( _L( "Wrong bufsize" ), KErrArgument ) ); + + NTestSrv::SErrorData errorData; + TPckgBuf< NTestSrv::SErrorData > errorBuf( errorData ); + TIpcArgs msgArgs; + msgArgs.Set( 0, &errorBuf ); + __ASSERT_ALWAYS( SendReceive( NTestSrv::NRequest::EFetchData, msgArgs ) >= 0, + User::Panic( _L( "SendReceive failed" ) ) ); + return errorData;*/ + } + + +// End of file +