diff -r 493788a4a8a4 -r 3bdc3b853094 omadrm/drmplugins/drmudtmodule/src/DrmUdtConn.cpp --- a/omadrm/drmplugins/drmudtmodule/src/DrmUdtConn.cpp Fri Apr 16 15:14:55 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,311 +0,0 @@ -/* -* Copyright (c) 2002-2004 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: ?Description -* -*/ - - -// INCLUDE FILES - -#include "DrmUdtConn.h" -#include "DrmUdtObserver.h" - -#include -#include -#include -#include - -// #include // for checking APs - -#ifdef _DEBUG -#define LOGGING -#endif - -#define LOGGING - -#ifdef LOGGING -_LIT(KLogDir, "DRM"); -_LIT(KLogName, "UDT.log"); -#include "flogger.h" -#define LOG(string) \ - RFileLogger::Write(KLogDir, KLogName, \ - EFileLoggingModeAppend, string); -#define LOGHEX(buffer) \ - RFileLogger::HexDump(KLogDir, KLogName, \ - EFileLoggingModeAppend, _S(""), _S(""), \ - buffer.Ptr(), buffer.Length()); -#else -#define LOG -#define LOGHEX -#endif - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CDrmUdtConn::NewL() -// --------------------------------------------------------- -// -CDrmUdtConn* CDrmUdtConn::NewL() - { - LOG( _L("CDrmUdtConn::NewL") ); - CDrmUdtConn* conn = new (ELeave) CDrmUdtConn(); - CleanupStack::PushL( conn ); - conn->ConstructL(); - CleanupStack::Pop( conn ); - return conn; - } - -// --------------------------------------------------------- -// CDrmUdtConn::~CDrmUdtConn() -// --------------------------------------------------------- -// -CDrmUdtConn::~CDrmUdtConn() - { - LOG( _L("CDrmUdtConn::~CDrmUdtConn") ); - Cancel(); - iConnection.Close(); - iSocketServ.Close(); - } - -// --------------------------------------------------------- -// CDrmUdtConn::ConnectL() -// --------------------------------------------------------- -// -void CDrmUdtConn::ConnectL( TUint32 aIap, - MDrmUdtObserver* aObserver, - TRequestStatus* aStatus ) - { - LOG( _L("CDrmUdtConn::ConnectL") ); - - iObserver = aObserver; - - if ( iState == EInit ) - { - // Not connected. Attach to existing connection, or create new one if - // allowed. - iStatus = KErrGeneral; - - // Make this part atomic by pushing closes on the stack. - User::LeaveIfError( iSocketServ.Connect() ); - CleanupClosePushL( iSocketServ ); - User::LeaveIfError( iConnection.Open( iSocketServ ) ); - CleanupClosePushL( iConnection ); - - TConnectionInfoBuf connInfo; - TUint count; - User::LeaveIfError( iConnection.EnumerateConnections( count ) ); - TUint i; - if ( count ) - { - // Select from existing connections. Try to make AP match. - for ( i = count; i; i-- ) - { - // Note: GetConnectionInfo expects 1-based index. - User::LeaveIfError( iConnection.GetConnectionInfo( i, connInfo ) ); - if ( aIap == 0 || connInfo().iIapId == aIap ) - { - // "Accept any" or AP match. Attach to this one. - break; - } - } - if ( !i ) - { - // No AP match, select AP with largest index. - User::LeaveIfError - ( iConnection.GetConnectionInfo( count, connInfo ) ); - } - User::LeaveIfError - ( iConnection.Attach( connInfo, RConnection::EAttachTypeNormal ) ); - iState = EConnected; - iStatus = KErrNone; - } - else - { - // No existing connections, create new one. -#ifdef __WINS__ - // WINS connection creation does not work if preferences are given. - // Defaults are to be used always. - iConnection.Start( iStatus ); -#else - // Note: the TCommDbConnPref must NOT be stack variable. - // It must persist until completion of RConnection::Start(). - iConnPref.SetDirection( ECommDbConnectionDirectionOutgoing ); - iConnPref.SetDialogPreference( ECommDbDialogPrefPrompt ); - iConnPref.SetBearerSet( ECommDbBearerCSD | ECommDbBearerWcdma ); - // New connection is always created with user-selected AP; - // so 0 is used instead of aIap. - iConnPref.SetIapId( 0 ); - iConnection.Start( iConnPref, iStatus ); -#endif - if ( iObserver ) - { - iObserver->ConnectionStartedL(); - } - - iState = EConnecting; - SetActive(); // The only path with a real async request. - } - CleanupStack::Pop( 2 ); // closing iConn and iSockServ - // End of atomic part. - } - else - { - // Not expecting this to be called in other states. - } - - iParentStatus = aStatus; - *iParentStatus = KRequestPending; - - if ( !IsActive() ) - { - // Unless we have an outstanding connect request (iConn.Start), - // we are done. - User::RequestComplete( iParentStatus, iStatus.Int() ); - iParentStatus = NULL; - } - } - -// --------------------------------------------------------- -// CDrmUdtConn::Close() -// --------------------------------------------------------- -// -void CDrmUdtConn::Close() - { - LOG( _L("CDrmUdtConn::Close") ); - Cancel(); - iConnection.Close(); - iSocketServ.Close(); - iState = EInit; - } - -// --------------------------------------------------------- -// CDrmUdtConn::IsConnected() -// --------------------------------------------------------- -// -TBool CDrmUdtConn::IsConnected( TUint32& aIap ) - { - LOG( _L("CDrmUdtConn::IsConnected") ); - TBool connected( EFalse ); - if( iState == EConnected ) - { - TBuf iapId; - _LIT( KFormatIapId, "%S\\%S" ); - TPtrC iap( IAP ); - TPtrC id( COMMDB_ID ); - iapId.Format( KFormatIapId, &iap, &id ); - TInt err = iConnection.GetIntSetting( iapId, aIap ); - connected = err ? EFalse : ETrue; - } - return connected; - } - -// --------------------------------------------------------- -// CDrmUdtConn::CConnection() -// --------------------------------------------------------- -// -CDrmUdtConn::CDrmUdtConn() -: CActive( CActive::EPriorityStandard ), - iState( EInit ) - { - LOG( _L("CDrmUdtConn::CDrmUdtConn") ); - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------- -// CDrmUdtConn::ConstructL() -// --------------------------------------------------------- -// -void CDrmUdtConn::ConstructL() - { - LOG( _L("CDrmUdtConn::ConstructL") ); - /* - TUint32 APs( 0 ); - CCommsDatabase* commsdb = CCommsDatabase::NewL( EDatabaseTypeIAP ); - CleanupStack::PushL( commsdb ); - CApSelect* apSel = CApSelect::NewLC ( - *commsdb, - KEApIspTypeAll, - EApBearerTypeAll, - KEApSortUidAscending ); - APs = apSel->Count(); - CleanupStack::PopAndDestroy( 2 ); - if ( !APs ) - { - // No AP defined - User::Leave( KErrRoapGeneral ); - } - */ - } - -// --------------------------------------------------------- -// CDrmUdtConn::DoCancel() -// --------------------------------------------------------- -// -void CDrmUdtConn::DoCancel() - { - LOG( _L("CDrmUdtConn::DoCancel") ); - iConnection.Close(); - iSocketServ.Close(); - User::RequestComplete( iParentStatus, KErrCancel ); - } - -// --------------------------------------------------------- -// CDrmUdtConn::RunL() -// --------------------------------------------------------- -// -void CDrmUdtConn::RunL() - { - LOG( _L("CDrmUdtConn::RunL") ); - User::LeaveIfError( iStatus.Int() ); // Handle errors in RunError(). - - iState = EConnected; - User::RequestComplete( iParentStatus, iStatus.Int() ); - iParentStatus = NULL; - } - -// --------------------------------------------------------- -// CDrmUdtConn::RunError() -// --------------------------------------------------------- -// -TInt CDrmUdtConn::RunError( TInt /*aError*/ ) - { - LOG( _L("CDrmUdtConn::RunError") ); - iConnection.Close(); - iSocketServ.Close(); - iState = EInit; - User::RequestComplete( iParentStatus, iStatus.Int() ); - iParentStatus = NULL; - return KErrNone; - } - -// --------------------------------------------------------- -// CRoapConnection::Conn() -// --------------------------------------------------------- -// -RSocketServ& CDrmUdtConn::SocketServ() - { - LOG( _L("CDrmUdtConn::SocketServ") ); - return iSocketServ; - } - -// --------------------------------------------------------- -// CRoapConnection::Conn() -// --------------------------------------------------------- -// -RConnection& CDrmUdtConn::Conn() - { - LOG( _L("CDrmUdtConn::Conn") ); - return iConnection; - } -