diff -r bbe4544dfd31 -r dd6aaa97e7b1 dbcreator/commsdatcreator/Src/cdcprocessorpacketdata.cpp --- a/dbcreator/commsdatcreator/Src/cdcprocessorpacketdata.cpp Fri Aug 06 19:11:03 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,473 +0,0 @@ -/* -* Copyright (c) 2005 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: Implementation of the class CProcessorPacketData -* -*/ - - - - -// INCLUDE FILES - -#include "cdcprocessorpacketdata.h" -#include "cdclogger.h" -#include "cdctagcontainer.h" - -#include -#include -#include -#include -#include -#include - -#include -#include - -using namespace CMManager; - -// CONSTANTS - -const TUint32 KDefaultPortNum = 80; -const TInt32 KDefaultLinger = 0; -const TUint KIapColumn = 0x00000100; -const TUint KLingerColumn = 0x00000200; -const TUint KColumnMask = 0xFFFFFF00; -const TUint KRowMask = 0x000000FF; - -// These constants are used to identify tags of iInFile. - -//ISP types -_LIT16( KStrISPInternet, "0" ); -_LIT16( KStrISPWAP, "1" ); - -//Connection type -_LIT16( KStrContinuous, "Continuous" ); -_LIT16( KStrTemporary, "Temporary" ); - -//Password authentication -_LIT16( KStrPwdAuthNormal, "Normal" ); -_LIT16( KStrPwdAuthSecure, "Secure" ); - -//Network types -_LIT16( KStrNetworkIPv4, "IPv4" ); -_LIT16( KStrNetworkIPv6, "IPv6" ); - - -// ================= MEMBER FUNCTIONS ======================= -CLingerElement::~CLingerElement() - { - delete iName; - delete iLinger; - } -// --------------------------------------------------------- -// CProcessorPacketData::NewL -// --------------------------------------------------------- -// -CProcessorPacketData* CProcessorPacketData::NewL( - CReaderBase* aFileReader, - RCmManagerExt& aCmManager, - RPointerArray< RCmConnectionMethodExt >& aPluginArray, - RPointerArray< HBufC >& aPluginNames, - RPointerArray< CLingerElement >& aLingerSettings) - { - CProcessorPacketData* self = new ( ELeave ) CProcessorPacketData - ( aFileReader, - aCmManager, - aPluginArray, - aPluginNames, - aLingerSettings); - CleanupStack::PushL( self ); - - // From base class - self->ConstructL(); - CleanupStack::Pop( self ); // self - return self; - } - - -// --------------------------------------------------------- -// CProcessorPacketData::~CProcessorPacketData -// --------------------------------------------------------- -// -CProcessorPacketData::~CProcessorPacketData() - { - } - - -// --------------------------------------------------------- -// CProcessorPacketData::ConstructL -// --------------------------------------------------------- -// -void CProcessorPacketData::ConstructL() - { - } - - -// --------------------------------------------------------- -// CProcessorPacketData::CProcessorPacketData -// --------------------------------------------------------- -// -CProcessorPacketData::CProcessorPacketData( CReaderBase* aFileReader, - RCmManagerExt& aCmManager, - RPointerArray< RCmConnectionMethodExt >& aPluginArray, - RPointerArray< HBufC >& aPluginNames, - RPointerArray< CLingerElement >& aLingerSettings ) : - CProcessorBase( aFileReader, - aCmManager, - aPluginArray, - aPluginNames ) - - { - iLingerSettings = &aLingerSettings; - iBearerType = KUidPacketDataBearerType; - } - -// --------------------------------------------------------- -// CProcessorPacketData::ProcessTagL -// --------------------------------------------------------- -// -void CProcessorPacketData::ProcessSpecialFieldsL( TInt aField, HBufC* aPtrTag, TInt /*aDx*/ ) - { - - switch ( aField ) - { - case EPacketDataAPName: //fall through - case EPacketDataIFAuthName: //fall through - case EPacketDataIFAuthPass: //fall through - case EPacketDataIPAddr: //fall through - { - // Unicode 16-bit text - iPlugin.SetStringAttributeL( aField, *aPtrTag ); - - break; - } - case EPacketDataIPNameServer1: //fall through - case EPacketDataIPNameServer2: //fall through - case EPacketDataIPIP6NameServer1: //fall through - case EPacketDataIPIP6NameServer2: //fall through - { - iPlugin.SetStringAttributeL( aField, *aPtrTag ); - SetAddressFromServerL( EPacketDataIPNameServer1, - EPacketDataIPNameServer2, - EPacketDataIPDNSAddrFromServer, - EPacketDataIPIP6NameServer1, - EPacketDataIPIP6NameServer2, - EPacketDataIPIP6DNSAddrFromServer ); - break; - } - case ECmWapIPGatewayAddress: - { - // Unicode 16-bit text - if ( aPtrTag->Length() ) - { - iPlugin.SetStringAttributeL( aField, *aPtrTag ); - } - - break; - } - case EPacketDataIFPromptForAuth: - { - // Boolean - if ( !aPtrTag->CompareF( KStrYes ) ) - { - iPlugin.SetBoolAttributeL( aField, ETrue ); - } - else if ( !aPtrTag->CompareF( KStrNo ) ) - { - iPlugin.SetBoolAttributeL( aField, EFalse ); - } - else - { - //no valid data is given - use default value - iPlugin.SetBoolAttributeL( aField, EFalse ); - CLOG_WRITE( "! Error : Invalid Prompt password. Default:No"); - } - - break; - } - case EPacketDataUseEdge: - { - // Boolean - if ( !aPtrTag->CompareF( KStrYes ) ) - { - iPlugin.SetBoolAttributeL( aField, ETrue ); - } - else if ( !aPtrTag->CompareF( KStrNo ) ) - { - iPlugin.SetBoolAttributeL( aField, EFalse ); - } - else - { - //no valid data is given - use default value - iPlugin.SetBoolAttributeL( aField, ETrue ); - CLOG_WRITE( "! Error : Invalid Use EDGE. Default:Yes"); - } - - break; - } - case EPacketDataLinger: - { - // Pair linger with name for later saving - CLingerElement* linger = new (ELeave) CLingerElement; - - CleanupStack::PushL( linger ); - - linger->iName = iName->AllocL(); - linger->iLinger = aPtrTag->AllocL(); - - iLingerSettings->AppendL(linger); - - CleanupStack::Pop( linger ); - break; - } - case ECmWapIPSecurity: - { - // TBool - if ( !aPtrTag->CompareF( KStrOn ) ) - { - iPlugin.SetBoolAttributeL( aField, ETrue ); - } - else if ( !aPtrTag->CompareF( KStrOff ) ) - { - iPlugin.SetBoolAttributeL( aField, EFalse ); - } - else - { - //no valid data is given - default data is used - iPlugin.SetBoolAttributeL( aField, ETrue ); - CLOG_WRITE( "! Error : Invalid WTLS security setting. Default:On"); - } - - break; - } - case ECmWapIPWSPOption: - { - // UInt - if ( !aPtrTag->CompareF( KStrContinuous ) ) - { - iPlugin.SetIntAttributeL( aField, - EWapWspOptionConnectionOriented ); - } - else if ( !aPtrTag->CompareF( KStrTemporary ) ) - { - iPlugin.SetIntAttributeL( aField, - EWapWspOptionConnectionless ); - } - else - { - //no valid data is given - default data is used - iPlugin.SetIntAttributeL( aField, - EWapWspOptionConnectionOriented ); - CLOG_WRITE( "! Error : Invalid connection type. Default:Continuous"); - } - - break; - } - - case ECmProxyProtocolName: - { - // Do not enable proxy in this case yet - iPlugin.SetStringAttributeL( aField, *aPtrTag ); - break; - } - - case ECmProxyServerName: - { - // First set proxy usage to enabled - if( !iProxyEnabled ) - { - iPlugin.SetBoolAttributeL( ECmProxyUsageEnabled, ETrue ); - iProxyEnabled = ETrue; - } - // Long text - iPlugin.SetStringAttributeL( aField, *aPtrTag ); - break; - } - case ECmProxyPortNumber: - { - // First set proxy usage to enabled - if( !iProxyEnabled ) - { - iPlugin.SetBoolAttributeL( ECmProxyUsageEnabled, ETrue ); - iProxyEnabled = ETrue; - } - // TUint32 and should be read as text. - TPtrC16 portptr = aPtrTag->Right( aPtrTag->Length() ); - TLex16 lex( portptr ); - TUint32 portnum( 0 ); - if ( lex.Val( portnum, EDecimal ) == KErrNone ) - { - iPlugin.SetIntAttributeL( aField, portnum ); - } - else - { - //no valid data is given - default value is used - iPlugin.SetIntAttributeL( aField, KDefaultPortNum ); - CLOG_WRITE( "! Error : Invalid port number. Default:80"); - } - break; - } - case EPacketDataDisablePlainTextAuth: - { - // TBool - if ( !aPtrTag->CompareF( KStrPwdAuthNormal ) ) - { - // Normal, => auth. not secure, plain text NOT disabled - iPlugin.SetBoolAttributeL( aField, EFalse ); - } - else if ( !aPtrTag->CompareF( KStrPwdAuthSecure ) ) - { - // Secure, => auth. secure, plain text disabled - iPlugin.SetBoolAttributeL( aField, ETrue ); - } - else - { - //no valid data is given - default value is used - CLOG_WRITE( "! Error : Invalid password authentication. Default:Secure "); - iPlugin.SetBoolAttributeL( aField, ETrue ); - } - break; - } - case EPacketDataPDPType: - { - if ( !aPtrTag->CompareF( KStrNetworkIPv4 ) ) - { - iPlugin.SetIntAttributeL( aField, RPacketContext::EPdpTypeIPv4 ); - } - else if ( !aPtrTag->CompareF( KStrNetworkIPv6 ) ) - { - iPlugin.SetIntAttributeL( aField, RPacketContext::EPdpTypeIPv6 ); - } - else - { - iPlugin.SetIntAttributeL( aField, RPacketContext::EPdpTypeIPv4 ); - CLOG_WRITE( "! Error : Invalid Network type. Default:IPv4" ) - } - break; - } - case EPacketDataApType: - { - if ( !aPtrTag->CompareF( KStrISPInternet ) ) - { - iPlugin.SetIntAttributeL( aField, 0 ); - } - else if ( !aPtrTag->CompareF( KStrISPWAP ) ) - { - iPlugin.SetIntAttributeL( aField, 1 ); - } - else - { - iPlugin.SetIntAttributeL( aField, 2 ); - } - break; - } - default: - { - break; - } - }//switch - } - -// --------------------------------------------------------- -// CProcessorPacketData::AddLingerL -// --------------------------------------------------------- -// -void CProcessorPacketData::AddLingerL( const TInt aIapId, const TInt aLingerInterval) - { - TInt err( KErrNone ); - - // Open repository - CRepository* repository = CRepository::NewLC( KCRUidPDPContextManager ); - - // Find if an entry for "iapId" already exists in CentRep - RArray< TUint32 > foundKeys; - foundKeys.Reset(); - - err = repository->FindEqL( KIapColumn, // partial key - KColumnMask, // key mask - aIapId, // value - foundKeys ); // found keys - - if ( err == KErrNone || err == KErrNotFound ) - { - if ( foundKeys.Count() == 0 ) - { - // Add a new entry - TInt arrayCount( 0 ); - - // Get number of iapId&linger entries in Centrep - err = repository->Get( KPdpContextManagerLingerArrayCount, - arrayCount ); - - if ( err == KErrNone ) - { - arrayCount++; - - err = repository->Create( ( KIapColumn | arrayCount ), aIapId ); - - if ( err == KErrNone ) - { - err = repository->Create( ( KLingerColumn | arrayCount ), - aLingerInterval ); - } - - if ( err == KErrNone ) - { - // Update number of iapId&linger entries in Centrep - err = repository->Set( KPdpContextManagerLingerArrayCount, - arrayCount ); - } - } - } - else - { - // Update existing entry on current row - TInt32 row = foundKeys[ 0 ] & KRowMask; - - err = repository->Set( ( KLingerColumn | row ), aLingerInterval ); - } - } - - foundKeys.Close(); - CleanupStack::PopAndDestroy( repository ); - - User::LeaveIfError( err ); - } - -// --------------------------------------------------------- -// CProcessorPacketData::SaveLingerSettingsL -// --------------------------------------------------------- -// -void CProcessorPacketData::SaveLingerSettingsL() - { - for ( TInt i(0); i < iLingerSettings->Count(); i++ ) - { - TInt id = GetPluginIdL(((*iLingerSettings)[i])->iName); - - TLex16 lex(*((*iLingerSettings)[i])->iLinger); - TInt linger( 0 ); - if ( lex.Val( linger ) == KErrNone ) - { - AddLingerL( id, linger); - } - else - { - // no valid data is given - default value is used - AddLingerL( id, KDefaultLinger); - } - } - iLingerSettings->ResetAndDestroy(); - } - -// End of File.