diff -r 3406c99bc375 -r 07b41fa8d1dd hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/CProtocolTCP.cpp --- a/hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/CProtocolTCP.cpp Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +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: HTTPProxy protocol implementation -* -*/ - - - -// INCLUDE FILES -#include "CProtocolTCP.h" -#include "CExprTCPMsg.h" -#include "CExprTCPOpen.h" -#include "CExprTCPLstn.h" -#include "CExprTCPClose.h" -#include "CExprTCPCloseAll.h" -#include "MSocketWriter.h" -#include "MProtocolObserverTCP.h" -#include "CommRouterDefinitions.h" - -#define DEBUG_FILENAME "IPProxyEngine.log" -#include "DebugPrint.h" - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CProtocolTCP::CProtocolTCP -// ----------------------------------------------------------------------------- -// -CProtocolTCP::CProtocolTCP( MProtocolObserverTCP* aObserver ) - : iObserver( aObserver ) - { - __ASSERT_DEBUG( iObserver, User::Invariant() ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::ConstructL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::ConstructL() - { - // Add all the expressions for TCP - iExpressionArray = new (ELeave) CArrayPtrFlat ( 5 ); - - CExprTCPMsg* tcpMsg = CExprTCPMsg::NewL( this ); - iExpressionArray->AppendL( tcpMsg ); - - CExprTCPOpen* tcpOpen = CExprTCPOpen::NewL( this ); - iExpressionArray->AppendL( tcpOpen ); - - CExprTCPLstn* tcpLstn = CExprTCPLstn::NewL( this ); - iExpressionArray->AppendL( tcpLstn ); - - CExprTCPClose* tcpClose = CExprTCPClose::NewL( this ); - iExpressionArray->AppendL( tcpClose ); - - CExprTCPCloseAll* tcpCloseAll = CExprTCPCloseAll::NewL( this ); - iExpressionArray->AppendL( tcpCloseAll ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::NewL -// ----------------------------------------------------------------------------- -// -CProtocolTCP* CProtocolTCP::NewL( MProtocolObserverTCP* aObserver ) - { - CProtocolTCP* self = CProtocolTCP::NewLC( aObserver ); - CleanupStack::Pop(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::NewLC -// ----------------------------------------------------------------------------- -// -CProtocolTCP* CProtocolTCP::NewLC( MProtocolObserverTCP* aObserver ) - { - CProtocolTCP* self = new( ELeave ) CProtocolTCP( aObserver ); - CleanupStack::PushL( self ); - - self->ConstructL(); - return self; - } - - -// ----------------------------------------------------------------------------- -// CProtocolTCP::~CProtocolTCP -// ----------------------------------------------------------------------------- -// -CProtocolTCP::~CProtocolTCP() - { - if ( iExpressionArray ) - { - iExpressionArray->ResetAndDestroy(); - delete iExpressionArray; - } - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::FrameStarted -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::FrameStarted() - { - iObserver->FrameStarted(); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::FrameParsedL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::FrameParsedL( TUint aPort, const TDesC8& aData ) - { - iObserver->TCPFrameParsedL( aPort, aData ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::ProtocolErrorL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::ProtocolErrorL( - TInt aErrorCode, const TDesC8& aReceivedData ) - { - iObserver->ProtocolErrorL( aErrorCode, aReceivedData ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::OpenLocalTCPConnectionL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::OpenLocalTCPConnectionL( TUint aPort ) - { - iObserver->OpenLocalTCPConnectionL( aPort ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::OpenListeningTCPConnectionL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::OpenListeningTCPConnectionL( TUint aPort ) - { - iObserver->OpenListeningTCPConnectionL( aPort ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::CloseTCPConnection -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::CloseTCPConnectionL( TUint aPort ) - { - iObserver->CloseTCPConnectionL( aPort ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::ProtocolErrorL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::CloseAllTCPConnections() - { - iObserver->CloseAllTCPConnections(); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::WriteFrameL -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::WriteFrameL( MSocketWriter& aSocketWriter, - TUint aPeerPort, TUint aOriginalPort, const TDesC8& aData ) const - { - DEBUG_PRINT( DEBUG_STRING( - "CProtocolTCP::WriteFrameL(), peer port=%d, original port=%d" ), - aPeerPort, aOriginalPort ); - - TInt bufSize = 0; - bufSize += KTCPPrefix().Length(); - bufSize += KHexDecimalLength; - bufSize += KPortSuffix().Length(); - bufSize += KHexDecimalLength; - bufSize += KPortSuffix().Length(); - bufSize += KHexDecimalLength; - bufSize += KLengthSuffix().Length(); - bufSize += aData.Length(); - bufSize += KDataSuffix().Length(); - bufSize += KMessageSuffix().Length(); // ? is this really needed - - TBuf8 hexbuf; - HBufC8* buf = HBufC8::NewLC( bufSize ); - TPtr8 ptr( buf->Des() ); - - // Append TCP prefix - ptr.Append( KTCPPrefix ); - - // Append peer port - hexbuf.Format( KHexFormat, aPeerPort ); - ptr.Append( hexbuf ); - ptr.Append( KPortSuffix ); - - // Append host port - hexbuf.Format( KHexFormat, aOriginalPort ); - ptr.Append( hexbuf ); - ptr.Append( KPortSuffix ); - - // Append data length - hexbuf.Format( KHexFormat, aData.Length() ); - ptr.Append( hexbuf ); - ptr.Append( KLengthSuffix ); - - // Append data - ptr.Append( aData ); - ptr.Append( KDataSuffix ); - ptr.Append( KMessageSuffix ); - - // Write to socket - aSocketWriter.WriteL( *buf ); - - CleanupStack::PopAndDestroy( buf ); - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::HandleReceivedDataL -// ----------------------------------------------------------------------------- -// -TBool CProtocolTCP::HandleReceivedDataL( TDes8& aData, TInt& aStartPos, - TInt& aLength ) - { - TBool msgHandled = EFalse; - TInt protCount = iExpressionArray->Count(); - - for ( TInt i = 0; i < protCount; i++ ) - { - msgHandled = iExpressionArray->At( i )->HandleRecievedMsgL( aData, - aStartPos, - aLength); - if ( msgHandled ) - { - break; - } - } - - return msgHandled; - } - -// ----------------------------------------------------------------------------- -// CProtocolTCP::SendCloseTCPConnection -// ----------------------------------------------------------------------------- -// -void CProtocolTCP::SendCloseTCPConnection( MSocketWriter& aSocketWriter, - TUint aPort ) - { - DEBUG_PRINT( - DEBUG_STRING( "CProtocolTCP::SendCloseTCPConnection, port %d" ), - aPort ); - - aSocketWriter.WriteL( KTCPClosePrefix ); - TBuf8 portBuf; - portBuf.Format( KHexFormat, aPort ); - aSocketWriter.WriteL( portBuf ); - } - -// End of File