ximpfw/tsrc/tsrcutils/testcaseutils/prfwsrvtestclient.cpp
changeset 0 e6b17d312c8b
--- /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 <e32base.h>
+#include <s32mem.h>
+
+
+// ======== 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
+