hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/Csocketrouter.cpp
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/Csocketrouter.cpp	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,738 +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:  Routes data from peers to host and vice versa
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "Csocketrouter.h"
-#include "CommRouterDefinitions.h"
-#include "MSocketRouterObserver.h"
-#include "MBPProtocol.h"
-#include "CProtocolTCP.h"
-#include "CProtocolUDP.h"
-#include "CLocalTCPConnection.h"
-#include "CUDPSender.h"
-#include "IPProxyEngine.pan"
-
-#include <es_sock.h>
-
-
-#define DEBUG_FILENAME "IPProxyEngine.log"
-#include "DebugPrint.h"
-
-// LOCAL CONSTANTS
-const TInt KSocketRouterSlots = 60;
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::CSocketRouter
-// -----------------------------------------------------------------------------
-//
-CSocketRouter::CSocketRouter( MSocketRouterObserver* aObserver )
-    : CActive( EPriorityIdle ), iObserver( aObserver )
-    {
-    __ASSERT_DEBUG( iObserver, User::Invariant() );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::ConstructL()
-    {
-    User::LeaveIfError( iSocketServ.Connect( KSocketRouterSlots ) );
-
-    iReceiveBuffer = HBufC8::NewL( 0 );
-
-    iWriteEventArray = new (ELeave) CArrayPtrSeg<CWriteEvent> ( 10 );
-    iPeerSocketArray = new (ELeave) CArrayPtrFlat<CSocket> ( 10 );
-    iProtocolArray = new (ELeave) CArrayPtrFlat<MBPProtocol> ( 2 );
-
-    // Add the protocols
-    iProtocolTCP = CProtocolTCP::NewL( this );
-    // takes the ownership
-    iProtocolArray->AppendL( iProtocolTCP );
-
-    iProtocolUDP = CProtocolUDP::NewL( this );
-    // takes the ownership
-    iProtocolArray->AppendL( iProtocolUDP );
-
-    iUDPSender = CUDPSender::NewL( this );
-
-    CActiveScheduler::Add( this );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::NewL
-// -----------------------------------------------------------------------------
-//
-CSocketRouter* CSocketRouter::NewL( MSocketRouterObserver* aObserver )
-    {
-    CSocketRouter* self = CSocketRouter::NewLC( aObserver );
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::NewLC
-// -----------------------------------------------------------------------------
-//
-CSocketRouter* CSocketRouter::NewLC( MSocketRouterObserver* aObserver )
-    {
-    CSocketRouter* self = new( ELeave ) CSocketRouter( aObserver );
-    CleanupStack::PushL( self );
-
-    self->ConstructL();
-    return self;
-    }
-
-
-// Destructor
-CSocketRouter::~CSocketRouter()
-    {
-    Cancel();
-
-    delete iUDPSender;
-    delete iReceiveBuffer;
-
-    if ( iProtocolArray )
-        {
-        iProtocolArray->ResetAndDestroy();
-        delete iProtocolArray;
-        }
-    if ( iPeerSocketArray )
-        {
-        iPeerSocketArray->ResetAndDestroy();
-        delete iPeerSocketArray;
-        }
-    if ( iWriteEventArray )
-        {
-        iWriteEventArray->ResetAndDestroy();
-        delete iWriteEventArray;
-        }
-
-    iSocketServ.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::AddPeerSocketL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::AddPeerSocketL( RSocket* aSocket )
-    {
-    CSocket* newSocket = CSocket::NewLC( aSocket );
-    newSocket->SetObserver( this );
-    iPeerSocketArray->AppendL( newSocket );
-    newSocket->SetSocketOwnershipMode( ETrue );
-
-    DEBUG_PRINT( DEBUG_STRING(
-        "CSocketRouter::AddPeerSocketL(), localport=%d, remote port=%d" ),
-        newSocket->LocalPort(),
-        newSocket->RemotePort() );
-
-    CleanupStack::Pop( newSocket );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::AddUDPSocketL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::AddUDPSocketL( TUint aPort )
-    {
-    RSocket* newSocket = new (ELeave) RSocket();
-    CleanupStack::PushL( newSocket );
-
-    // Open the socket
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::AddUDPSocketL, Trying to open UDP port %d" ), aPort );
-
-    User::LeaveIfError( newSocket->Open( iSocketServ, KAfInet, KSockDatagram,
-        KProtocolInetUdp  ) );
-
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::AddUDPSocketL, UDP port opened." ), aPort );
-
-    // Bind the  socket to the correct port.
-    TInetAddr anyAddrOnPort( KInetAddrAny, aPort );
-    newSocket->Bind( anyAddrOnPort );
-
-    CSocket* cSocket = CSocket::NewLC( newSocket, aPort );
-    cSocket->SetObserver( this );
-    iPeerSocketArray->AppendL( cSocket );
-    cSocket->SetSocketOwnershipMode( ETrue );
-    CleanupStack::Pop( cSocket );
-
-    CleanupStack::Pop( newSocket );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::RemovePeerSocket
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::RemovePeerSocket( TInt aIndex )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::RemovePeerSocket()" ) );
-    CSocket* socket = iPeerSocketArray->At( aIndex );
-    iPeerSocketArray->Delete( aIndex );
-    delete socket;
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::RemovePeerSocket
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::RemovePeerSocket( RSocket* aSocket )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::RemovePeerSocket()" ) );
-    TInt count = iPeerSocketArray->Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        if ( iPeerSocketArray->At( i )->GetRSocket() == aSocket )
-            {
-            iPeerSocketArray->Delete( i );
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::FindPeerSocket
-// -----------------------------------------------------------------------------
-//
-TInt CSocketRouter::FindPeerSocket( TUint aPort )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::FindPeerSocket()" ) );
-    TInt count = iPeerSocketArray->Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        if ( iPeerSocketArray->At( i )->RemotePort() == aPort 
-                || iPeerSocketArray->At( i )->LocalPort() == aPort)
-            {
-            return i;
-            }
-        }
-    return -1;
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::RemoveAllPeers
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::RemoveAllPeers()
-    {
-    iPeerSocketArray->ResetAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::SocketCount
-// -----------------------------------------------------------------------------
-//
-TInt CSocketRouter::SocketCount() const
-    {
-    return iPeerSocketArray->Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::SetHostSocketL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::SetHostSocketL( MSocket* aSocket )
-    {
-    DEBUG_PRINT( DEBUG_STRING(
-        "CSocketRouter::SetHostSocketL()" ) );
-
-    iHostSocket = aSocket;
-    iHostSocket->SetObserver( this );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::RunL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::RunL()
-    {
-    WriteQueueL();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::DoCancel()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::StartRouting
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::StartRouting()
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::StartRouting()" ) );
-
-    iRouting = ETrue;
-    iHostSocket->IssueRead();
-    TInt peerSocketArrayCount = iPeerSocketArray->Count();
-    for ( TInt i = 0;i < peerSocketArrayCount; i++ )
-        {
-        CSocket* socket = iPeerSocketArray->At( i );
-        socket->IssueRead();
-        }
-    IssueHandleQueue();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::IssueHandleQueue
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::IssueHandleQueue()
-    {
-    if ( !IsActive() )
-        {
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete( status, KErrNone );
-
-        SetActive();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::StopRouting
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::StopRouting()
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::StopRouting()" ) );
-
-    Cancel();   //If HandleQueue is issued
-
-    iRouting = EFalse;
-    if ( iHostSocket )
-        {
-        iHostSocket->Cancel();
-        }
-    TInt peerSocketArrayCount = iPeerSocketArray->Count();
-    for ( TInt i = 0;i < peerSocketArrayCount; i++ )
-        {
-        CSocket* socket = iPeerSocketArray->At( i );
-        socket->Cancel();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::IsRouting
-// -----------------------------------------------------------------------------
-//
-TBool CSocketRouter::IsRouting() const
-    {
-    return iRouting;
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::ResetQueue
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::ResetQueue()
-    {
-    iWriteEventArray->ResetAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::SendCloseTCPConnection
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::SendCloseTCPConnection( TUint aPort )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::SendCloseTCPConnection" ) );
-
-    iProtocolTCP->SendCloseTCPConnection( *iHostSocket, aPort );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::WriteCorrectFrame
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::WriteCorrectFrameL( TProtocolDesc aProtocolDesc,
-                        TUint aPeerPort,
-                        TUint aOriginalPort,
-                        const TDesC8& aData )
-    {
-    DEBUG_PRINT( DEBUG_STRING(
-            "CSocketRouter::WriteCorrectFrameL(), protocol = %d" ),
-            aProtocolDesc.iProtocol );
-
-    MBPProtocol* protocol;
-
-    if ( aProtocolDesc.iProtocol == KProtocolInetUdp )
-        {
-        // UDP frame
-        DEBUG_PRINT( DEBUG_STRING(
-            "CSocketRouter::WriteCorrectFrameL(), UDP" ) );
-        protocol = iProtocolUDP;
-        }
-    else
-        {
-        // TCP frame
-        DEBUG_PRINT( DEBUG_STRING(
-            "CSocketRouter::WriteCorrectFrameL(), TCP" ) );
-        protocol = iProtocolTCP;
-        }
-
-    protocol->WriteFrameL(
-        *iHostSocket, aPeerPort,
-        aOriginalPort, aData );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::DataReceivedL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::DataReceivedL( const MSocket* aSocket, const TDesC8& aData )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::DataReceivedL()" ) );
-
-    __ASSERT_ALWAYS( aSocket, Panic( IPProxyEngineNullSocket ) );
-
-    if ( iRouting )
-        {
-        //Route all data received from the host socket to protocol data handler.
-        if ( aSocket == iHostSocket )
-            {
-            // join the previous buffer if there's something left
-            TInt neededLength = iReceiveBuffer->Length() + aData.Length();
-            HBufC8* joinedBuffers = HBufC8::NewLC( neededLength );
-            TPtr8 joinedBuffersPtr( joinedBuffers->Des() );
-            joinedBuffersPtr.Append( *iReceiveBuffer );
-            joinedBuffersPtr.Append( aData );
-
-            // Check if there's a protocol that can handle this message
-            TInt length = 0; // length of the full msg
-            TInt startPos = 0; // where the msg prefix starts
-            TBool msgHandled = EFalse;
-            TInt protCount = iProtocolArray->Count();
-
-            for ( TInt i = 0; i < protCount && !msgHandled; i++ )
-                {
-                msgHandled = iProtocolArray->At( i )->HandleReceivedDataL(
-                                                        joinedBuffersPtr,
-                                                        startPos,
-                                                        length  );
-                }
-            if ( msgHandled )
-                {
-                if ( length > 0 )
-                    {
-                    // Length is set only when whole msg is processed
-                    // and correct.
-                    // Store the rest of the msg for the next round
-                    delete iReceiveBuffer;
-                    iReceiveBuffer = NULL;
-                    iReceiveBuffer =
-                            joinedBuffers->Mid( startPos + length ).AllocL();
-                    CleanupStack::PopAndDestroy( joinedBuffers );
-
-                    if ( iReceiveBuffer->Length() > 0 )
-                        {
-                        // Start again to process the rest
-                        iState = EStateWaitingFrameStart;
-                        DataReceivedL( aSocket, KNullDesC8 );
-                        }
-                    }
-                else
-                    {
-                    delete iReceiveBuffer;
-                    iReceiveBuffer = joinedBuffers;
-                    CleanupStack::Pop( joinedBuffers );
-                    }
-                }
-            else
-                {
-                // Could not find a valid prefix for this protocol
-                // store data for the next round
-                HBufC8* newBuffer = HBufC8::NewLC( KMaxPrefixLength -1 );
-                TPtr8 newBufferPtr( newBuffer->Des() );
-                if ( joinedBuffersPtr.Length() > 3 )
-                    {
-                    newBufferPtr =
-                        joinedBuffersPtr.Right( KMaxPrefixLength - 1 );
-                    }
-                else
-                    {
-                    iState = EStateWaitingFrameStart;
-                    newBufferPtr = joinedBuffersPtr;
-                    }
-                delete iReceiveBuffer;
-                iReceiveBuffer = newBuffer;
-                CleanupStack::Pop( newBuffer );
-                CleanupStack::PopAndDestroy( joinedBuffers );
-                return;
-                }
-            }
-        else    //Route all data received from any other socket to frame writer.
-            {
-            WriteQueueL();
-            TProtocolDesc info;
-            aSocket->SocketInfo( info );
-            WriteCorrectFrameL(
-                info, aSocket->RemotePort(),
-                aSocket->LocalPort(), aData );
-
-            }
-        }
-    else
-        {
-        //Add to queue
-        TProtocolDesc desc;
-        aSocket->SocketInfo( desc );
-        iWriteEventArray->AppendL( CWriteEvent::NewLC( desc,
-            aData, aSocket->RemotePort(), aSocket->LocalPort() ) );
-
-        DEBUG_PRINT( DEBUG_STRING(
-            "Add to queue: peerPort: %d. origPort: %d" ),
-            aSocket->RemotePort(),
-            aSocket->LocalPort() );
-
-        CleanupStack::Pop(); // CWriteEvent
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::WriteQueueL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::WriteQueueL()
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::WriteQueueL()" ) );
-
-    TInt writeEventArrayCount = iWriteEventArray->Count();
-    for ( TInt i = 0; i < writeEventArrayCount; i++ )
-        {
-        const CWriteEvent* writeEvent = iWriteEventArray->At( 0 );
-        WriteCorrectFrameL( writeEvent->ProtocolDesc(), writeEvent->PeerPort(),
-            writeEvent->OriginalPort(), writeEvent->Data() );
-        DEBUG_PRINT( DEBUG_STRING(
-            "WriteQueueL(): peerPort: %d. origPort: %d" ),
-            writeEvent->PeerPort(),
-            writeEvent->OriginalPort() );
-        iWriteEventArray->Delete( 0 );
-        delete writeEvent;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::ErrorL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::ErrorL( const MSocket* aSocket, TInt aErrorCode )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::ErrorL()" ) );
-
-    iObserver->SocketRouterErrorL( aSocket, aErrorCode );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::ObserverLeaved
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::ObserverLeaved( const MSocket* aSocket, TInt aLeaveCode )
-    {
-    iObserver->ObserverLeaved( aSocket, aLeaveCode );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::DisconnectedL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::DisconnectedL( const MSocket* aSocket )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::DisconnectedL()" ) );
-
-    if ( aSocket == iHostSocket )
-        {
-        DEBUG_PRINT( DEBUG_STRING( "aSocket == iHostSocket" ) );
-        iObserver->HostDisconnectedL( aSocket );
-        iHostSocket = NULL;
-        }
-    else
-        {
-        TInt peerSocketArrayCount = iPeerSocketArray->Count();
-        for ( TInt i = 0;i < peerSocketArrayCount; i++ )
-            {
-            CSocket* socket = iPeerSocketArray->At( i );
-            if ( socket == aSocket )
-                {
-                SendCloseTCPConnection( socket->RemotePort() );
-                iObserver->PeerDisconnectedL( socket );
-                RemovePeerSocket( i );
-                break;
-                }
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::FrameStarted
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::FrameStarted()
-    {
-    iState = EStateFrameStartFound;
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::TCPFrameParsedL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::TCPFrameParsedL( TUint aPort, const TDesC8& aData )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::TCPFrameParsedL()" ) );
-    DEBUG_PRINT( DEBUG_STRING( "    aPort=%d" ), aPort );
-    DEBUG_PRINT( DEBUG_STRING( "    aData.Length=%d" ), aData.Length() );
-
-    for ( TInt i = 0; i < iPeerSocketArray->Count(); i++ )
-        {
-        CSocket* socket = iPeerSocketArray->At( i );
-        if ( socket->RemotePort() == aPort && !socket->IsUDP() )
-            {
-            socket->WriteL( aData );
-            break; //for
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::OpenLocalTCPConnectionL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::OpenLocalTCPConnectionL( TUint aPort )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "OpenLocalTCPConnectionL, port = %d" ), aPort );
-    if ( iObserver )
-        {
-        iObserver->OpenLocalTCPConnectionL( aPort );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::OpenListeningTCPConnectionL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::OpenListeningTCPConnectionL( TUint aPort )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "OpenListeningTCPConnectionL, port = %d" ), aPort );
-    if ( iObserver )
-        {
-        iObserver->OpenListeningTCPConnectionL( aPort );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::CloseTCPConnection
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::CloseTCPConnectionL( TUint aPort )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CloseTCPConnection, port = %d" ), aPort );
-    
-    // Close the socket if it exists
-    CArrayPtr<CSocket>* socketArrayForDestroy = new (ELeave) CArrayPtrFlat<CSocket> ( 10 );
-    CleanupStack::PushL(socketArrayForDestroy);
-    TInt index = FindPeerSocket( aPort );
-    while ( index > -1 )
-        {
-        socketArrayForDestroy->AppendL(iPeerSocketArray->At( index ));
-        iPeerSocketArray->Delete(index);
-        index = FindPeerSocket( aPort );
-        }
-    socketArrayForDestroy->ResetAndDestroy();
-    CleanupStack::PopAndDestroy(socketArrayForDestroy);
-
-    if ( iObserver )
-        {
-        iObserver->CloseTCPConnection( aPort );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::CloseAllTCPConnections
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::CloseAllTCPConnections()
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CloseAllTCPConnections" ) );
-    if ( iObserver )
-        {
-        iObserver->CloseAllTCPConnections();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::UDPFrameParsedL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::UDPFrameParsedL( TUint aPort, const TDesC8& aData )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::UDPFrameParsedL()" ) );
-    DEBUG_PRINT( DEBUG_STRING( "    aPort=%d" ), aPort );
-    DEBUG_PRINT( DEBUG_STRING( "    aData.Length=%d" ), aData.Length() );
-    iUDPSender->IssueWriteL( aPort, aData );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::ProtocolErrorL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::ProtocolErrorL(
-    TInt aErrorCode, const TDesC8& /* aReceivedData */ )
-    {
-    DEBUG_PRINT( DEBUG_STRING( "CSocketRouter::ProtocolErrorL()" ) );
-    DEBUG_PRINT( DEBUG_STRING( "    aErrorCode=%d" ), aErrorCode );
-
-    if ( iObserver )
-        {
-        iObserver->SocketRouterErrorL( iHostSocket, aErrorCode );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::UDPSenderErrorL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::UDPSenderErrorL( TInt aErrorCode )
-    {
-    DEBUG_PRINT( DEBUG_STRING(
-        "CSocketRouter::UDPSenderErrorL(), error code %d" ), aErrorCode );
-    iObserver->SocketRouterErrorL( NULL, aErrorCode );
-    }
-
-// -----------------------------------------------------------------------------
-// CSocketRouter::UDPSenderLeavedL
-// -----------------------------------------------------------------------------
-//
-void CSocketRouter::UDPSenderLeavedL( TInt aLeaveCode )
-    {
-    DEBUG_PRINT( DEBUG_STRING(
-        "CSocketRouter::UDPSenderLeavedL(), leavecode %d" ), aLeaveCode );
-    iObserver->ObserverLeaved( NULL, aLeaveCode );
-    }
-
-//  End of File