dbcreator/commsdatcreator/src/cdccommsdatcreator.cpp
changeset 56 dd6aaa97e7b1
parent 32 5c4486441ae6
equal deleted inserted replaced
52:bbe4544dfd31 56:dd6aaa97e7b1
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Module for creating CommsDat from an input file
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 
       
    23 #include "cdccommsdatcreator.h"
       
    24 #include "cdclogger.h"
       
    25 #include "cdcreaderxml.h"
       
    26 #include "cdcprocessorpacketdata.h"
       
    27 #include "cdcprocessorwlan.h"
       
    28 #include "cdcprocessorlan.h"
       
    29 #include "cdcprocessorvpn.h"
       
    30 #include "cdcprocessordn.h"
       
    31 #include "cdcprocessorglobal.h"
       
    32 #include "cdcwlantables.h"
       
    33 #include "cdcwlandevicesettings.h"
       
    34 #include "cdcdatamobilitytables.h"
       
    35 #include "cdcdumptables.h"
       
    36 #include "centralrepository.h"
       
    37 
       
    38 #include <cmconnectionmethoddef.h>
       
    39 #include <cmmanagerext.h>
       
    40 
       
    41 #include <e32def.h>
       
    42 #include <e32base.h>
       
    43 #include <s32strm.h>
       
    44 #include <s32file.h>
       
    45 #include <etelpckt.h>
       
    46 #include <featmgr.h>
       
    47 #include <commsdattypesv1_1.h>
       
    48 #include <commsdattypeinfov1_1.h>
       
    49 
       
    50 
       
    51 // CONSTANTS
       
    52 //maximum length of access point name
       
    53 const TInt KLengthOfExtention = 4;
       
    54 
       
    55 //extension
       
    56 _LIT16( KExtensionXML,     ".xml" );    //XML file
       
    57 
       
    58 
       
    59 //-----------------------------------------------------------------------------
       
    60 //  CCdcCommsDatCreator::NewL()
       
    61 //-----------------------------------------------------------------------------
       
    62 //
       
    63 EXPORT_C CCdcCommsDatCreator* CCdcCommsDatCreator::NewL()
       
    64     {
       
    65     CCdcCommsDatCreator* self = NewLC();
       
    66     CleanupStack::Pop( self );   // self
       
    67     
       
    68     return self;
       
    69     }
       
    70 
       
    71 
       
    72 //-----------------------------------------------------------------------------
       
    73 //  CCdcCommsDatCreator::NewLC()
       
    74 //-----------------------------------------------------------------------------
       
    75 //
       
    76 EXPORT_C CCdcCommsDatCreator* CCdcCommsDatCreator::NewLC()
       
    77     {
       
    78     CCdcCommsDatCreator* self = new (ELeave) CCdcCommsDatCreator();
       
    79     CleanupStack::PushL( self );
       
    80     self->ConstructL();
       
    81     
       
    82     return self;
       
    83     }
       
    84 
       
    85 
       
    86 //------------------------------------------------
       
    87 // CDbCreator::CreateTablesL
       
    88 //------------------------------------------------
       
    89 //
       
    90 EXPORT_C void CCdcCommsDatCreator::CreateTablesL()
       
    91     {
       
    92     CLOG_WRITE( "=====================\n" )
       
    93     CLOG_WRITE( "Creating tables ...\n" )
       
    94     CLOG_WRITE( "=====================\n" )   
       
    95 
       
    96     
       
    97     //extends architecture of CommsDat
       
    98     //creates WLAN tables
       
    99     //-------------------------------
       
   100     if ( iIsWlanS )
       
   101         {
       
   102         CLOG_WRITE( "Creates WLAN service tables\n" )
       
   103         CLOG_WRITE( "---------------------------\n" )
       
   104         
       
   105         CWlanTables* wlanTables = CWlanTables::NewL();
       
   106         CleanupStack::PushL( wlanTables );
       
   107         wlanTables->CheckAndCreateTablesL();
       
   108         
       
   109         CleanupStack::PopAndDestroy( wlanTables ); 
       
   110         
       
   111         // WLAN Device Settings Table.
       
   112         CLOG_WRITE( "Writes Default settings to WLAN Device Settings Table.\n" )
       
   113         
       
   114         // Creating a settings object does it all.
       
   115         CWlanDeviceSettings* wlanDeviceSettings = CWlanDeviceSettings::NewL();
       
   116         delete wlanDeviceSettings;
       
   117         }
       
   118 
       
   119     CLOG_WRITE( "CDataMobilityTables\n" )   
       
   120         
       
   121     //extends architecture of CommsDat
       
   122     //creates Data Mobility tables
       
   123     //----------------------------
       
   124     CDataMobilityTables* dmTables = CDataMobilityTables::NewL();
       
   125     CleanupStack::PushL( dmTables );
       
   126     
       
   127     CLOG_WRITE( "Creates Data Mobility ALR tables\n" )
       
   128     CLOG_WRITE( "--------------------------------\n" )
       
   129     dmTables->CheckAndCreateAlrTablesL();
       
   130     
       
   131     CLOG_WRITE( "Creates Data Mobility MIP tables\n" )
       
   132     CLOG_WRITE( "--------------------------------\n" )
       
   133     dmTables->CheckAndCreateMipTablesL();
       
   134     
       
   135     CleanupStack::PopAndDestroy( dmTables );
       
   136         
       
   137     //if there is only an "e" parameter then DbCreator extends CommsDat, but
       
   138     //does not create access points. This functionality earlier was done
       
   139     //by WlanToCDb modul.
       
   140     }
       
   141 
       
   142 
       
   143 //------------------------------------------------
       
   144 // CDbCreator::CreateCommsDatL
       
   145 //------------------------------------------------
       
   146 //
       
   147 EXPORT_C void CCdcCommsDatCreator::CreateCommsDatL( const TFileName& aInFileName )
       
   148     {
       
   149     CLOG_WRITE( "=====================\n" )
       
   150     CLOG_WRITE( "Processing started...\n" )
       
   151     CLOG_WRITE( "=====================\n" )               
       
   152 
       
   153     TDbCreatorInputCharSet charSet( ECharSetUnknown );//input character set
       
   154 
       
   155     //Creates access points
       
   156     //----------------------
       
   157             
       
   158     if ( InputFileType( aInFileName ) == EFileXML )
       
   159         {
       
   160         CLOG_WRITE( "Tries to open file");
       
   161         // Logs file name            
       
   162         HBufC *fileName = aInFileName.AllocLC();
       
   163         CLOG_WRITE_FORMAT( "Input file : %S\n", fileName )
       
   164         CleanupStack::PopAndDestroy( fileName );                          
       
   165         
       
   166         delete iReader;
       
   167         iReader = NULL;
       
   168         iReader = CReaderXML::NewLC( aInFileName, charSet );
       
   169     	CleanupStack::Pop(iReader);
       
   170     
       
   171         //locates feature in xml file
       
   172         iReader->LocateFeatureL();
       
   173         }
       
   174     else    
       
   175         {
       
   176         User::Leave( KErrInvalidExtension );
       
   177         }  
       
   178     	
       
   179 
       
   180     TBool found( EFalse );
       
   181     
       
   182     // First, add all destinations to the database. Connection methods and
       
   183     // embedded destinations are not added at this time.
       
   184     while ( iReader->CurrentFeature() != EFeatureNone && !found )
       
   185         {
       
   186         if( iReader->CurrentFeature() == EFeatureDN )
       
   187             {
       
   188             ProcessDNL( iCmInDest, ETrue );
       
   189             }
       
   190         iReader->LocateFeatureL();
       
   191         }
       
   192     
       
   193     // Reset input file
       
   194     iReader->Reset();
       
   195     iReader->LocateFeatureL();
       
   196     
       
   197     // Then add connection methods, and assign them to destinations if
       
   198     // needed
       
   199     while ( iReader->CurrentFeature() != EFeatureNone )
       
   200         {
       
   201         switch ( iReader->CurrentFeature() )
       
   202             {
       
   203             case EFeaturePacketData:
       
   204                 {
       
   205                 //creates GPRS access point
       
   206                 CLOG_WRITE( "Feature found : Packet Data Access point(s)\n" )
       
   207                 
       
   208                 iFileProcessor = CProcessorPacketData::NewL( iReader,
       
   209                                                        iCmManager,
       
   210                                                        iPluginArray,
       
   211                                                        iPluginNames,
       
   212                                                        iLingerSettings );
       
   213                 iFileProcessor->ParseFileL();
       
   214                 
       
   215                 delete iFileProcessor;
       
   216                 iFileProcessor = NULL;
       
   217 
       
   218                 break;
       
   219                 }
       
   220                 
       
   221             case EFeatureWLAN:
       
   222                 {
       
   223                 if( iIsWlanS )
       
   224                     {
       
   225                     //creates WLAN access point   
       
   226                     CLOG_WRITE( "Feature found : WLAN Access point(s)\n" )
       
   227                     
       
   228                     // Reset the EAP settings just to be safe although it should be empty always here.
       
   229                     iEapSettings.ResetAndDestroy();
       
   230                     
       
   231                     iFileProcessor = CProcessorWlan::NewL( iReader,
       
   232                                                            iCmManager,
       
   233                                                            iPluginArray,
       
   234                                                            iPluginNames,
       
   235                                                            iWlanSecurity,
       
   236                                                            iEapSettings );
       
   237                     iFileProcessor->ParseFileL();
       
   238                     
       
   239                     delete iFileProcessor;
       
   240                     iFileProcessor = NULL;
       
   241 
       
   242                     }
       
   243                 break;
       
   244                 }
       
   245                 
       
   246             case EFeatureLAN:
       
   247                 {
       
   248                 //creates LAN access point   
       
   249                 CLOG_WRITE( "Feature found : LAN Access point(s)\n" )
       
   250 
       
   251                 iFileProcessor = CProcessorLan::NewL( iReader,
       
   252                                                       iCmManager,
       
   253                                                       iPluginArray,
       
   254                                                       iPluginNames );
       
   255                 iFileProcessor->ParseFileL();
       
   256                
       
   257                 delete iFileProcessor;
       
   258                 iFileProcessor = NULL;
       
   259                 break;
       
   260                 }
       
   261                 
       
   262             case EFeatureVPN:
       
   263                 {
       
   264                 //creates VPN access point   
       
   265                 CLOG_WRITE( "Feature found : VPN Access point(s)\n" )
       
   266                 CLOG_WRITE( "-----------------------------------\n" )
       
   267                 
       
   268                 iFileProcessor = CProcessorVpn::NewL( iReader,
       
   269                                                        iCmManager,
       
   270                                                        iPluginArray,
       
   271                                                        iPluginNames,
       
   272                                                        iUnderLying );
       
   273                 iFileProcessor->ParseFileL();
       
   274                 
       
   275                 delete iFileProcessor;
       
   276                 iFileProcessor = NULL;
       
   277                 
       
   278                 break;
       
   279                 }
       
   280             
       
   281             case EFeatureDN:
       
   282                 {
       
   283                
       
   284                 ProcessDNL( iCmInDest, EFalse );
       
   285                 
       
   286                 break;
       
   287                 }
       
   288                 
       
   289             case EFeatureGlobal:
       
   290                 {
       
   291                 // Valid tag but does nothing now. 
       
   292                 // Global can be processed at the last end.
       
   293 
       
   294                 
       
   295                 //sets global settings 
       
   296                 CLOG_WRITE( "Feature found : Global settings\n" )
       
   297                 CLOG_WRITE( "-------------------------------\n" )
       
   298                     
       
   299                 iFileProcessor = CProcessorGlobal::NewL( iReader,
       
   300                                                           iCmManager,
       
   301                                                           iPluginArray,
       
   302                                                           iPluginNames,
       
   303                                                           iDestArray,
       
   304                                                           iDestNames ); 
       
   305                 iFileProcessor->ParseFileL();
       
   306 
       
   307                 delete iFileProcessor;
       
   308                 iFileProcessor = NULL;
       
   309 
       
   310                 break;
       
   311                 }
       
   312                 
       
   313             default:
       
   314                 User::Panic( KPanicInvalidCase, KErrInvalidCase );
       
   315              
       
   316             }//switch
       
   317             
       
   318             //gets next feature
       
   319             iReader->LocateFeatureL();
       
   320             
       
   321         }//while
       
   322                   
       
   323 
       
   324     // Updates the IAPs that are not in destinations.
       
   325     UpdateUncatCmsL( iCmInDest );
       
   326 
       
   327     // Sets the underlying IAP/SNAPS for vpn IAPs    
       
   328     SetUnderlyingIapL( iUnderLying );
       
   329 
       
   330     for( TInt i(0); i < iWlanSecurity.Count(); i++ )
       
   331         {
       
   332         CLOG_WRITE_FORMAT( "Sec Pos: %d", i );
       
   333         if( iWlanSecurity[i] != NULL )
       
   334             {
       
   335             CLOG_WRITE_FORMAT( "Sec data: %S", iWlanSecurity[i] );
       
   336             }
       
   337         else    
       
   338             {
       
   339             CLOG_WRITE( "Sec data NULL" );
       
   340             }
       
   341         }
       
   342 
       
   343 	// Sets the WLAN security paramters including EAP settings
       
   344     SetWlanSecurityL( iWlanSecurity );
       
   345     
       
   346     // Sets linger settings
       
   347     SetLingerSettingsL( iLingerSettings );
       
   348 
       
   349     // Logs IAPs in UDEB mode
       
   350     #ifdef _DEBUG
       
   351     LogIapIdsL();
       
   352     #endif
       
   353 }
       
   354 
       
   355 //------------------------------------------------
       
   356 // CCdcCommsDatCreator::DumpCommsDatL
       
   357 //------------------------------------------------
       
   358 //
       
   359 EXPORT_C void CCdcCommsDatCreator::DumpCommsDatL( const TFileName& aOutFileName )
       
   360     {
       
   361     CLOG_WRITE( "==========================\n" )
       
   362     CLOG_WRITE( "Dump processing started...\n" )
       
   363     CLOG_WRITE( "==========================\n" )   
       
   364     
       
   365 
       
   366     CDumpTables* dump = CDumpTables::NewLC();
       
   367     dump->DoDumpTablesL( aOutFileName );
       
   368     CleanupStack::PopAndDestroy( dump ); //dump   
       
   369 
       
   370     CLOG_WRITE( "======== end dump =========\n" )   
       
   371 
       
   372     }
       
   373 
       
   374 //------------------------------------------------
       
   375 // CCdcCommsDatCreator::CCdcCommsDatCreator
       
   376 //------------------------------------------------
       
   377 //
       
   378 CCdcCommsDatCreator::CCdcCommsDatCreator()
       
   379     {
       
   380     }
       
   381 
       
   382 //------------------------------------------------
       
   383 // CCdcCommsDatCreator::~CCdcCommsDatCreator
       
   384 //------------------------------------------------
       
   385 //
       
   386 CCdcCommsDatCreator::~CCdcCommsDatCreator()
       
   387     {
       
   388     delete iReader;
       
   389     
       
   390     iEapSettings.ResetAndDestroy();
       
   391 
       
   392 	for ( TInt i = 0; i < iPluginArray.Count(); i++ )
       
   393 	{
       
   394 		iPluginArray[i]->Close();
       
   395 	}
       
   396     iPluginArray.ResetAndDestroy();
       
   397     iPluginNames.ResetAndDestroy();
       
   398 
       
   399 	for ( TInt i = 0; i < iDestArray.Count(); i++ )
       
   400 	{
       
   401 		iDestArray[i]->Close();
       
   402 	}
       
   403     iDestArray.ResetAndDestroy();
       
   404     
       
   405     iDestNames.ResetAndDestroy();    
       
   406     
       
   407     iUnderLying.ResetAndDestroy();    
       
   408     
       
   409     iWlanSecurity.ResetAndDestroy();
       
   410     
       
   411     iLingerSettings.ResetAndDestroy();
       
   412 
       
   413     iCmInDest.Close(); 
       
   414     
       
   415     iCmManager.Close();
       
   416     }
       
   417 
       
   418 
       
   419 //------------------------------------------------
       
   420 // CCdcCommsDatCreator::ConstructL
       
   421 //------------------------------------------------
       
   422 //
       
   423 void CCdcCommsDatCreator::ConstructL()
       
   424     {
       
   425     CLOG_WRITE( "Initialising FeatureManager\n" )   
       
   426     //checks if Wlan feature is supported
       
   427     FeatureManager::InitializeLibL();
       
   428     iIsWlanS = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
       
   429     FeatureManager::UnInitializeLib();
       
   430     CLOG_WRITE( "FeatureManager closed\n" )
       
   431 
       
   432     iCmManager.OpenL();
       
   433     }
       
   434     
       
   435 //------------------------------------------------
       
   436 // CCdcCommsDatCreator::InputFileType
       
   437 //------------------------------------------------
       
   438 //
       
   439 TUint CCdcCommsDatCreator::InputFileType( const TFileName& aFileName )
       
   440     {
       
   441     TBuf<KLengthOfExtention> extension;
       
   442     
       
   443     //get extension
       
   444     extension.Copy( aFileName.Right( KLengthOfExtention ) );
       
   445     
       
   446     TDbCreatorInputFile type ( EFileUnknown );
       
   447     
       
   448     if ( extension.CompareF( KExtensionXML ) == 0 )
       
   449         {
       
   450         type = EFileXML;            
       
   451         }
       
   452     else
       
   453         {
       
   454         //type keeps default value
       
   455         }
       
   456             
       
   457     return type;
       
   458     
       
   459     }
       
   460     
       
   461   
       
   462 //------------------------------------------------
       
   463 // CCdcCommsDatCreator::UpdateUncatCmsL
       
   464 //------------------------------------------------
       
   465 //
       
   466 void CCdcCommsDatCreator::UpdateUncatCmsL( RArray< TBool >& aCmInDest )
       
   467     {
       
   468     CLOG_WRITE( "-------------------------------\n" )
       
   469     CLOG_WRITE( "Uncategorised Cms:\n" )
       
   470 
       
   471     // No destination defined
       
   472     if( aCmInDest.Count() == 0 )
       
   473         {
       
   474         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   475             {
       
   476             iPluginArray[i]->UpdateL();
       
   477             CLOG_WRITE_FORMAT( "Uncat CM Name: %S", iPluginNames[i] );
       
   478             }
       
   479         }
       
   480     else
       
   481         {
       
   482         
       
   483         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   484             {
       
   485             if( aCmInDest[ i ] == EFalse )
       
   486                 {
       
   487                 iPluginArray[i]->UpdateL();
       
   488                 CLOG_WRITE_FORMAT( "Uncat CM Name: %S", iPluginNames[i] );
       
   489                 }
       
   490             }
       
   491         }
       
   492         
       
   493     CLOG_WRITE( "-------------------------------\n" )
       
   494     }    
       
   495 
       
   496 
       
   497 //------------------------------------------------
       
   498 // CCdcCommsDatCreator::LogIapIdsL
       
   499 //------------------------------------------------
       
   500 //
       
   501 void CCdcCommsDatCreator::LogIapIdsL()
       
   502     {
       
   503     for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   504         {
       
   505         TUint32 uid1 = iPluginArray[i]->GetIntAttributeL( CMManager::ECmId );
       
   506         CLOG_WRITE_FORMAT( "IAP Name: %S", iPluginNames[i] );
       
   507         CLOG_WRITE_FORMAT( "ID: %d\n", uid1 );
       
   508         }
       
   509 
       
   510     for( TInt i(0); i < iDestArray.Count(); i++ )
       
   511         {
       
   512         TUint32 uid1 = iDestArray[i]->Id();
       
   513         CLOG_WRITE_FORMAT( "SNAP Name: %S", iDestNames[i] );
       
   514         CLOG_WRITE_FORMAT( "ID: %d\n", uid1);
       
   515         }
       
   516     }
       
   517 
       
   518 // ---------------------------------------------------------
       
   519 // CCdcCommsDatCreator::ProcessDNL
       
   520 // ---------------------------------------------------------
       
   521 //
       
   522 void CCdcCommsDatCreator::ProcessDNL( RArray< TBool >& aCmInDest,
       
   523                                      TBool aFirstRound )
       
   524     {
       
   525     CLOG_WRITE( "Feature found : Destination Network(s)\n" )
       
   526     CLOG_WRITE( "--------------------------------------\n" )
       
   527     
       
   528     
       
   529     if( !aFirstRound )
       
   530         {
       
   531         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   532             {
       
   533             aCmInDest.Append( EFalse );
       
   534             }
       
   535         }
       
   536     
       
   537     iFileProcessor = CProcessorDN::NewL( iReader,
       
   538                                          iCmManager,
       
   539                                          iPluginArray,
       
   540                                          iPluginNames,
       
   541                                          iDestArray,
       
   542                                          iDestNames,
       
   543                                          aCmInDest,
       
   544                                          aFirstRound ); 
       
   545     iFileProcessor->ParseFileL();
       
   546     
       
   547     delete iFileProcessor;
       
   548     iFileProcessor = NULL;
       
   549     CLOG_WRITE( "--------------------------------------\n" )
       
   550     }    
       
   551 
       
   552 // ---------------------------------------------------------
       
   553 // CCdcCommsDatCreator::SetUnderlyingIapL
       
   554 // ---------------------------------------------------------
       
   555 //
       
   556 void CCdcCommsDatCreator::SetUnderlyingIapL( RPointerArray< HBufC >& aUnderLying )
       
   557     {
       
   558     // Sets the underlying IAP/SNAPS for vpn IAPs    
       
   559     if( aUnderLying.Count() > 0 )
       
   560         {
       
   561         CLOG_WRITE_FORMAT( "SetUnderlyingIapL: %d\n", aUnderLying.Count() )
       
   562         CLOG_WRITE( "--------------------------------------\n" )
       
   563 
       
   564         CProcessorVpn* vpn = CProcessorVpn::NewL( iReader,
       
   565                                                iCmManager,
       
   566                                                iPluginArray,
       
   567                                                iPluginNames,
       
   568                                                aUnderLying );
       
   569         
       
   570         CleanupStack::PushL( vpn );
       
   571         vpn->ProcessUnderLyingL(  iDestArray, iDestNames );
       
   572         
       
   573                 
       
   574         CleanupStack::PopAndDestroy( vpn );
       
   575 
       
   576         CLOG_WRITE( "--------------------------------------\n" )
       
   577         }
       
   578     }
       
   579 
       
   580 
       
   581 // ---------------------------------------------------------
       
   582 // CCdcCommsDatCreator::SetUnderlyingIapL
       
   583 // ---------------------------------------------------------
       
   584 //
       
   585 void CCdcCommsDatCreator::SetWlanSecurityL( RPointerArray< HBufC >& aWlanSecurity )
       
   586     {
       
   587     if( aWlanSecurity.Count() > 0 
       
   588 		|| iEapSettings.Count() > 0 )
       
   589         {
       
   590         CLOG_WRITE_FORMAT( "SetWlanSecurityL: %d\n", aWlanSecurity.Count() );
       
   591         CLOG_WRITE_FORMAT( "SetWlanSecurityL: EAPs: %d\n", iEapSettings.Count() );
       
   592         CLOG_WRITE( "--------------------------------------\n" )
       
   593 
       
   594         CProcessorWlan* wlan = CProcessorWlan::NewL( iReader,
       
   595                                                      iCmManager,
       
   596                                                      iPluginArray,
       
   597                                                      iPluginNames,
       
   598                                                      aWlanSecurity,
       
   599 													 iEapSettings);
       
   600         
       
   601         CleanupStack::PushL( wlan );
       
   602         wlan->SaveSecurityInfoL();
       
   603                 
       
   604         CleanupStack::PopAndDestroy( wlan );
       
   605         
       
   606         // EAP settings were saved. Delete them.
       
   607         iEapSettings.ResetAndDestroy();
       
   608 
       
   609         CLOG_WRITE( "--------------------------------------\n" )
       
   610         }
       
   611     }
       
   612 
       
   613 // ---------------------------------------------------------
       
   614 // CCdcCommsDatCreator:::SetLingerSettingsL
       
   615 // ---------------------------------------------------------
       
   616 //
       
   617 void CCdcCommsDatCreator::SetLingerSettingsL( 
       
   618         RPointerArray< CLingerElement >& aLingerSettings )
       
   619     {
       
   620     CLOG_WRITE_FORMAT( "SetLingerSettingsL: %d\n", aLingerSettings.Count() );
       
   621     if ( aLingerSettings.Count() > 0 )
       
   622         {
       
   623         CProcessorPacketData* pdp = CProcessorPacketData::NewL( iReader, 
       
   624                                                                 iCmManager,
       
   625                                                                 iPluginArray,
       
   626                                                                 iPluginNames,
       
   627                                                                 iLingerSettings );
       
   628         
       
   629         CleanupStack::PushL( pdp );
       
   630         pdp->SaveLingerSettingsL();
       
   631                 
       
   632         CleanupStack::PopAndDestroy( pdp );
       
   633         }  
       
   634     CLOG_WRITE( "--------------------------------------\n" )
       
   635     }
       
   636 
       
   637 
       
   638 // End of File.