diff -r 3406c99bc375 -r 07b41fa8d1dd hti/HtiCommPlugins/HtiIPCommPlugin/src/HtiIPCommServerClient.cpp --- a/hti/HtiCommPlugins/HtiIPCommPlugin/src/HtiIPCommServerClient.cpp Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -/* -* Copyright (c) 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: Implementation of the client side interface to HtiIPCommServer -* -*/ - - -// INCLUDE FILES -#include -#include - -#include "HtiIPCommServerCommon.h" -#include "HtiIPCommServerClient.h" - -// CONSTANTS -const TUint KIPCommServerDefaultMessageSlots = 4; // Read, write, readCancel, writeCancel - -//--------------------------------------------------------------------------- -static TInt StartServer() - { - const TUidType serverUid( KNullUid, KNullUid, KIPCommServerUid3 ); - - RProcess server; - TInt r = server.Create( KIPCommServerName, KNullDesC, serverUid); - if ( r != KErrNone ) - return r; - - TRequestStatus stat; - server.Rendezvous( stat ); - if ( stat != KRequestPending ) - server.Kill(0); // abort startup - else - server.Resume(); // logon OK - start the server - - User::WaitForRequest( stat ); //wait for start or death - - // we can't use the 'exit reason' if the server panicked as this - // is the panic 'reason' and may be '0' which cannot be distinguished - // from KErrNone - r = ( server.ExitType() == EExitPanic ) ? KErrGeneral : stat.Int(); - server.Close(); - return r; - } - -//--------------------------------------------------------------------------- -EXPORT_C RHtiIPCommServer::RHtiIPCommServer() - { - } - -//--------------------------------------------------------------------------- -EXPORT_C TInt RHtiIPCommServer::Connect() - { - HTI_LOG_TEXT( "RHtiIPCommServer::Connect" ); - - // Connect to the server, attempting to start it if necessary - TInt retry=2; - for (;;) - { - TInt r = CreateSession( KIPCommServerName, - Version(), - KIPCommServerDefaultMessageSlots ); - HTI_LOG_FORMAT( "CreateSession %d", r ); - if ( r != KErrNotFound && r != KErrServerTerminated ) - return r; - - if (--retry==0) - return r; - - r = StartServer(); - HTI_LOG_FORMAT( "StartServer %d", r ); - if ( r != KErrNone && r != KErrAlreadyExists ) - return r; - } - } - -//--------------------------------------------------------------------------- -EXPORT_C void RHtiIPCommServer::Close() - { - HTI_LOG_FUNC_IN( "RHtiIPCommServer::Close" ); - - // Use thread finder to find the server thread - TFullName threadName; - TFullName matchPattern; - matchPattern.Append( _L( "*" ) ); - matchPattern.Append( KIPCommServerName ); - matchPattern.Append( _L( "*" ) ); - - TFindThread threadFinder; - threadFinder.Find( matchPattern ); - TInt err = threadFinder.Next( threadName ); - if ( err ) - { - HTI_LOG_FORMAT( "RHtiIPCommServer::Close: Failed to find server thread: %d", err ); - return; - } - - HTI_LOG_TEXT( "RHtiIPCommServer::Close: Found server thread:" ); - HTI_LOG_DES( threadName ); - - RThread thread; - err = thread.Open( threadName ); - if ( err ) - { - HTI_LOG_FORMAT( "RHtiIPCommServer::Close: Failed to open server thread: %d", err ); - } - else - { - // Close this session. Causes a call to ~CHtiIPCommServerSession which should - // stop the active scheduler in IPCommServer - RSessionBase::Close(); - - // For clean server stop, wait for its death - HTI_LOG_TEXT( "RHtiIPCommServer::Close: Waiting for server thread to die..." ); - TRequestStatus status; - thread.Logon( status ); - User::WaitForRequest( status ); - HTI_LOG_TEXT( "RHtiIPCommServer::Close: Server thread dead." ); - } - - thread.Close(); - HTI_LOG_FUNC_OUT( "RHtiIPCommServer::Close" ); - } - -//--------------------------------------------------------------------------- -EXPORT_C TVersion RHtiIPCommServer::Version(void) const - { - return ( TVersion( KIPCommServerMajorVersionNumber, - KIPCommServerMinorVersionNumber, - KIPCommServerBuildVersionNumber ) ); - - } - -//--------------------------------------------------------------------------- -EXPORT_C TInt RHtiIPCommServer::GetSendBufferSize() const - { - return KIPCommServerSendBufferMaxSize; - } - -//--------------------------------------------------------------------------- -EXPORT_C TInt RHtiIPCommServer::GetReceiveBufferSize() const - { - return KIPCommServerReceiveBufferMaxSize; - } - -//--------------------------------------------------------------------------- -EXPORT_C void RHtiIPCommServer::Receive(TDes8& aData, - TRequestStatus& aStatus) - { - SendReceive( EIPCommServerRecv, TIpcArgs( &aData ), aStatus ); - } - -//--------------------------------------------------------------------------- -EXPORT_C void RHtiIPCommServer::Send(const TDesC8& aData, - TRequestStatus& aStatus) - { - SendReceive( EIPCommServerSend, TIpcArgs( &aData ), aStatus ); - } - -//--------------------------------------------------------------------------- -EXPORT_C void RHtiIPCommServer::CancelReceive() - { - SendReceive( EIPCommServerCancelRecv, TIpcArgs( NULL ) ); - } - -//--------------------------------------------------------------------------- -EXPORT_C void RHtiIPCommServer::CancelSend() - { - SendReceive( EIPCommServerCancelSend, TIpcArgs( NULL ) ); - } -// End of the file