localconnectivityservice/dun/utils/src/DunTransUtils.cpp
branchRCL_3
changeset 39 4096754ee773
parent 38 3dcb815346df
child 40 52a167391590
--- a/localconnectivityservice/dun/utils/src/DunTransUtils.cpp	Thu Aug 19 10:46:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1077 +0,0 @@
-/*
-* Copyright (c) 2006-2010 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:  Utility class for other CDunTransporter classes
-*
-*/
-
-
-#include <e32base.h>
-#include <e32property.h>
-#include "dundomainpskeys.h"
-#include "DunTransUtils.h"
-#include "DunDataWaiter.h"
-#include "DunUpstream.h"
-#include "DunDownstream.h"
-#include "DunSignalCopy.h"
-#include "DunSignalNotify.h"
-#include "DunNoteHandler.h"
-#include "DunUtils.h"
-#include "DunDebug.h"
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CDunTransUtils* CDunTransUtils::NewL( CDunTransporter& aParent,
-                                      MDunPluginManager* aPluginManager )
-    {
-    CDunTransUtils* self = new (ELeave) CDunTransUtils( aParent,
-                                                        aPluginManager );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CDunTransUtils::~CDunTransUtils()
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::~CDunTransUtils()" )));
-    FTRACE(FPrint( _L("CDunTransUtils::~CDunTransUtils() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// CDunTransUtils::CDunTransUtils
-// ---------------------------------------------------------------------------
-//
-CDunTransUtils::CDunTransUtils( CDunTransporter& aParent,
-                                MDunPluginManager* aPluginManager ) :
-    iParent( aParent ),
-    iChannelData( aParent.iChannelData ),
-    iServAdvData( aParent.iServAdvData ),
-    iPluginManager( aPluginManager )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDunTransUtils::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::ConstructL()
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::ConstructL()" )));
-    if ( !iPluginManager )
-        {
-        User::Leave( KErrGeneral );
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::ConstructL() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Manages service advertisement status changes
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::ManageAdvertisementStatusChange( TBool aAdvertise,
-                                                      TBool aCreation )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::ManageAdvertisementStatusChange()" )));
-    TInt i;
-    TInt count;
-    iParent.iAdvertise = aAdvertise;
-    count = iServAdvData.Count();
-    for ( i=0; i<count; i++ )
-        {
-        TDunServAdvData& servAdvData = iServAdvData[i];
-        if ( servAdvData.iServAdvMon )
-            {
-            if ( aAdvertise )
-                {
-                servAdvData.iServAdvMon->NotifyAdvertisementStart( aCreation );
-                }
-            else
-                {
-                servAdvData.iServAdvMon->NotifyAdvertisementEnd();
-                }
-            }
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::ManageAdvertisementStatusChange() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates empty channel data
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::CreateEmptyChannelData( TDunChannelData& aChannel )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::CreateEmptyChannelData()" )));
-    aChannel.iNetwork = NULL;
-    aChannel.iComm = NULL;
-    aChannel.iSocket = NULL;
-    aChannel.iChannelName = NULL;
-    aChannel.iUpstreamRW = NULL;
-    aChannel.iDownstreamRW = NULL;
-    aChannel.iBufferUpstream = NULL;
-    aChannel.iBufferDownstream = NULL;
-    aChannel.iBufferUpPtr = NULL;
-    aChannel.iBufferDownPtr = NULL;
-    aChannel.iUpstreamSignalCopy = NULL;
-    aChannel.iDownstreamSignalCopy = NULL;
-    aChannel.iSignalNotify = NULL;
-    aChannel.iOwnerUid = TUid::Null();
-    aChannel.iChannelInUse = EFalse;
-    FTRACE(FPrint( _L("CDunTransUtils::CreateEmptyChannelData() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates new buffer if source buffer defined, otherwise already existing
-// buffer will be used
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoCreateBufferLC( TUint8* aSrcBuffer,
-                                       TPtr8* aSrcPtr,
-                                       TUint8*& aDstBuffer,
-                                       TPtr8*& aDstPtr,
-                                       TInt aBufferLength,
-                                       TInt& aItemsInCs )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC()" )));
-    TUint8* buffer;
-    if ( !aSrcBuffer )
-        {
-        buffer = new (ELeave) TUint8[aBufferLength];
-        CleanupStack::PushL( buffer );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC() new created" )));
-        }
-    else
-        {
-        buffer = aSrcBuffer;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC() existing set" )));
-        }
-    TPtr8* bufferPtr;
-    if ( !aSrcPtr )
-        {
-        bufferPtr = new (ELeave) TPtr8( buffer, aBufferLength, aBufferLength );
-        CleanupStack::PushL( bufferPtr );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC() new created" )));
-        }
-    else
-        {
-        bufferPtr = aSrcPtr;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC() existing set" )));
-        }
-    aDstBuffer = buffer;
-    aDstPtr = bufferPtr;
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateBufferLC() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates new signal copy object if source defined, otherwise already
-// existing will be used
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoCreateSignalCopyLC( CDunSignalCopy* aSrcSignalCopy,
-                                           CDunSignalCopy*& aDstSignalCopy,
-                                           TInt& aItemsInCs )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalCopyLC()" )));
-    CDunSignalCopy* signalCopy;
-    if ( !aSrcSignalCopy )
-        {
-        signalCopy = CDunSignalCopy::NewL();
-        CleanupStack::PushL( signalCopy );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalCopyLC() new created" )));
-        }
-    else
-        {
-        signalCopy = aSrcSignalCopy;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalCopyLC() existing set" )));
-        }
-    aDstSignalCopy = signalCopy;
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalCopyLC() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates new signal notify object if source defined, otherwise already
-// existing will be used
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoCreateSignalNotifyLC(
-    CDunSignalNotify* aSrcSignalNotify,
-    CDunSignalNotify*& aDstSignalNotify,
-    TInt& aItemsInCs )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalNotifyLC()" )));
-    CDunSignalNotify* signalNotify;
-    if ( !aSrcSignalNotify )
-        {
-        signalNotify = CDunSignalNotify::NewL( this );
-        CleanupStack::PushL( signalNotify );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalNotifyLC() new created" )));
-        }
-    else
-        {
-        signalNotify = aSrcSignalNotify;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalNotifyLC() existing set" )));
-        }
-    aDstSignalNotify = signalNotify;
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateSignalNotifyLC() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates transfer objects for reader and writer if sources defined,
-// otherwise already existing ones will be used
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoCreateUpTransferObjectL( CDunUpstream* aSrcReader,
-                                                CDunUpstream*& aDstReader,
-                                                TInt& aItemsInCs )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateUpTransferObjectL()" )));
-    CDunUpstream* dunReader;
-    if ( !aSrcReader )
-        {
-        dunReader = CDunUpstream::NewL( this );
-        CleanupStack::PushL( dunReader );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateUpTransferObjectL() new created" )));
-        }
-    else
-        {
-        dunReader = aSrcReader;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateUpTransferObjectL() existing set" )));
-        }
-    aDstReader = dunReader;
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateUpTransferObjectL() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Creates transfer objects for reader and writer if sources defined,
-// otherwise already existing ones will be used
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoCreateDownTransferObjectL( CDunDownstream* aSrcReader,
-                                                  CDunDownstream*& aDstReader,
-                                                  TInt& aItemsInCs )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateDownTransferObjectL()" )));
-    CDunDownstream* dunReader;
-    if ( !aSrcReader )
-        {
-        dunReader = CDunDownstream::NewL( this );
-        CleanupStack::PushL( dunReader );
-        aItemsInCs++;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateDownTransferObjectL() new created" )));
-        }
-    else
-        {
-        dunReader = aSrcReader;
-        FTRACE(FPrint( _L("CDunTransUtils::DoCreateDownTransferObjectL() existing set" )));
-        }
-    aDstReader = dunReader;
-    FTRACE(FPrint( _L("CDunTransUtils::DoCreateDownTransferObjectL() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// Resets/frees network data of aIndex:th channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DeleteOneNetworkData( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteOneNetworkData()" )));
-
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteOneNetworkData (not found) complete" )));
-        return KErrNotFound;
-        }
-
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteOneNetworkData() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    // channelData.iDownstreamSignalCopy may or may not exist (optional)
-    // channelData.iSignalNotify may or may not exist (optional)
-    delete channelData.iDownstreamSignalCopy;
-    channelData.iDownstreamSignalCopy = NULL;
-    delete channelData.iSignalNotify;
-    channelData.iSignalNotify = NULL;
-    delete channelData.iDownstreamRW;
-    channelData.iDownstreamRW = NULL;
-
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteOneNetworkData complete()" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// Resets/frees network data of aIndex:th channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DeleteOneLocalData( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteOneLocalData()" )));
-
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteOneLocalData() (not found) complete" )));
-        return KErrNotFound;
-        }
-
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteOneLocalData() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    // channelData.iUpstreamSignalCopy may or may not exist (optional)
-    delete channelData.iUpstreamSignalCopy;
-    channelData.iUpstreamSignalCopy = NULL;
-    delete channelData.iUpstreamRW;
-    channelData.iUpstreamRW = NULL;
-
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteOneLocalData() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// Deletes buffering objects of aIndex:th channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DeleteBuffering( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteBuffering()" )));
-
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteBuffering() (not found) complete" )));
-        return KErrNotFound;
-        }
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DeleteBuffering() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    delete channelData.iChannelName;
-    channelData.iChannelName = NULL;
-    delete channelData.iBufferUpstream;
-    channelData.iBufferUpstream = NULL;
-    delete channelData.iBufferDownstream;
-    channelData.iBufferDownstream = NULL;
-    delete channelData.iBufferUpPtr;
-    channelData.iBufferUpPtr = NULL;
-    delete channelData.iBufferDownPtr;
-    channelData.iBufferDownPtr = NULL;
-
-    FTRACE(FPrint( _L("CDunTransUtils::DeleteBuffering() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// Initializes first free channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::InitializeFirstFreeChannel( TConnId aLocalIdNew )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::InitializeFirstFreeChannel()" )));
-    TInt i;
-    TInt count;
-    TInt retTemp;
-    TInt firstFree = KErrNotFound;
-    count = iChannelData.Count();
-    for ( i=0; i<count; i++ )
-        {
-        TDunChannelData& channelData = iChannelData[i];
-        if ( channelData.iComm==aLocalIdNew ||
-             channelData.iSocket==aLocalIdNew )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::InitializeFirstFreeChannel() (already exists) complete" )));
-            return KErrAlreadyExists;
-            }
-        if ( !channelData.iChannelInUse && firstFree==KErrNotFound )
-            {
-            firstFree = i;
-            // no "break" here since KErrAlreadyExists needs to be checked
-            }
-        }
-    if ( firstFree >= 0 )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::InitializeFirstFreeChannel() complete" )));
-        return i;
-        }
-    // Free channel not found, now create new if possible
-    TDunChannelData emptyChannel;
-    CreateEmptyChannelData( emptyChannel );
-    retTemp = iChannelData.Append( emptyChannel );
-    if ( retTemp != KErrNone )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::InitializeFirstFreeChannel() (append failed!) complete" )));
-        return retTemp;
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::InitializeFirstFreeChannel() complete" )));
-    return i;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Allocates a channel by creating and setting local media independent
-// objects
-// This is a common method used by exported local media dependent methods
-// ---------------------------------------------------------------------------
-//
-void CDunTransUtils::DoAllocateChannelL( RComm* aComm,
-                                         TInt& aBufferLength,
-                                         TInt aFirstFree,
-                                         MDunBufferCorrection* aCorrection )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL()" )));
-    TInt retTemp;
-    TInt itemsInCs = 0;
-
-    if ( !iParent.iNetwork )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() (iNetwork) not initialized!" )));
-        User::Leave( KErrGeneral );
-        }
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() aFirstFree = %d" ), aFirstFree));
-
-    // Allocate network channel
-    RComm* networkEntity;
-    retTemp = iParent.iNetwork->AllocateChannel( networkEntity );
-    if ( retTemp != KErrNone )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() network allocation failed" )));
-        if ( retTemp == KErrTooBig )
-            {
-            // Start to show note
-            if ( iParent.iNoteHandler )
-                {
-                iParent.iNoteHandler->IssueRequest();
-                }
-            // Set flag to indicate that advertisement is not possible anymore
-            ManageAdvertisementStatusChange( EFalse );
-            FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() (too big) complete" )));
-            User::Leave( KErrTooBig );
-            }
-        FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() (ERROR) complete" )));
-        User::Leave( KErrGeneral );
-        }
-
-    TInt currentLength = networkEntity->ReceiveBufferLength();
-    TInt newLength = currentLength;
-    FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() buffer length before = %d" ), currentLength));
-    if ( aCorrection )
-        {
-        // Get network side buffer length and request change if required.
-        // Check "newlength>currentLength" here as it is not possible to
-        // increase Dataport's buffer length
-        newLength = aCorrection->NotifyBufferCorrection( currentLength );
-        if ( newLength<=0 || newLength>currentLength )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() unknown buffer length" )));
-            User::Leave( KErrGeneral );
-            }
-        // It is not possible to set Dataport side receive buffer length to any
-        // arbitrary value (currently only 8kB..20kB are supported but that
-        // can't be queried via an API). So here only default buffer size will
-        // be used from Dataport while this component's local buffering uses
-        // Dataport's default buffer size if not adjusted via plugin side.
-        // NOTE: If Dataport side starts to support arbitrary receive buffer
-        // size, it should be changed here if newLength != currentLength.
-        }
-    aBufferLength = newLength;
-    FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() buffer length after = %d" ), newLength));
-
-    // Get channel data
-
-    TDunChannelData& channelData = iChannelData[aFirstFree];
-
-    // Create buffers and set length
-
-    TUint8* bufferUpstream;
-    TPtr8* bufferUpPtr;
-    DoCreateBufferLC( channelData.iBufferUpstream,
-                      channelData.iBufferUpPtr,
-                      bufferUpstream,
-                      bufferUpPtr,
-                      newLength,
-                      itemsInCs );
-
-    TUint8* bufferDownstream;
-    TPtr8* bufferDownPtr;
-    DoCreateBufferLC( channelData.iBufferDownstream,
-                      channelData.iBufferDownPtr,
-                      bufferDownstream,
-                      bufferDownPtr,
-                      newLength,
-                      itemsInCs );
-
-    // Create signal copy objects
-
-    CDunSignalCopy* upstreamCopy = channelData.iUpstreamSignalCopy;
-    CDunSignalCopy* downstreamCopy = channelData.iDownstreamSignalCopy;
-    if ( aComm )
-        {
-        DoCreateSignalCopyLC( channelData.iUpstreamSignalCopy,
-                              upstreamCopy,
-                              itemsInCs );
-        DoCreateSignalCopyLC( channelData.iDownstreamSignalCopy,
-                              downstreamCopy,
-                              itemsInCs );
-        retTemp = upstreamCopy->SetMedia( aComm,
-                                          networkEntity,
-                                          EDunStreamTypeUpstream );
-        if ( retTemp != KErrNone )
-            {
-            delete upstreamCopy;
-            upstreamCopy = NULL;
-            }
-        retTemp = downstreamCopy->SetMedia( aComm,
-                                            networkEntity,
-                                            EDunStreamTypeDownstream );
-        if ( retTemp != KErrNone )
-            {
-            delete downstreamCopy;
-            downstreamCopy = NULL;
-            }
-        }
-
-    // Create signal notify objects
-
-    CDunSignalNotify* signalNotify = channelData.iSignalNotify;
-    if ( !aComm )  // RSocket
-        {
-        DoCreateSignalNotifyLC( channelData.iSignalNotify,
-                                signalNotify,
-                                itemsInCs );
-        retTemp = signalNotify->SetMedia( networkEntity );
-        if ( retTemp != KErrNone )
-            {
-            delete signalNotify;
-            signalNotify = NULL;
-            }
-        }
-
-    // Create upstream objects
-
-    CDunUpstream* upstreamRW;
-    DoCreateUpTransferObjectL( channelData.iUpstreamRW,
-                               upstreamRW,
-                               itemsInCs );
-    upstreamRW->SetBuffering( bufferUpPtr );
-    upstreamRW->SetMedia( networkEntity, EDunMediaContextNetwork );
-    upstreamRW->SetActivityCallback( this );
-
-    // Create downstream objects
-
-    CDunDownstream* downstreamRW;
-    DoCreateDownTransferObjectL( channelData.iDownstreamRW,
-                                 downstreamRW,
-                                 itemsInCs );
-    downstreamRW->SetBuffering( bufferDownPtr );
-    downstreamRW->SetMedia( networkEntity, EDunMediaContextNetwork );
-
-    // Save values
-
-    channelData.iNetwork = networkEntity;
-    channelData.iUpstreamRW = upstreamRW;
-    channelData.iDownstreamRW = downstreamRW;
-    channelData.iBufferUpstream = bufferUpstream;
-    channelData.iBufferDownstream = bufferDownstream;
-    channelData.iBufferUpPtr = bufferUpPtr;
-    channelData.iBufferDownPtr = bufferDownPtr;
-    channelData.iUpstreamSignalCopy = upstreamCopy;
-    channelData.iDownstreamSignalCopy = downstreamCopy;
-    channelData.iSignalNotify = signalNotify;
-
-    CleanupStack::Pop( itemsInCs );
-
-    // Set flag to indicate that advertisement is now possible
-    ManageAdvertisementStatusChange( ETrue, ETrue );
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoAllocateChannelL() complete" )));
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Adds connection monitor callback for either local media or network side
-// by connection ID
-// Connection monitor will be added to aIndex:th endpoint
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoAddConnMonCallback( TInt aIndex,
-                                           MDunConnMon* aCallback,
-                                           TDunDirection aDirection,
-                                           TBool aSignal )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback()" )));
-
-    if ( !iParent.iNetwork )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback() (iNetwork) not initialized!" )));
-        return KErrGeneral;
-        }
-
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback() (not found) complete" )));
-        return KErrNotFound;
-        }
-
-    TDunChannelData& channelData = iChannelData[aIndex];
-
-    // Get upstream and downstream
-    CDunUpstream* upstream = channelData.iUpstreamRW;
-    CDunDownstream* downstream = channelData.iDownstreamRW;
-
-    if ( aDirection == EDunReaderUpstream )
-        {
-        // Initialize stream for AT parsing (ignore errors)
-        upstream->InitializeForAtParsing( downstream,
-                                          channelData.iChannelName,
-                                          upstream,
-                                          downstream );
-        downstream->InitializeForDataPushing( upstream );
-        }
-
-    // Get stream type and operation type
-
-    TDunStreamType streamType =
-        static_cast<TDunStreamType>( aDirection & KDunStreamTypeMask );
-    TDunOperationType operationType =
-        static_cast<TDunOperationType>( aDirection & KDunOperationTypeMask );
-
-    if ( streamType == EDunStreamTypeUpstream )
-        {
-        // If signal copy object(s) exist then add RunL error monitoring for them
-        if ( channelData.iUpstreamSignalCopy )  // optional
-            {
-            // Add callback (ignore errors)
-            channelData.iUpstreamSignalCopy->AddCallback( aCallback );
-            }
-        }
-    else if ( streamType == EDunStreamTypeDownstream )
-        {
-        // If signal copy object(s) exist then add RunL error monitoring for them
-        if ( channelData.iDownstreamSignalCopy )  // optional
-            {
-            // Add callback (ignore errors)
-            channelData.iDownstreamSignalCopy->AddCallback( aCallback );
-            }
-        }
-    else
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback() (stream) not initialized!" ) ));
-        return KErrGeneral;
-        }
-
-    // Set signal notify callback
-
-    if ( aSignal && aDirection==EDunReaderDownstream )
-        {
-        if ( !channelData.iSignalNotify )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback() (iSignalNotify) not initialized" )));
-            return KErrGeneral;
-            }
-        // Add callback (ignore errors)
-        channelData.iSignalNotify->AddCallback( aCallback );
-        }
-
-    // Add callback (ignore errors)
-    if ( streamType == EDunStreamTypeUpstream )
-        {
-        upstream->AddConnMonCallback( aCallback, operationType );
-        }
-    else  // streamType == EDunStreamTypeDownstream
-        {
-        downstream->AddConnMonCallback( aCallback, operationType );
-        }
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoAddConnMonCallback() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Adds error to consider as no error condition when doing any of the four
-// endpoint's read/writer operation
-// Error will be added to aIndex:th endpoint
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoAddSkippedError( TInt aIndex,
-                                        TInt aError,
-                                        TDunDirection aDirection )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::AddOneSkippedError" ) ));
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() (not found) complete" )));
-        return KErrNotFound;
-        }
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    if ( aDirection != EDunReaderUpstream  &&
-         aDirection != EDunWriterUpstream &&
-         aDirection != EDunReaderDownstream &&
-         aDirection != EDunWriterDownstream )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() (ERROR) added" ) ));
-        return KErrNotSupported;
-        }
-
-    TDunStreamType streamType =
-        static_cast<TDunStreamType>( aDirection & KDunStreamTypeMask );
-    TDunOperationType operationType =
-        static_cast<TDunOperationType>( aDirection & KDunOperationTypeMask );
-
-    if ( streamType != EDunStreamTypeUpstream &&
-         streamType != EDunStreamTypeDownstream )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() (stream) not initialized!" ) ));
-        return KErrGeneral;
-        }
-
-    // Add skipped error (ignore errors)
-
-    if ( streamType == EDunStreamTypeUpstream )
-        {
-        channelData.iUpstreamRW->AddSkippedError( aError, operationType );
-        }
-    else if ( streamType == EDunStreamTypeDownstream )
-        {
-        channelData.iDownstreamRW->AddSkippedError( aError, operationType );
-        }
-    else
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() (stream) not initialized!" ) ));
-        return KErrGeneral;
-        }
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoAddSkippedError() complete" ) ));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Issues transfers requests for aIndex:th transfer objects
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoIssueTransferRequests( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests()" )));
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests() (not found) complete" )));
-        return KErrNotFound;
-        }
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    if ( !channelData.iUpstreamRW )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests() (iUpstreamRW) not initialized!" )));
-        return KErrGeneral;
-        }
-    if ( !channelData.iDownstreamRW )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests() (iDownstreamRW) not initialized!" )));
-        return KErrGeneral;
-        }
-
-    // Below issuing requests on signal objects (CDunSignalCopy,
-    // CDunSignalNotify) before issuing request on read/write objects
-    // (CDunUpstream/CDunDownstream). This is to guarantee that if signals are
-    // already set in local media side then they will be copied to network side
-    // before data.
-
-    if ( channelData.iUpstreamSignalCopy )  // optional (RComm)
-        {
-        channelData.iUpstreamSignalCopy->IssueRequest();
-        }
-    if ( channelData.iDownstreamSignalCopy )  // optional (RComm)
-        {
-        channelData.iDownstreamSignalCopy->IssueRequest();
-        }
-    if ( channelData.iSignalNotify )  // optional (RSocket)
-        {
-        channelData.iSignalNotify->IssueRequest();
-        }
-    channelData.iUpstreamRW->StartStream();
-    channelData.iDownstreamRW->StartStream();
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoIssueTransferRequests() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Stops transfers for aIndex:th transfer objects
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoStopTransfers( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers()" )));
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers() (not found) complete" )));
-        return KErrNotFound;
-        }
-
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers() (channel not found) complete" ), aIndex));
-        return KErrGeneral;
-        }
-
-    if ( !channelData.iUpstreamRW )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers() (iUpstreamRW) not initialized!" )));
-        return KErrGeneral;
-        }
-    if ( !channelData.iDownstreamRW )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers() (iDownstreamRW) not initialized!" )));
-        return KErrGeneral;
-        }
-
-    // Now stop operation of signal objects (CDunSignalCopy, CDunSignalNotify)
-    // before stopping operation on read/write objects (CDunUpstream/
-    // CDunDownstream). This is to ensure that signals don't change after
-    // stopping read/write which in turn could cause problems.
-
-    if ( channelData.iUpstreamSignalCopy )  // optional (RComm)
-        {
-        channelData.iUpstreamSignalCopy->Stop();
-        }
-    if ( channelData.iDownstreamSignalCopy )  // optional (RComm)
-        {
-        channelData.iDownstreamSignalCopy->Stop();
-        }
-    if ( channelData.iSignalNotify )  // optional (RSocket)
-        {
-        channelData.iSignalNotify->Stop();
-        }
-    channelData.iUpstreamRW->Stop();
-    channelData.iDownstreamRW->Stop();
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoStopTransfers() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtility.
-// Free aIndex:th channel's objects
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoFreeChannel( TInt aIndex )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoFreeChannel()" )));
-
-    TDunChannelData& channelData = iChannelData[aIndex];
-    if ( aIndex < 0 ||
-         aIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoFreeChannel (not found) complete" )));
-        return KErrNotFound;
-        }
-    if ( !channelData.iChannelInUse )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoFreeChannel (already free) complete" )));
-        return KErrNone;
-        }
-    if ( !iParent.iNetwork )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::DoFreeChannel (iNetwork) not initialized!" )));
-        return KErrGeneral;
-        }
-
-    DoStopTransfers( aIndex );
-    DeleteOneNetworkData( aIndex );
-    DeleteOneLocalData( aIndex );
-    DeleteBuffering( aIndex );
-
-    iParent.iNetwork->FreeChannel( channelData.iNetwork );
-
-    channelData.iNetwork = NULL;
-    channelData.iComm = NULL;
-    channelData.iSocket = NULL;
-    channelData.iChannelInUse = EFalse;
-
-    // If note exist then stop it now as no reason to show it anymore
-    if ( iParent.iNoteHandler )
-        {
-        iParent.iNoteHandler->Stop();
-        }
-    // Set flag to indicate that advertisement is now possible
-    ManageAdvertisementStatusChange( ETrue, EFalse );
-
-    FTRACE(FPrint( _L("CDunTransUtils::DoFreeChannel() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunTransporterUtilityAux.
-// Gets local ID counterpart of a network ID
-// ---------------------------------------------------------------------------
-//
-TConnId CDunTransUtils::GetLocalId( RComm* aComm )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::GetLocalId()" )));
-    TInt mediaIndex = iParent.GetMediaIndex( aComm, EDunMediaContextNetwork );
-    if ( mediaIndex < 0 )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::GetLocalId() (ERROR) complete (%d)" ), mediaIndex));
-        return NULL;
-        }
-    if ( mediaIndex >= iChannelData.Count() )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::GetLocalId() (not found) complete" ) ));
-        return NULL;
-        }
-    TDunChannelData& channelData = iChannelData[mediaIndex];
-    if ( channelData.iComm )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::GetLocalId() (iComm) complete" )));
-        return channelData.iComm;
-        }
-    if ( channelData.iSocket )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::GetLocalId() (iSocket) complete" )));
-        return channelData.iSocket;
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::GetLocalId() (ERROR) complete" )));
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// From MDunTransporterUtilityAux.
-// Notifies when serious read/write error is detected on a connection
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::DoNotifyConnectionNotOk(
-    RComm* aComm,
-    RSocket* aSocket,
-    TDunConnectionReason& aConnReason,
-    RPointerArray<MDunConnMon>& aCallbacks )
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::DoNotifyConnectionNotOk()" )));
-    TConnId localId = NULL;
-    if ( aComm )
-        {
-        localId = aComm;
-        }
-    else if ( aSocket )
-        {
-        localId = aSocket;
-        }
-    TInt i;
-    TInt count = aCallbacks.Count();
-    for ( i=0; i<count; i++ )
-        {
-        if ( !aCallbacks[i] )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::DoNotifyConnectionNotOk() (iCallbacks[%d]) not initialized!" ), i));
-            return KErrGeneral;
-            }
-        TRAP_IGNORE(
-            aCallbacks[i]->NotifyProgressChangeL( localId, aConnReason ) );
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::DoNotifyConnectionNotOk() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunActivityManager.
-// Notifies about activity on a channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::NotifyChannelActivity()
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelActivity()" )));
-    iParent.iActiveChannels++;
-    if ( iParent.iActiveChannels == 1 )
-        {
-        // Now set key and notify (only once) that DUN is active
-        TInt retTemp = RProperty::Set( KPSUidDialupConnStatus,
-                                       KDialupConnStatus,
-                                       EDialupActive );
-        if ( retTemp != KErrNone )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelActivity() (ERROR) complete" )));
-            return retTemp;
-            }
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelActivity() complete" )));
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDunActivityManager.
-// Notifies about inactivity on a channel
-// ---------------------------------------------------------------------------
-//
-TInt CDunTransUtils::NotifyChannelInactivity()
-    {
-    FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelInactivity()" )));
-    if ( iParent.iActiveChannels <= 0 )
-        {
-        FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelInactivity() (wrong iActiveChannels!) complete" )));
-        return KErrGeneral;
-        }
-    iParent.iActiveChannels--;
-    if ( iParent.iActiveChannels == 0 )
-        {
-        // Now set key and notify (only once) that DUN is inactive
-        TInt retTemp = RProperty::Set( KPSUidDialupConnStatus,
-                                       KDialupConnStatus,
-                                       EDialupInactive );
-        if ( retTemp != KErrNone )
-            {
-            FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelInactivity() (ERROR) complete" )));
-            return retTemp;
-            }
-        }
-    FTRACE(FPrint( _L("CDunTransUtils::NotifyChannelInactivity() complete" )));
-    return KErrNone;
-    }