alwayson_net_plugin/pdpcontextmanager2/src/caoraumanagerimplstub.cpp
author hgs
Thu, 24 Jun 2010 11:36:05 +0300
changeset 41 bbb64eb3bdee
parent 0 5a93021fdf25
permissions -rw-r--r--
201025

/*
* Copyright (c) 2004,2006 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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:  Implements the CAORAUManagerImpl class
*
*/


// INCLUDE FILES
#include "caoraumanagerimplstub.h"
#include "logger.h"
#include "raumanagerobserver.h"
#include "pdpcontextmanagerinternalpskeys.h"

// METHODS

#ifdef __ALWAYS_ON_CUSTOM_API

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::NewL
// ---------------------------------------------------------------------------
//
CAORAUManagerImpl* CAORAUManagerImpl::NewL( MAORAUManagerObserver& aObserver,
                                            RMmCustomAPI& /*aCustomAPI*/ )
    {
    LOG_1( _L("CAORAUManagerImpl::NewL") );
    
    CAORAUManagerImpl* self = new( ELeave ) CAORAUManagerImpl( aObserver );
    
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self ); // self
    
    return self;
    }

#else

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::NewL
// ---------------------------------------------------------------------------
//
CAORAUManagerImpl* CAORAUManagerImpl::NewL( MAORAUManagerObserver& aObserver )
    {
    LOG_1( _L("CAORAUManagerImpl::NewL") );
    
    CAORAUManagerImpl* self = new( ELeave ) CAORAUManagerImpl( aObserver );
    
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self ); // self
    
    return self;
    }

#endif // __ALWAYS_ON_CUSTOM_API

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::~CAORAUManagerImpl
// ---------------------------------------------------------------------------
//
CAORAUManagerImpl::~CAORAUManagerImpl()
    {
    LOG_1( _L("CAORAUManagerImpl::~CAORAUManagerImpl") );
    
    if ( iRAUEventSubscriber )
        {
        iRAUEventSubscriber->Cancel();
        }
    iRAUEventProperty.Delete( KRAUEventCat, KRAUGenerateEvent );
    iRAUEventProperty.Close();
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::CAORAUManagerImpl
// ---------------------------------------------------------------------------
//
CAORAUManagerImpl::CAORAUManagerImpl( MAORAUManagerObserver& aObserver ):
    iObserver( aObserver )
    {
    LOG_1( _L("CAORAUManagerImpl::CAORAUManagerImpl") );
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::ConstructL
// ---------------------------------------------------------------------------
//
void CAORAUManagerImpl::ConstructL()
    {
    LOG_1( _L("CAORAUManagerImpl::ConstructL") );
    
    // Define a property and attatch to it
    User::LeaveIfError( iRAUEventProperty.Define(
        KRAUEventCat,
        KRAUGenerateEvent,
        RProperty::EInt ) );
    User::LeaveIfError(
        iRAUEventProperty.Attach( KRAUEventCat, KRAUGenerateEvent ) );
    
    // Create subscription listener
    iRAUEventSubscriber = CAOAsyncWrapper<CAORAUManagerImpl>::NewL(
        this,
        RAUEventSubscribeIssueRequest,
        RAUEventSubscribeRunL,
        RAUEventSubscribeDoCancel,
        NULL );
        
    // Subscribe RAU event
    SubscribeRAUEvents();
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::SubscribeRAUEvents
// ---------------------------------------------------------------------------
//
void CAORAUManagerImpl::SubscribeRAUEvents()
    {
    LOG_1( _L("CAORAUManagerImpl::SubscribeRAUEvents") );
    
    iRAUEventSubscriber->IssueRequest();
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::RAUEventSubscribeIssueRequest
// ---------------------------------------------------------------------------
//
void CAORAUManagerImpl::RAUEventSubscribeIssueRequest(
    TRequestStatus& aStatus )
    {
    LOG_1( _L("CAORAUManagerImpl::RAUEventSubscribeIssueRequest") );
    
    iRAUEventProperty.Subscribe( aStatus );
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::RAUEventSubscribeRunL
// ---------------------------------------------------------------------------
//
void CAORAUManagerImpl::RAUEventSubscribeRunL( TInt aStatus )
    {
    LOG_2( _L("CAORAUManagerImpl::RAUEventSubscribeRunL: aStatus: %d"),
        aStatus );
    
    if ( aStatus == KErrNone )
        {
        TInt value = 0;
        TInt err = iRAUEventProperty.Get( value );
        if ( err == KErrNone )
            {
            MAORAUManagerObserver::TRAUType rauType =
                MAORAUManagerObserver::ENormal;
            if ( value == EPeriodicalRAU )
                {
                rauType = MAORAUManagerObserver::EPeriodical;
                }
            iObserver.HandleSuccesfulRAUL( rauType );
            }
        }
    SubscribeRAUEvents();
    }

// ---------------------------------------------------------------------------
// CAORAUManagerImpl::SubscribeRAUEvents
// ---------------------------------------------------------------------------
//
void CAORAUManagerImpl::RAUEventSubscribeDoCancel()
    {
    LOG_1( _L("CAORAUManagerImpl::RAUEventSubscribeDoCancel") );
    
    iRAUEventProperty.Cancel();
    }

// End of file