diff -r 0aa8cc770c8a -r 4a793f564d72 localconnectivityservice/dun/utils/src/DunTransporter.cpp --- a/localconnectivityservice/dun/utils/src/DunTransporter.cpp Tue Aug 31 16:03:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,891 +0,0 @@ -/* -* Copyright (c) 2006-2008 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: Managing abstracted "channels" of network side communication -* -*/ - - -#include "DunTransUtils.h" -#include "DunTransporter.h" -#include "DunDataWaiter.h" -#include "DunUpstream.h" -#include "DunDownstream.h" -#include "DunSignalCopy.h" -#include "DunNoteHandler.h" -#include "DunUtils.h" -#include "DunDebug.h" -#include "DunPlugin.h" - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -EXPORT_C CDunTransporter* CDunTransporter::NewL( - MDunPluginManager* aPluginManager, - TInt aNumOfMaxChannels ) - { - CDunTransporter* self = new (ELeave) CDunTransporter( aPluginManager, - aNumOfMaxChannels ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CDunTransporter::~CDunTransporter() - { - FTRACE(FPrint( _L("CDunTransporter::~CDunTransporter()" ))); - UnInitialize(); - FTRACE(FPrint( _L("CDunTransporter::~CDunTransporter() complete" ))); - } - -// --------------------------------------------------------------------------- -// Number of allocated channels, is the same number as allocated and active -// (non-waiting) channels -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::NumberOfAllocatedChannels() - { - FTRACE(FPrint( _L("CDunTransporter::NumberOfAllocatedChannels()" ))); - TInt i; - TInt allocChannels = 0; - TInt count = iChannelData.Count(); - for ( i=0; iNumberOfWaiters(); - FTRACE(FPrint( _L("CDunTransporter::NumberWaitingChannels() complete" ))); - return waiters; - } - -// --------------------------------------------------------------------------- -// Gets the number of allocated channels by owner UID, is the same number as -// allocated and active (non-waiting) channels -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::GetNumberOfAllocatedChannelsByUid( - TUid aOwnerUid ) - { - FTRACE(FPrint( _L("CDunTransporter::GetNumberOfAllocatedChannelsByUid()" ))); - TInt i; - TInt allocChannels = 0; - TInt count = iChannelData.Count(); - for ( i=0; iGetNumberOfWaitersByUid( aOwnerUid ); - FTRACE(FPrint( _L("CDunTransporter::GetNumberWaitingChannelsByUid() complete" ))); - return waiters; - } - -// --------------------------------------------------------------------------- -// Transporter's service advertisement status -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CDunTransporter::AdvertisementStatus() - { - FTRACE(FPrint( _L("CDunTransporter::AdvertisementStatus()" ))); - FTRACE(FPrint( _L("CDunTransporter::AdvertisementStatus() complete" ))); - return iAdvertise; - } - -// --------------------------------------------------------------------------- -// Creates a channel of communication between local media (aComm) and network -// Local media object pointer also works as a connection ID for the -// allocated channel -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AllocateChannelL( - RComm* aComm, - TUid aOwnerUid, - const TDesC8& aName, - TBool aEnqueuedFail, - MDunBufferCorrection* aCorrection ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RComm)" ))); - - if ( !aComm ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (aComm not initialized!) complete" ))); - User::Leave( KErrGeneral ); - } - - if ( !aComm->SubSessionHandle() ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RComm) (bad handle) complete" ) )); - User::Leave( KErrBadHandle ); - } - - TInt retTemp = InitializeOnDemand(); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RComm) (ERROR) complete" ) )); - User::Leave( retTemp ); - } - - iChanMan->AddConnWaiterL( aComm, - aOwnerUid, - aName, - aEnqueuedFail, - aCorrection ); - - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RComm) complete" ))); - } - -// --------------------------------------------------------------------------- -// Creates a channel of communication between local media (aSocket) and -// network -// Local media object pointer also works as a connection ID for the -// allocated channel -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AllocateChannelL( - RSocket* aSocket, - TUid aOwnerUid, - const TDesC8& aName, - TBool aEnqueuedFail, - TBool& aNoFreeChans ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket)" ))); - - aNoFreeChans = EFalse; // Initialize now if plugin didn't do it already - - if ( !aSocket ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (aSocket not initialized!) complete" ))); - User::Leave( KErrGeneral ); - } - if ( !aSocket->SubSessionHandle() ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) (bad handle) complete" ) )); - User::Leave( KErrBadHandle ); - } - TInt retTemp = InitializeOnDemand(); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) (ERROR) complete" ))); - User::Leave( retTemp ); - } - TInt firstFree = iUtility->InitializeFirstFreeChannel( aSocket ); - if ( firstFree < 0 ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) (firstfree failed!) complete" ) )); - User::Leave( firstFree ); - } - if ( firstFree >= iChannelData.Count() ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) (firstfree failed!) complete" ) )); - User::Leave( KErrGeneral ); - } - TInt bufferLength = KErrNotFound; - // bufferLength will be omitted (not needed to set to RSocket) - TRAPD( retTrap, - iUtility->DoAllocateChannelL(NULL, bufferLength, firstFree, NULL) ); - if ( retTrap != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) trapped!" ) )); - UnInitializeOnDemand(); // remove unused initialized channel - if ( retTrap == KErrTooBig ) - { - if ( aEnqueuedFail ) - { - // Inform plugin enqueue request - iPluginManager->NotifyPluginEnqueueRequest( aOwnerUid ); - } - aNoFreeChans = ETrue; // Inform plugin about no free channels - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) complete" ))); - User::Leave( KErrTooBig ); - } - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) complete" ))); - User::Leave( retTrap ); - } - TDunChannelData& channelData = iChannelData[firstFree]; - channelData.iSocket = aSocket; - channelData.iChannelName = HBufC8::NewMaxL( aName.Length() ); - TPtr8 chanNamePtr = channelData.iChannelName->Des(); - chanNamePtr.Copy( aName ); - channelData.iUpstreamRW->SetMedia( aSocket, EDunMediaContextLocal ); - channelData.iDownstreamRW->SetMedia( aSocket, EDunMediaContextLocal ); - channelData.iOwnerUid = aOwnerUid; - // Channel now occupied - channelData.iChannelInUse = ETrue; - - // Clear the queue, just to be sure - iPluginManager->NotifyPluginDequeueRequest( aOwnerUid ); - - FTRACE(FPrint( _L("CDunTransporter::AllocateChannel() (RSocket) complete" ))); - } - -// --------------------------------------------------------------------------- -// Frees an allocated channel by local media (aComm) connection ID -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::FreeChannel( RComm* aComm ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm)" ))); - - TInt retTemp = CheckInitAndHandle( aComm ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm) (ERROR) complete" ) )); - return retTemp; - } - - retTemp = iChanMan->RemoveConnWaiter( aComm ); - if ( retTemp == KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm) complete" ))); - return KErrNone; - } - - // No waiter found, so try to find from channels - TInt mediaIndex = GetMediaIndex( aComm ); - if ( mediaIndex < 0 ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm) (ERROR) complete" ) )); - return mediaIndex; - } - - retTemp = iUtility->DoFreeChannel( mediaIndex ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm) (ERROR) complete" ))); - return retTemp; - } - UnInitializeOnDemand(); - - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RComm) complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Frees an allocated channel by local media (aSocket) connection ID -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::FreeChannel( RSocket* aSocket ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RSocket)" ))); - - TInt retTemp = CheckInitAndHandle( aSocket ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RSocket) (ERROR) complete" ) )); - return retTemp; - } - - TInt mediaIndex = GetMediaIndex( aSocket ); - if ( mediaIndex < 0 ) - { - return mediaIndex; - } - - retTemp = iUtility->DoFreeChannel( mediaIndex ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RSocket) (ERROR) complete" ) )); - return retTemp; - } - UnInitializeOnDemand(); - - FTRACE(FPrint( _L("CDunTransporter::FreeChannel() (RSocket) complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Issues transfer requests for all transfer objects by local media -// (aComm) connection ID -// This will cause the Transporter by be ready for transferring data -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::IssueTransferRequestsL( RComm* aComm ) - { - FTRACE(FPrint( _L("CDunTransporter::IssueTransferRequests() (RComm)" ))); - - User::LeaveIfError( CheckInitAndHandle( aComm ) ); - TInt retTemp = iChanMan->IssueConnWaiterRequest( aComm ); - if ( retTemp == KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::IssueTransferRequests() (RComm) complete" ))); - return; - } - - // No waiter found, so try to find from channels - TInt mediaIndex = GetMediaIndexL( aComm ); - User::LeaveIfError( iUtility->DoIssueTransferRequests( mediaIndex ) ); - - FTRACE(FPrint( _L("CDunTransporter::IssueTransferRequests() (RComm) complete" ))); - } - -// --------------------------------------------------------------------------- -// Issues transfer requests for all transfer objects by local media -// (aSocket) connection ID -// This will cause the Transporter by be ready for transferring data -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::IssueTransferRequestsL( RSocket* aSocket ) - { - FTRACE(FPrint( _L("CDunTransporter::IssueTransferRequests() (RSocket)" ))); - - User::LeaveIfError( CheckInitAndHandle( aSocket ) ); - TInt mediaIndex = GetMediaIndexL( aSocket ); - User::LeaveIfError( iUtility->DoIssueTransferRequests(mediaIndex) ); - - FTRACE(FPrint( _L("CDunTransporter::IssueTransferRequests() (RSocket) complete" ))); - } - -// --------------------------------------------------------------------------- -// Stops transfers for all transfer objects by local media (aComm) -// connection ID -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::StopTransfers( RComm* aComm ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm)" ))); - - TInt retTemp = CheckInitAndHandle( aComm ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm) (ERROR) complete" ) )); - return retTemp; - } - - retTemp = iChanMan->StopConnWaiter( aComm ); - if ( retTemp == KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm) complete" ))); - return KErrNone; - } - - // No waiter found, so try to find from channels - TInt mediaIndex = GetMediaIndex( aComm ); - if ( mediaIndex < 0 ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm) (ERROR) complete" ) )); - return mediaIndex; - } - - retTemp = iUtility->DoStopTransfers( mediaIndex ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm) (ERROR) complete" ))); - return retTemp; - } - - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RComm) complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Stops transfers for all transfer objects by local media (aSocket) -// connection ID -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CDunTransporter::StopTransfers( RSocket* aSocket ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RSocket)" ))); - - TInt retTemp = CheckInitAndHandle( aSocket ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RSocket) (ERROR) complete" ) )); - return retTemp; - } - - TInt mediaIndex = GetMediaIndex( aSocket ); - if ( mediaIndex < 0 ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RSocket) (ERROR) complete" ) )); - return mediaIndex; - } - - retTemp = iUtility->DoStopTransfers( mediaIndex ); - if ( retTemp != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RSocket) (ERROR) complete" ))); - return retTemp; - } - - FTRACE(FPrint( _L("CDunTransporter::StopTransfers() (RSocket) complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Adds connection monitor callback for either local media or network side -// by connection ID -// Callbacks will be called read/write error is detected during endpoint -// operation -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AddConnMonCallbackL( RComm* aComm, - MDunConnMon* aCallback, - TDunDirection aDirection, - TBool /*aSignal*/ ) - { - FTRACE(FPrint( _L("CDunTransporter::AddConnMonCallbackL() (RComm)" ))); - - User::LeaveIfError( CheckInitAndHandle( aComm ) ); - TInt retTemp = iChanMan->SaveWaiterConnMonCallbackL( aComm, - aCallback, - aDirection ); - if ( retTemp == KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::AddConnMonCallbackL() (RComm) complete" ))); - return; - } - - TInt mediaIndex = GetMediaIndexL( aComm ); - User::LeaveIfError( iUtility->DoAddConnMonCallback( mediaIndex, - aCallback, - aDirection, - NULL )); - - FTRACE(FPrint( _L("CDunTransporter::AddConnMonCallbackL() (RComm) complete" ))); - } - -// --------------------------------------------------------------------------- -// Adds connection monitor callback for either local media or network side -// by connection ID -// Callbacks will be called when line status switches to high or low -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AddConnMonCallbackL( RSocket* aSocket, - MDunConnMon* aCallback, - TDunDirection aDirection, - TBool aSignal ) - { - FTRACE(FPrint( _L("CDunTransporter::AddConnMonCallbackL() (RSocket)" ))); - - User::LeaveIfError( CheckInitAndHandle( aSocket ) ); - TInt mediaIndex = GetMediaIndexL( aSocket ); - User::LeaveIfError( iUtility->DoAddConnMonCallback( mediaIndex, - aCallback, - aDirection, - aSignal )); - - FTRACE(FPrint( _L("CDunTransporter::AddConnMonCallbackL() (RSocket) complete" ))); - } - -// --------------------------------------------------------------------------- -// Adds error to consider as no error condition when doing any of the four -// endpoint's read/writer operation -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AddSkippedErrorL( TInt aError, - RComm* aComm, - TDunDirection aDirection ) - { - FTRACE(FPrint( _L("CDunTransporter::AddSkippedErrorL() (RComm)" ))); - - User::LeaveIfError( CheckInitAndHandle( aComm ) ); - TInt retTemp = iChanMan->SaveWaiterSkippedErrorL( aError, - aComm, - aDirection ); - if ( retTemp == KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::AddSkippedErrorL() (RComm) complete" ))); - return; - } - - TInt mediaIndex = GetMediaIndexL( aComm ); - User::LeaveIfError( iUtility->DoAddSkippedError( mediaIndex, - aError, - aDirection )); - - FTRACE(FPrint( _L("CDunTransporter::AddSkippedErrorL() (RComm) complete" ))); - } - -// --------------------------------------------------------------------------- -// Adds error to consider as no error condition when doing any of the four -// endpoint's read/writer operation -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::AddSkippedErrorL( TInt aError, - RSocket* aSocket, - TDunDirection aDirection ) - { - FTRACE(FPrint( _L("CDunTransporter::AddSkippedErrorL() (RSocket)" ))); - - User::LeaveIfError( CheckInitAndHandle( aSocket ) ); - TInt mediaIndex = GetMediaIndexL( aSocket ); - User::LeaveIfError( iUtility->DoAddSkippedError( mediaIndex, - aError, - aDirection )); - - FTRACE(FPrint( _L("CDunTransporter::AddSkippedErrorL() (RSocket) complete" ))); - } - -// --------------------------------------------------------------------------- -// Sets service advertisement monitor callback by owner UID -// Callbacks will be called when advertisement status changes. -// The callbacks are updated with every successfully completed -// channel allocation/free (and allocation failure) so it is recommended -// to call this method after AllocateChannelL(). -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::SetAdvertisementMonitorL( - TUid aOwnerUid, - MDunServAdvMon* aCallback ) - { - FTRACE(FPrint( _L("CDunTransporter::SetAdvertisementMonitorL()" ))); - TInt i; - TInt count; - if ( !aCallback ) - { - FTRACE(FPrint( _L("CDunTransporter::SetAdvertisementMonitorL() (aCallback) not initialized!" ))); - User::Leave( KErrGeneral ); - } - count = iServAdvData.Count(); - for ( i=0; i( utility ); - MDunTransporterUtilityAux* utilityAux = static_cast( utility ); - iChanMan = CDunChanMan::NewL( *this, iUtility, utilityAux, iPluginManager ); - iNetwork = CDunNetDataport::NewL( iNumOfMaxChannels ); - iNetwork->InitializeL(); - iNoteHandler = CDunNoteHandler::NewL(); - iInitialized = ETrue; - - FTRACE(FPrint( _L("CDunTransporter::InitializeL() complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// UnInitializes the transporter, can be called as the last operation -// --------------------------------------------------------------------------- -// -EXPORT_C void CDunTransporter::UnInitialize() - { - FTRACE(FPrint( _L("CDunTransporter::UnInitialize()" ))); - // first stop channel waiters before deletion - if ( iChanMan ) - { - iChanMan->ResetData(); - } - // now ready to remove channel data as no existing waiters - TInt i; - TInt count = iChannelData.Count(); - for ( i=0; iDoFreeChannel( i ); - } - } - iChannelData.Close(); - iServAdvData.Close(); - DeleteTransporter(); - iInitialized = EFalse; - FTRACE(FPrint( _L("CDunTransporter::UnInitialize() complete" ))); - } - -// --------------------------------------------------------------------------- -// Initialize the transporter -// --------------------------------------------------------------------------- -// -TInt CDunTransporter::InitializeOnDemand() - { - FTRACE(FPrint( _L("CDunTransporter::InitializeOnDemand()" ) )); - if ( !iInitialized ) - { - TRAPD( retTrap, InitializeL() ); - if ( retTrap != KErrNone ) - { - FTRACE(FPrint( _L("CDunTransporter::InitializeOnDemand() initialize failed!" ) )); - return retTrap; - } - } - FTRACE(FPrint( _L("CDunTransporter::InitializeOnDemand() complete" ) )); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// UnInitialize the transporter -// --------------------------------------------------------------------------- -// -TInt CDunTransporter::UnInitializeOnDemand() - { - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand()" ) )); - if ( !iInitialized ) - { - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand() (not ready) complete" ) )); - return KErrNotReady; - } - // Check if non-free channel exists, also remove empty channel(s) - TInt i; - TBool allFree = ETrue; - for ( i=iChannelData.Count()-1; i>=0; i-- ) - { - TDunChannelData& channelData = iChannelData[i]; - if ( !channelData.iChannelInUse ) - { - if ( !channelData.iNetwork ) - { - // iChannelData must not contain data here - iChannelData.Remove( i ); - } - } - else // channel not free - { - allFree = EFalse; - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand() channel found" ) )); - } - } - if ( iChanMan->NumberOfWaiters() > 0 ) - { - allFree = EFalse; - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand() waiter found" ) )); - } - if ( allFree ) - { - // All channels were free -> uninitialize - UnInitialize(); - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand() complete" ) )); - return KErrNone; - } - FTRACE(FPrint( _L("CDunTransporter::UnInitializeOnDemand() (not ready) complete" ) )); - return KErrNotReady; - } - -// --------------------------------------------------------------------------- -// Returns index of media for connection ID -// --------------------------------------------------------------------------- -// -TInt CDunTransporter::GetMediaIndex( TConnId aConnId, - TDunMediaContext aMediaContext ) - { - FTRACE(FPrint( _L("CDunTransporter::GetMediaIndex()" ))); - if ( aMediaContext != EDunMediaContextNetwork && - aMediaContext != EDunMediaContextLocal ) - { - FTRACE(FPrint( _L("CDunTransporter::GetMediaIndex() (not supported) complete" ))); - return KErrNotSupported; - } - TInt i; - TInt count = iChannelData.Count(); - for ( i=0; i( aConnId ); - if ( !subBase->SubSessionHandle() ) - { - FTRACE(FPrint( _L("CDunTransporter::CheckInitAndHandle() (bad handle) complete" ))); - return KErrBadHandle; - } - FTRACE(FPrint( _L("CDunTransporter::CheckInitAndHandle() complete" ))); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Deletes own internal data -// --------------------------------------------------------------------------- -// -void CDunTransporter::DeleteTransporter() - { - FTRACE(FPrint( _L("CDunTransporter::DeleteTransporter()" ))); - // first, delete channel manager with waiters - delete iChanMan; - iChanMan = NULL; - // second, delete the network object - delete iNetwork; - iNetwork = NULL; - // as last step delete utility class - CDunTransUtils* utility = static_cast( iUtility ); - delete utility; - iUtility = NULL; - // delete note class - delete iNoteHandler; - iNoteHandler = NULL; - FTRACE(FPrint( _L("CDunTransporter::DeleteTransporter() complete" ))); - }