diff -r 453dfc402455 -r 0aa8cc770c8a connectivitymodules/SeCon/clients/pcconn/src/sconpcconnclient.cpp --- a/connectivitymodules/SeCon/clients/pcconn/src/sconpcconnclient.cpp Thu Aug 19 10:44:03 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,304 +0,0 @@ -/* -* Copyright (c) 2005-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: PC Connectivity client -* -*/ - - - -// ----------------------------------------------------------------------------- -// Includes -// ----------------------------------------------------------------------------- -#include -#include - -// Client - server -#include "sconpcconnclient.h" -#include "sconpcconnclientserver.h" -#include "debug.h" - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::RSConPCConnSession() -// Default constructor -// ----------------------------------------------------------------------------- -// -EXPORT_C RSConPCConnSession::RSConPCConnSession() - { - TRACE_FUNC; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::~RSConPCConnSession() -// Default destructor -// ----------------------------------------------------------------------------- -// -EXPORT_C RSConPCConnSession::~RSConPCConnSession() - { - TRACE_FUNC; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Connect() -// Creates a chunk and server, starts the server connection -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt RSConPCConnSession::Connect() - { - TRACE_FUNC_ENTRY; - - TInt ret ( KErrNone ); - - ret = CreateSession(KSConPCConnServerName,Version()); - - if ( ret == KErrNotFound || ret == KErrServerTerminated ) - { - ret = LaunchServer(); - - if ( ret == KErrNone || ret == KErrAlreadyExists ) - { - ret = CreateSession( KSConPCConnServerName, Version() ); - } - } - - if ( ret == KErrNone ) - { - ret = CreateAndSendChunkHandle(); - if ( ret != KErrNone ) - { - LOGGER_WRITE("CreateAndSendChunkHandle failed, close session"); - Close(); - } - } - - LOGGER_WRITE_1( "RSConPCConnSession::Connect() : returned %d", ret ); - return ret; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Close() -// Closes the server connection -// ----------------------------------------------------------------------------- -// -EXPORT_C void RSConPCConnSession::Close() - { - TRACE_FUNC_ENTRY; - iChunk.Close(); - RSessionBase::Close(); - TRACE_FUNC_EXIT; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Version() -// Returns the version of the client -// ----------------------------------------------------------------------------- -// -TVersion RSConPCConnSession::Version(void) const - { - return (TVersion(KSConPCConnServerVersionMajor, - KSConPCConnServerVersionMinor, - KSConPCConnServerVersionBuild)); - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Version() -// Forwards a PUT -message to the server -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt RSConPCConnSession::PutPacketL( - const TDesC& aNameHeader, const TDesC8& aTypeHeader, CBufFlat*& aBuffer ) - { - TRACE_FUNC_ENTRY; - - if ( !aBuffer ) - { - return KErrArgument; - } - - if ((aBuffer->Size() + aTypeHeader.Size() + - aNameHeader.Size()) > KSConPCConnChunkMaxSize) - { - LOGGER_WRITE( "RSConPCConnSession::PutPacketL() :\ - WBXML document too big" ); - return KErrTooBig; - } - - TInt ret (KErrNone); - iChunk.Adjust( KSConPCConnChunkMaxSize ); - RMemWriteStream buf( iChunk.Base(), iChunk.Size() ); - - buf.WriteInt32L( aNameHeader.Size() ); - buf.WriteL( aNameHeader ); - - buf.WriteInt32L( aTypeHeader.Size() ); - buf.WriteL( aTypeHeader ); - - // WBXML document - buf.WriteInt32L( aBuffer->Size() ); - buf.WriteL( aBuffer->Ptr(0) ); - buf.CommitL(); - buf.Close(); - - TIpcArgs args; - ret = SendReceive ( EPutMessage, args ); - - LOGGER_WRITE_1( "RSConPCConnSession::PutPacketL() : returned %d", ret ); - return ret; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Version() -// Forwards a GET -message to the server -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt RSConPCConnSession::GetPacketL( - const TDesC& aNameHeader, const TDesC8& aTypeHeader, CBufFlat*& aBuffer ) - { - TRACE_FUNC_ENTRY; - - if ( !aBuffer ) - { - return KErrArgument; - } - - TInt ret (KErrNone); - - iChunk.Adjust( KSConPCConnChunkMaxSize); - RMemWriteStream writeBuf( iChunk.Base(), iChunk.Size() ); - writeBuf.WriteInt32L( aNameHeader.Size() ); - writeBuf.WriteL( aNameHeader ); - - writeBuf.WriteInt32L( aTypeHeader.Size() ); - writeBuf.WriteL( aTypeHeader ); - - writeBuf.CommitL(); - writeBuf.Close(); - - TIpcArgs args; - ret = SendReceive ( EGetMessage, args ); - - if ( ret != KErrNone) - { - LOGGER_WRITE_1( "RSConPCConnSession::GetPacketL() :\ - Send Receive failed with code %d", ret ); - return ret; - }; - - // copy data from the chunk - RMemReadStream readBuf( iChunk.Base(), iChunk.Size() ); - TInt32 length ( 0 ); - - aBuffer->Reset(); - length = readBuf.ReadInt32L(); - - HBufC8* data = HBufC8::NewLC( length ); - TPtr8 dataPtr = data->Des(); - - readBuf.ReadL( dataPtr, length ); - aBuffer->ExpandL( 0, length ); - aBuffer->Write ( 0, dataPtr ); - - readBuf.Close(); - - CleanupStack::PopAndDestroy(); // data; - - LOGGER_WRITE_1( "RSConPCConnSession::GetPacketL()\ - : returned %d", ret ); - return ret; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::Version() -// Forwards a Reset -message to the server -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt RSConPCConnSession::ResetServer() - { - TRACE_FUNC_ENTRY; - TInt ret ( KErrNone ); - TIpcArgs args; - ret = SendReceive ( EResetMessage, args ); - LOGGER_WRITE_1( "RSConPCConnSession::ResetServerL(): ret %d", ret ); - return ret; - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::LaunchServer() -// Launches the server -// ----------------------------------------------------------------------------- -// -TInt RSConPCConnSession::LaunchServer() - { - TRACE_FUNC_ENTRY; - TInt ret( KErrNone ); - - // Create server - RProcess p; - ret = p.Create(KSConPCConnServerExe, KNullDesC); - - if ( ret != KErrNone ) - { - // Loading failed. - LOGGER_WRITE_1( "RProcess::Create failed, err: %d", ret ); - return ret; - } - - - TRequestStatus status; - p.Rendezvous( status ); - - if ( status != KRequestPending ) - { - p.Kill(0); // abort startup - p.Close(); - LOGGER_WRITE("Abort startup, return KErrGeneral"); - return KErrGeneral; - } - else - { - p.Resume(); // logon OK - start the server - } - - User::WaitForRequest(status); - - p.Close(); - - LOGGER_WRITE_1( "RSConPCConnSession::LaunchServerL(): returned %d", status.Int() ); - return status.Int(); - } - -// ----------------------------------------------------------------------------- -// RSConPCConnSession::CreateAndSendChunkHandle() -// Creates a chunk and sends a handle to server -// ----------------------------------------------------------------------------- -// -TInt RSConPCConnSession::CreateAndSendChunkHandle() - { - TRACE_FUNC_ENTRY; - TInt err = iChunk.CreateGlobal( KNullDesC, - KSConPCConnChunkSize, - KSConPCConnChunkMaxSize ); - if ( err != KErrNone ) - { - LOGGER_WRITE_1("iChunk.CreateGlobal failed, err: %d", err); - return err; - } - TIpcArgs args; - args.Set( 0, iChunk ); - err = SendReceive( EChunkMessage, args ); - - LOGGER_WRITE_1("RSConPCConnSession::CreateAndSendChunkHandle : returned: %d", err); - return err; - } - -// End of file