diff -r 826cea16efd9 -r 13a33d82ad98 videoutils_plat/videoconnutility_api/tsrc/src/VCXConnUtilTestSubscriber.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoutils_plat/videoconnutility_api/tsrc/src/VCXConnUtilTestSubscriber.cpp Wed Sep 01 12:20:37 2010 +0100 @@ -0,0 +1,214 @@ +/* +* 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: Class to handle subscribtions from PS* +*/ + + +#include "VCXTestLog.h" +#include "VCXConnUtilTestSubscriber.h" +#include "VCXConnUtilTestPSObserver.h" + +const TInt KMaxStrLenght( 100 ); + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::CVCXConnUtilTestSubscriber() +// ----------------------------------------------------------------------------- +// +CVCXConnUtilTestSubscriber::CVCXConnUtilTestSubscriber( const TUid aUid, + const TUint32 aKey, + RProperty::TType aType, + MVCXConnUtilTestPSObserver* aObserver ) : + CActive( EPriorityStandard ), + iUid( aUid ), + iKey( aKey ), + iKeyType(aType), + iObserver( aObserver ) + { + // NOP + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::NewL() +// ----------------------------------------------------------------------------- +// +CVCXConnUtilTestSubscriber* CVCXConnUtilTestSubscriber::NewL( const TUid aUid, + const TUint32 aKey, + RProperty::TType aType, + MVCXConnUtilTestPSObserver* aObserver ) + { + CVCXConnUtilTestSubscriber* self = + new( ELeave ) CVCXConnUtilTestSubscriber( aUid, aKey, aType, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::ConstructL() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::ConstructL() + { + iInitialized = EFalse; + User::LeaveIfError( iProperty.Attach( iUid, iKey ) ); + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::~CVCXConnUtilTestSubscriber() +// ----------------------------------------------------------------------------- +// +CVCXConnUtilTestSubscriber::~CVCXConnUtilTestSubscriber() + { + if( IsActive() ) + { + Cancel(); + } + iProperty.Close(); + + delete iSafeWait; + iSafeWait = NULL; + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::Get() +// ----------------------------------------------------------------------------- +// +TInt CVCXConnUtilTestSubscriber::Get( TInt& aValue ) + { + return iProperty.Get( aValue ); + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::Get() +// ----------------------------------------------------------------------------- +// +TInt CVCXConnUtilTestSubscriber::Get( TDes& aValue ) + { + return iProperty.Get( aValue ); + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::Set() +// ----------------------------------------------------------------------------- +// +TInt CVCXConnUtilTestSubscriber::Set( TInt& aValue ) + { + return iProperty.Set( aValue ); + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::Set() +// ----------------------------------------------------------------------------- +// +TInt CVCXConnUtilTestSubscriber::Set( const TDesC& aValue ) + { + return iProperty.Set( aValue ); + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::Start() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::Start() + { + if( !IsActive() ) + { + iProperty.Subscribe( iStatus ); + SetActive(); + iInitialized = ETrue; + } + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::WaitChange() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::WaitChangeL() + { + if( !iSafeWait ) + { + iSafeWait = new ( ELeave ) CActiveSchedulerWait; + } + if ( iSafeWait && !iSafeWait->IsStarted() ) + { + iSafeWait->Start(); + } + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::EndWait() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::EndWait() + { + if ( iSafeWait && iSafeWait->IsStarted() ) + { + iSafeWait->AsyncStop(); + } + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::DoCancel() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::DoCancel() + { + if( IsActive() ) + { + iProperty.Cancel(); + } + iInitialized = EFalse; + } + +// ----------------------------------------------------------------------------- +// CVCXConnUtilTestSubscriber::RunL() +// ----------------------------------------------------------------------------- +// +void CVCXConnUtilTestSubscriber::RunL() + { + VCXLOGLO1(">>>CVCXConnUtilTestSubscriber::RunL"); + // resubscribe before processing new + // value to prevent missing updates + iProperty.Subscribe( iStatus ); + SetActive(); + + if( iInitialized ) + { + TBuf< KMaxStrLenght > strValue; + TInt intValue; + + if( iKeyType == RProperty::EInt ) + { + // int type changed + if( iProperty.Get( intValue ) == KErrNone && iObserver ) + { + iObserver->ValueChangedL( iUid, iKey, intValue ); + } + } + else if( iKeyType == RProperty::EText ) + { + if( iProperty.Get( strValue ) == KErrNone && iObserver ) + { + iObserver->ValueChangedL( iUid, iKey, strValue ); + } + } + } + EndWait(); + iInitialized = ETrue; + VCXLOGLO1("<<