videoconnutility/connutility/src/vcxconnutilpubsub.cpp
branchRCL_3
changeset 22 826cea16efd9
parent 21 798ee5f1972c
child 23 13a33d82ad98
--- a/videoconnutility/connutility/src/vcxconnutilpubsub.cpp	Thu Aug 19 10:54:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: 
-*
-*/
-
-
-
-
-#include <mpxlog.h>
-
-#include "vcxconnutilcommon.h"
-#include "vcxconnectionutility.hrh"
-#include "vcxconnutilpubsub.h"
-#include "vcxconnutilsubscriber.h"
-#include "vcxconnutilpubsubobserver.h"
-
-// CONSTANTS
-_LIT( KConnUtilCounterSema, "__VcxConnUtillCounterSema__ ");
-const TInt KSemaStartupValue = 1;
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::NewL()
-// -----------------------------------------------------------------------------
-//
-CVcxConnUtilPubSub* CVcxConnUtilPubSub::NewL( MConnUtilPubsubObserver *aObserver )
-    {
-    CVcxConnUtilPubSub* self = CVcxConnUtilPubSub::NewLC( aObserver );	
-    CleanupStack::Pop( self ); 
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::NewLC()
-// -----------------------------------------------------------------------------
-//
-CVcxConnUtilPubSub* CVcxConnUtilPubSub::NewLC( MConnUtilPubsubObserver *aObserver  )
-    {
-    CVcxConnUtilPubSub* self = new (ELeave) CVcxConnUtilPubSub( );
-    CleanupStack::PushL( self );
-    self->ConstructL( aObserver );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::CVcxNsConnUtilEngine()
-// -----------------------------------------------------------------------------
-//
-CVcxConnUtilPubSub::CVcxConnUtilPubSub( )
-    {
-    // NOP
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::ConstructL()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::ConstructL( MConnUtilPubsubObserver *aObserver )
-    {
-    MPX_DEBUG1("vcxconnutil ## CVcxConnUtilPubSub::ConstructL() in");
-
-    TInt status( KErrNone );
-    // semafore for protecting P&S -counter value writing
-    status = iSemaCounter.CreateGlobal( KConnUtilCounterSema, KSemaStartupValue );
-    if( status == KErrAlreadyExists )
-        {
-        // if semafore exists already, just open handle to existing
-        status = iSemaCounter.OpenGlobal( KConnUtilCounterSema );
-        }
-    User::LeaveIfError( status );
-
-    User::LeaveIfError( 
-            iPropertyCurrentIAPId.Attach( KVcxConnUtilPScategory, 
-                                          EVCxPSIapId ) );
-    
-    User::LeaveIfError( 
-            iPropertyCurrentSNAPId.Attach( KVcxConnUtilPScategory, 
-                                           EVCxPSSnapId ) );
-    
-    User::LeaveIfError( 
-            iPropertyNbrOfInst.Attach( KVcxConnUtilPScategory, 
-                                       EVCxPSNbrConnInstances ) );
-    
-    User::LeaveIfError(
-            iPropertyAccepted.Attach( KVcxConnUtilPScategory, 
-                                      EVCxPSNbRoamAccepted ) );
- 
-    iConnectionStatePS = 
-        CVcxConnUtilSubscriber::NewL( KVcxConnUtilPScategory, 
-                                      EVCxPSConnectionStatus, 
-                                      RProperty::EInt, aObserver );
-    
-    iMasterExistPS =     
-        CVcxConnUtilSubscriber::NewL( KVcxConnUtilPScategory, 
-                                      EVCxPSMasterExists, 
-                                      RProperty::EInt, aObserver ); 
-    
-    iRoamingReqStatusPS = 
-        CVcxConnUtilSubscriber::NewL( KVcxConnUtilPScategory, 
-                                      EVCxPSRoamingRequestStatus, 
-                                      RProperty::EInt, aObserver );  
-    
-    iNbrInstanceResp = 
-        CVcxConnUtilSubscriber::NewL( KVcxConnUtilPScategory, 
-                                      EVCxPSNbrRoamResp, 
-                                      RProperty::EInt, aObserver );
-        
-    if( GetValue( EVCxPSIapId, status ) == KErrNotFound )
-        {
-        MPX_DEBUG1("vcxconnutil ## CVcxConnUtilPubSub::ConstructL() no properties");
-        
-        // define properties
-        DefinePropertiesL();           
-        }
-    
-    MPX_DEBUG1("vcxconnutil ## CVcxConnUtilPubSub::ConstructL() out");
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::~CVcxConnUtilPubSub()
-// -----------------------------------------------------------------------------
-//   
-CVcxConnUtilPubSub::~CVcxConnUtilPubSub()
-    {
-    iSemaCounter.Close();	
-    	
-    iPropertyCurrentIAPId.Close();
-    iPropertyCurrentSNAPId.Close();
-    iPropertyNbrOfInst.Close();
-    iPropertyAccepted.Close();
-    
-    delete iConnectionStatePS;
-    delete iMasterExistPS;
-    delete iRoamingReqStatusPS;
-    delete iNbrInstanceResp;
-    
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::DefinePropertiesL()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::DefinePropertiesL()
-    {
-    MPX_DEBUG1("vcxconnutil ## CVcxConnUtilPubSub::DefinePropertiesL() in");
-    TInt result( KErrNone );
-    RSemaphore semaphore;
-    result = semaphore.CreateGlobal( KVcxConnUtilPSSema, 0 );
-    if( result != KErrNone && result != KErrAlreadyExists )
-        {
-        // kernel cannot create semaphore, or there is no existing
-        User::LeaveIfError( result );
-        }
-    if( result == KErrAlreadyExists )
-        {
-        // semaphore exist. Some other process is already defining PS
-        // open semaphore and wait for it to finish
-        User::LeaveIfError( semaphore.OpenGlobal( KVcxConnUtilPSSema ) );
-        semaphore.Wait();
-        // check if PS keys do exists
-        TInt value( 0 );
-        if( GetValue( EVCxPSIapId, value ) == KErrNotFound )
-            {
-            // other proces has failed to define PS, 
-            // this process will try it
-            result = KErrNone;
-            }                
-        }
-    if( result == KErrNone )
-        {
-        const TUidType createPSUid( KNullUid, KNullUid, KVcxConnUtilPScategory );
-       
-        RProcess createPS;
-        result = createPS.Create( KVcxConnUtilPSWorkerName(), KNullDesC(), createPSUid );
-        if( result == KErrNone )
-            {
-            createPS.Resume();
-            createPS.Close();
-            semaphore.Wait();
-            // init default values for keys, whose default differs from 0
-            SetValue( EVCxPSRoamingRequestStatus, EVCxRoamingNotInit );
-            SetValue( EVCxPSConnectionStatus, EVCxNotConnected );         
-            }
-        }
-    // need to signal here for other possible
-    // processes to proceed
-    semaphore.Signal();
-    semaphore.Close();  
-    if( result != KErrNone && result != KErrAlreadyExists )
-        {
-        // all other erros cause leave: worker process creation fails, or
-        // kernel refuses to open existing semphore (== platform problem)
-        User::LeaveIfError( result );
-        }
-    MPX_DEBUG1("vcxconnutil ## CVcxConnUtilPubSub::DefinePropertiesL() out");
-    }
-
-
-RProperty* CVcxConnUtilPubSub::GetProperty( TUint32 aKey )
-    {
-    switch( aKey )
-        {
-        case EVCxPSConnectionStatus:
-            return &( iConnectionStatePS->Property() );
-            
-        case EVCxPSIapId:
-            return &iPropertyCurrentIAPId;
-            
-        case EVCxPSSnapId:
-            return &iPropertyCurrentSNAPId;
-            
-        case EVCxPSMasterExists:
-            return &( iMasterExistPS->Property() );
-            
-        case EVCxPSNbrConnInstances:
-            return &iPropertyNbrOfInst;
-            
-        case EVCxPSRoamingRequestStatus:
-            return &( iRoamingReqStatusPS->Property() );
-            
-        case EVCxPSNbrRoamResp:    
-            return &( iNbrInstanceResp->Property() );
-            
-        case EVCxPSNbRoamAccepted:    
-            return &iPropertyAccepted;
-            
-        default:
-            break;
-        }
-    return 0;
-    }
-
-CVcxConnUtilSubscriber* CVcxConnUtilPubSub::GetSubscriber( TUint32 aKey )
-    {
-    switch( aKey )
-        {  
-        case EVCxPSConnectionStatus:
-            return iConnectionStatePS;
-            
-        case EVCxPSMasterExists:
-            return iMasterExistPS;
-            
-        case EVCxPSRoamingRequestStatus:
-            return iRoamingReqStatusPS;
-            
-        case EVCxPSNbrRoamResp:    
-            return iNbrInstanceResp;   
-            
-        default:
-            break;
-        }
-        return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::IncCounterPubSubL()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::IncCounterPubSubL( TUint32 aKey )
-    {
-    const TInt KIncValue( 1 );
-    DoPSCounterIncrementL( aKey, KIncValue );   
-    }
-  
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::DecNbrOfConnUsersPubSub()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::DecCounterPubSubL( TUint32 aKey )
-    {
-    const TInt KDecValue( -1 );
-    DoPSCounterIncrementL( aKey, KDecValue );      
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::DoPSCounterIncrementL()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::DoPSCounterIncrementL( TUint32 aKey, TInt aCalcFactor )
-    {
-    if( aKey == EVCxPSNbrConnInstances || 
-        aKey == EVCxPSNbrRoamResp      ||
-        aKey == EVCxPSNbRoamAccepted )
-        {
-        RProperty* property = GetProperty( aKey );
-        if( property )
-            {
-             TInt value( 0 );
-             TInt err( KErrNone );
-             // entering critical section
-             iSemaCounter.Wait();
-             err = property->Get( value );
-             if( err == KErrNone )
-                 {
-                 value += aCalcFactor;
-                 err = property->Set( value ); 
-                 }
-             // leaving critical section 
-             iSemaCounter.Signal();
-             User::LeaveIfError( err );  
-             }
-         }	    	
-    }
-    
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::SetValue()
-// -----------------------------------------------------------------------------
-//
-TInt CVcxConnUtilPubSub::SetValue( TUint32 aKey, TInt aValue )
-    {
-    TInt err( KErrNone );
-    RProperty* property = GetProperty( aKey );
-    if( property )
-        {
-        err = property->Set( aValue );
-        }
-    return err;
-    }
- 
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::GetValue()
-// -----------------------------------------------------------------------------
-//
-TInt CVcxConnUtilPubSub::GetValue( TUint32 aKey, TInt& aValue )
-    {
-    TInt err( KErrNone );
-    RProperty* property = GetProperty( aKey );
-    if( property )
-        {
-        err = property->Get( aValue );
-        }
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::CancelValueSubscribers()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::StartSubscibers( TUint32 aKey )
-    {
-    if( !aKey )
-        {
-        iConnectionStatePS->Start();
-        iMasterExistPS->Start();
-        iRoamingReqStatusPS->Start();
-        iNbrInstanceResp->Start();
-        }
-    else
-        {
-        CVcxConnUtilSubscriber* subscriber = GetSubscriber( aKey );
-        if( subscriber )
-            {
-            subscriber->Start();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxConnUtilPubSub::CancelValueSubscribers()
-// -----------------------------------------------------------------------------
-//
-void CVcxConnUtilPubSub::CancelValueSubscribers( TUint32 aKey )
-    {
-    if( !aKey )
-        {
-        iConnectionStatePS->Cancel();
-        iMasterExistPS->Cancel();
-        iRoamingReqStatusPS->Cancel();
-        iNbrInstanceResp->Cancel();
-        }
-    else
-        {
-        CVcxConnUtilSubscriber* subscriber = GetSubscriber( aKey );
-        if( subscriber )
-            {
-            subscriber->Cancel();
-            }
-        }
-    }
-// end of file