realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrmonitor.cpp
branchRCL_3
changeset 56 2c7192069824
parent 49 0a1ad22c7bdc
equal deleted inserted replaced
49:0a1ad22c7bdc 56:2c7192069824
    69 
    69 
    70 // -----------------------------------------------------------------------------
    70 // -----------------------------------------------------------------------------
    71 // CSipAlrMonitor::RefreshIapAvailabilityL
    71 // CSipAlrMonitor::RefreshIapAvailabilityL
    72 // -----------------------------------------------------------------------------
    72 // -----------------------------------------------------------------------------
    73 //	
    73 //	
    74 void CSipAlrMonitor::RefreshIapAvailabilityL ( TSipSNAPConfigurationData & aConfigData )
    74 void CSipAlrMonitor::RefreshIapAvailabilityL ( TUint32 aSnapId )
    75 	{
    75 	{
    76     PROFILE_DEBUG3( "CSipAlrMonitorImplementation::RefreshIapAvailabilityL",
    76     PROFILE_DEBUG3( "CSipAlrMonitorImplementation::RefreshIapAvailabilityL",
    77             aConfigData.iSnapId )
    77 	                 aSnapId )
    78     
    78     
    79     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData );
    79     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
    80     if ( monitor )
    80     if ( monitor )
    81         {
    81         {
    82 		monitor->RefreshL();
    82 		monitor->RefreshL();
    83 		}
    83 		}
    84 	}
    84 	}
    85 	    
    85 	    
    86 // -----------------------------------------------------------------------------
    86 // -----------------------------------------------------------------------------
    87 // CSipAlrMonitor::AllowMigration
    87 // CSipAlrMonitor::AllowMigration
    88 // -----------------------------------------------------------------------------
    88 // -----------------------------------------------------------------------------
    89 //
    89 //
    90 TInt CSipAlrMonitor::AllowMigration( TSipSNAPConfigurationData & aConfigData )
    90 TInt CSipAlrMonitor::AllowMigration( TUint32 aSnapId )
    91     {
    91     {
    92     PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, SnapId",aConfigData.iSnapId)
    92     PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, SnapId",aSnapId)
    93     PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, BearerFiltering",aConfigData.iBearerId)
    93     
    94     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData );
    94     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
    95     if ( monitor )
    95     if ( monitor )
    96         {
    96         {
    97         monitor->AllowMigration();     
    97         monitor->AllowMigration();     
    98         return KErrNone;
    98         return KErrNone;
    99 		}
    99 		}
   101     }
   101     }
   102 // -----------------------------------------------------------------------------
   102 // -----------------------------------------------------------------------------
   103 // CSipAlrMonitor::DisallowMigration
   103 // CSipAlrMonitor::DisallowMigration
   104 // -----------------------------------------------------------------------------
   104 // -----------------------------------------------------------------------------
   105 //
   105 //
   106 TInt CSipAlrMonitor::DisallowMigration( TSipSNAPConfigurationData& aConfigData )
   106 TInt CSipAlrMonitor::DisallowMigration( TUint32 aSnapId )
   107     {
   107     {
   108     PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, SnapId",aConfigData.iSnapId)
   108     PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, SnapId",aSnapId)
   109     PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, BearerFiltering",aConfigData.iBearerId)
   109     
   110     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData );
   110     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
   111     if ( monitor )
   111     if ( monitor )
   112         {
   112         {
   113         monitor->DisallowMigration();     
   113         monitor->DisallowMigration();     
   114         return KErrNone;
   114         return KErrNone;
   115 		}
   115 		}
   118     
   118     
   119 // -----------------------------------------------------------------------------
   119 // -----------------------------------------------------------------------------
   120 // CSipAlrMonitor::NewIapAccepted
   120 // CSipAlrMonitor::NewIapAccepted
   121 // -----------------------------------------------------------------------------
   121 // -----------------------------------------------------------------------------
   122 //    
   122 //    
   123 TInt CSipAlrMonitor::NewIapAccepted( TSipSNAPConfigurationData & aConfigData)  
   123 TInt CSipAlrMonitor::NewIapAccepted( TUint32 aSnapId )  
   124     {
   124     {
   125     PROFILE_DEBUG3("CSipAlrMonitor::NewIapAccepted, SnapId",aConfigData.iSnapId)
   125     PROFILE_DEBUG3("CSipAlrMonitor::NewIapAccepted, SnapId",aSnapId)
   126     
   126     
   127     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData );
   127     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
   128     if ( monitor )
   128     if ( monitor )
   129         {
   129         {
   130         monitor->NewIapAccepted();     
   130         monitor->NewIapAccepted();     
   131         return KErrNone;
   131         return KErrNone;
   132 		}
   132 		}
   135     
   135     
   136 // -----------------------------------------------------------------------------
   136 // -----------------------------------------------------------------------------
   137 // CSipAlrMonitor::NewIapRejected
   137 // CSipAlrMonitor::NewIapRejected
   138 // -----------------------------------------------------------------------------
   138 // -----------------------------------------------------------------------------
   139 //  
   139 //  
   140 TInt CSipAlrMonitor::NewIapRejected( TSipSNAPConfigurationData & aConfigData )
   140 TInt CSipAlrMonitor::NewIapRejected( TUint32 aSnapId )
   141     {
   141     {
   142     PROFILE_DEBUG3( "CSipAlrMonitor::NewIapRejected, SnapId",aConfigData.iSnapId )
   142     PROFILE_DEBUG3( "CSipAlrMonitor::NewIapRejected, SnapId",aSnapId )
   143     
   143     
   144     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData );
   144     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
   145     if ( monitor )
   145     if ( monitor )
   146         {
   146         {
   147         monitor->NewIapRejected();
   147         monitor->NewIapRejected();
   148         return KErrNone;
   148         return KErrNone;
   149         }
   149         }
   153 // -----------------------------------------------------------------------------
   153 // -----------------------------------------------------------------------------
   154 // CSipAlrMonitor::MonitorSnapL
   154 // CSipAlrMonitor::MonitorSnapL
   155 // -----------------------------------------------------------------------------
   155 // -----------------------------------------------------------------------------
   156 //
   156 //
   157 void CSipAlrMonitor::MonitorSnapL( 
   157 void CSipAlrMonitor::MonitorSnapL( 
   158     TSipSNAPConfigurationData& aConfigData,
   158     TUint32 aSnapId,
   159     MSipAlrObserver& aObserver)
   159     MSipAlrObserver& aObserver )
   160     {
   160     {
   161     PROFILE_DEBUG4( "CSipAlrMonitor::MonitorSnapL",
   161     PROFILE_DEBUG4( "CSipAlrMonitor::MonitorSnapL",
   162             aConfigData.iSnapId, reinterpret_cast< TUint >( &aObserver ) ) 
   162                     aSnapId, reinterpret_cast< TUint >( &aObserver ) )    
   163                     
   163     
   164  
   164     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId );
   165     CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData);
       
   166     if ( monitor )
   165     if ( monitor )
   167         {
   166         {
   168         // Monitor exists, add observer and get current IAP availability
   167         // Monitor exists, add observer and get current IAP availability
   169         monitor->AddObserverL(aObserver);
   168         monitor->AddObserverL(aObserver);
   170         monitor->RefreshL();
   169         monitor->RefreshL();
   172         PROFILE_DEBUG1("CSipAlrMonitor::MonitorSnapL: observer added" )
   171         PROFILE_DEBUG1("CSipAlrMonitor::MonitorSnapL: observer added" )
   173         }
   172         }
   174     else
   173     else
   175         {
   174         {
   176     	monitor = CSipAlrSnapMonitor::NewLC( 
   175     	monitor = CSipAlrSnapMonitor::NewLC( 
   177     	        aConfigData, aObserver, iSocketServer, iSystemStateMonitor);
   176     	    aSnapId, aObserver, iSocketServer, iSystemStateMonitor );
   178     	iSnapMonitors.AppendL( monitor );
   177     	iSnapMonitors.AppendL( monitor );
   179     	CleanupStack::Pop( monitor );
   178     	CleanupStack::Pop( monitor );
   180     	
   179     	
   181     	PROFILE_DEBUG1("CSipAlrMonitor::MonitorSnapL: new monitor created" )
   180     	PROFILE_DEBUG1("CSipAlrMonitor::MonitorSnapL: new monitor created" )
   182         }
   181         }
   186 // CSipAlrMonitor::FreeResources
   185 // CSipAlrMonitor::FreeResources
   187 // -----------------------------------------------------------------------------
   186 // -----------------------------------------------------------------------------
   188 //
   187 //
   189 void CSipAlrMonitor::FreeResources ( MSipAlrObserver& aObserver )
   188 void CSipAlrMonitor::FreeResources ( MSipAlrObserver& aObserver )
   190     {
   189     {
   191     CSipAlrSnapMonitor* monitor= 0;
       
   192 	for ( TInt i = iSnapMonitors.Count()-1; i >= 0; i-- )
   190 	for ( TInt i = iSnapMonitors.Count()-1; i >= 0; i-- )
   193 		{
   191 		{
   194 		TBool last = iSnapMonitors[i]->DetachObserver ( aObserver );
   192 		TBool last = iSnapMonitors[i]->DetachObserver ( aObserver );
   195 		if ( last ) 
   193 		if ( last ) 
   196 			{
   194 			{
   197             monitor = iSnapMonitors[i];
   195 			delete iSnapMonitors[i];
   198 			iSnapMonitors.Remove(i);
   196 			iSnapMonitors.Remove ( i );
   199 			delete monitor;
       
   200 			monitor = NULL;
       
   201 			PROFILE_DEBUG1( "CSipAlrMonitor::FreeResources monitor deleted" )
   197 			PROFILE_DEBUG1( "CSipAlrMonitor::FreeResources monitor deleted" )
   202 			}
   198 			}
   203 		}
   199 		}
   204 	iSnapMonitors.Compress();
       
   205     }
   200     }
   206 
   201 
   207 // -----------------------------------------------------------------------------
   202 // -----------------------------------------------------------------------------
   208 // CSipAlrMonitor::FindSnapMonitor
   203 // CSipAlrMonitor::FindSnapMonitor
   209 // -----------------------------------------------------------------------------
   204 // -----------------------------------------------------------------------------
   210 //
   205 //
   211 CSipAlrSnapMonitor* CSipAlrMonitor::FindSnapMonitor( TSipSNAPConfigurationData & aConfigData)
   206 CSipAlrSnapMonitor* CSipAlrMonitor::FindSnapMonitor( TUint32 aSnapId )
   212     {
   207     {
   213     CSipAlrSnapMonitor* monitor = NULL;
   208     CSipAlrSnapMonitor* monitor = NULL;
   214 	for ( TInt i = 0; i < iSnapMonitors.Count() && !monitor; i++ )
   209 	for ( TInt i = 0; i < iSnapMonitors.Count() && !monitor; i++ )
   215 		{
   210 		{
   216 		if ( iSnapMonitors[i]->SnapId() == aConfigData.iSnapId && iSnapMonitors[i]->BearerId() == aConfigData.iBearerId ) //mtr found
   211 		if ( iSnapMonitors[i]->SnapId() == aSnapId )
   217 		    {
   212 			{    
   218 		   	monitor = iSnapMonitors[i];
   213 			monitor = iSnapMonitors[i];
   219 			}
   214 			}
   220         }
   215         }
   221     return monitor;
   216     return monitor;
   222     }
   217     }
   223 
       
   224 
       
   225