sipplugins/sippsystemstatemonitor/src/sipsystemstatemonitorimpl.cpp
branchRCL_3
changeset 9 1e1cc61f56c3
parent 0 307788aac0a8
child 12 c2e8c8b73582
equal deleted inserted replaced
4:dd3853b8dc3f 9:1e1cc61f56c3
    19 //  INCLUDE FILES
    19 //  INCLUDE FILES
    20 #include "sipsystemstatemonitorimpl.h"
    20 #include "sipsystemstatemonitorimpl.h"
    21 #include "CSystemStateConnUsagePermissionMonitor.h"
    21 #include "CSystemStateConnUsagePermissionMonitor.h"
    22 #include "sipdevicestateaware.h"
    22 #include "sipdevicestateaware.h"
    23 #include "siprfsmonitorao.h"
    23 #include "siprfsmonitorao.h"
       
    24 #include "sipvpnmonitorao.h"
       
    25 #include <featmgr.h>          // for Feature Manager
    24 
    26 
    25 // -----------------------------------------------------------------------------
    27 // -----------------------------------------------------------------------------
    26 // CSipSystemStateMonitorImpl::NewL
    28 // CSipSystemStateMonitorImpl::NewL
    27 // -----------------------------------------------------------------------------
    29 // -----------------------------------------------------------------------------
    28 //
    30 //
    60 // CSipSystemStateMonitorImpl::~CSipSystemStateMonitorImpl
    62 // CSipSystemStateMonitorImpl::~CSipSystemStateMonitorImpl
    61 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    62 //
    64 //
    63 CSipSystemStateMonitorImpl::~CSipSystemStateMonitorImpl()
    65 CSipSystemStateMonitorImpl::~CSipSystemStateMonitorImpl()
    64     {
    66     {
       
    67     // iVpnMonitor is created in StartMonitoringL().
       
    68     if ( FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn ) )
       
    69         {
       
    70         delete iVpnMonitor;
       
    71         iVpnMonitor = NULL;
       
    72         }
       
    73 		
    65     delete iMonitorAo;
    74     delete iMonitorAo;
    66     iSnapMonitors.ResetAndDestroy();
    75     iSnapMonitors.ResetAndDestroy();
    67     delete iUsagePermissionMonitor;
    76     delete iUsagePermissionMonitor;
    68     delete iRfsMonitor;
    77     delete iRfsMonitor;
    69 	delete iSipDeviceAwareObject;
    78 	delete iSipDeviceAwareObject;
   114     else if ( aVariable == ERfsState )
   123     else if ( aVariable == ERfsState )
   115         {
   124         {
   116         iRfsMonitor = iRfsMonitor?iRfsMonitor:CSipRfsMonitorAo::NewL();
   125         iRfsMonitor = iRfsMonitor?iRfsMonitor:CSipRfsMonitorAo::NewL();
   117         iRfsMonitor->AddObserverL( aObserver );
   126         iRfsMonitor->AddObserverL( aObserver );
   118         }
   127         }
       
   128     // CSipVpnMonitorAo is created for P&S key change monitoring.
       
   129     else if ( FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
       
   130          && ( aVariable == EVpnState ) )
       
   131         {
       
   132         if ( !iVpnMonitor )
       
   133             {
       
   134             iVpnMonitor = CSipVpnMonitorAo::NewL();
       
   135             }
       
   136         iVpnMonitor->AddObserverL( aObserver );
       
   137         }
   119     else
   138     else
   120         {
   139         {
   121         User::Leave( KErrNotSupported );
   140         User::Leave( KErrNotSupported );
   122         }
   141         }
   123     }
   142     }
   153     else if ( aVariable == ERfsState )
   172     else if ( aVariable == ERfsState )
   154         {
   173         {
   155         if(iRfsMonitor)
   174         if(iRfsMonitor)
   156             iRfsMonitor->RemoveObserver( aObserver );
   175             iRfsMonitor->RemoveObserver( aObserver );
   157         }
   176         }
       
   177     // Remove the client as an observer when stops VPN P&S key monitoring.
       
   178     else if ( FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
       
   179          && ( aVariable == EVpnState ) )
       
   180         {
       
   181         if ( iVpnMonitor )
       
   182             {
       
   183             iVpnMonitor->RemoveObserver( aObserver );
       
   184             }
       
   185         }
   158     }
   186     }
   159 
   187 
   160 // -----------------------------------------------------------------------------
   188 // -----------------------------------------------------------------------------
   161 // CSipSystemStateMonitorImpl::CurrentValue
   189 // CSipSystemStateMonitorImpl::CurrentValue
   162 // -----------------------------------------------------------------------------
   190 // -----------------------------------------------------------------------------
   186     else if ( aVariable == ERfsState )
   214     else if ( aVariable == ERfsState )
   187         {
   215         {
   188         if(iRfsMonitor)
   216         if(iRfsMonitor)
   189             iRfsMonitor->State();
   217             iRfsMonitor->State();
   190         }
   218         }
       
   219     else if ( FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
       
   220          && ( aVariable == EVpnState ) )
       
   221         {
       
   222         if( iVpnMonitor )
       
   223             {
       
   224             return iVpnMonitor->State();
       
   225             }
       
   226         }
       
   227 		
   191     return KErrNotFound;
   228     return KErrNotFound;
   192     }
   229     }
   193 
   230 
   194 // -----------------------------------------------------------------------------
   231 // -----------------------------------------------------------------------------
   195 // CSipSystemStateMonitorImpl::EventProcessingCompleted
   232 // CSipSystemStateMonitorImpl::EventProcessingCompleted
   206         }
   243         }
   207 	else if ( iSipDeviceAwareObject && aVariable == ESystemState )
   244 	else if ( iSipDeviceAwareObject && aVariable == ESystemState )
   208         {
   245         {
   209         iSipDeviceAwareObject->EventProcessingCompleted(aObserver);
   246         iSipDeviceAwareObject->EventProcessingCompleted(aObserver);
   210         }
   247         }
       
   248     // SIP deregistration for VPN session has been completed. 
       
   249     else if ( FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
       
   250          && ( aVariable == EVpnState ) 
       
   251          && iVpnMonitor )
       
   252         {
       
   253         iVpnMonitor->EventProcessingCompleted(aObserver);
       
   254         }
   211     }
   255     }
   212 
   256 
   213 // -----------------------------------------------------------------------------
   257 // -----------------------------------------------------------------------------
   214 // CSipSystemStateMonitorImpl::FindSnapMonitorById
   258 // CSipSystemStateMonitorImpl::FindSnapMonitorById
   215 // -----------------------------------------------------------------------------
   259 // -----------------------------------------------------------------------------