voipplugins/sipconnectionprovider/inc/scpvmbxhandler.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:57 +0100
branchRCL_3
changeset 22 d38647835c2e
parent 0 a4daefaec16c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2007 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:  
*
*/


#ifndef C_CSCPVMBXHANDLER_H
#define C_CSCPVMBXHANDLER_H

#include <e32base.h>

#include "scpservicehandlerbase.h"
#include "ipvmbxobserver.h"

class CScpSubService;
class CScpServiceStorage;

/**
*  Vmbx sub service handler.
*
*  @lib sipconnectionprovider.dll
*  @since Series 60 3.2
*/
class CScpVmbxHandler : public CScpServiceHandlerBase,
                        public MIpVmbxObserver 
    {
public:  // Constructors and destructor
 
    static CScpVmbxHandler* NewL( CScpSubService& aSubService );
    
    /**
     * Destructor.
     */
    virtual ~CScpVmbxHandler();

private: // From base class
    
    /**
     * Enables service.
     */
    void EnableSubServiceL();

    /**
     * Checks if another vmbx sub service is already enabled
     * @return ETrue if enabled
     */
    TBool IsAnotherVmbxSubServiceAlreadyEnabled() const;

    /**
     * Disables service.
     */
    TInt DisableSubService();

     /**
     * Handles messages from Vmbx interface
     * @param aServiceId Message concers the given service id
     * @param aMessage Message
     */
    void HandleMessage( TUint32 aServiceId, TVmbxMessage aMessage );

    /**
     * Handlers sip connection event
     * @param aProfileId Sip profile id
     * @param aEvent Connection event
     */
    void HandleSipConnectionEvent( TUint32 aProfileId,
                                   TScpConnectionEvent aEvent );

    /**
     * Returns type of sub service (VoIP, Vmbx, Presence).
     * @return Type of the sub service.
     */
    TCCHSubserviceType SubServiceType() const;

private:

    /**
     * C++ default constructor.
     */
    CScpVmbxHandler( CScpSubService& aSubService );

    /**
     * 2nd phase constructor.
     */    
    void ConstructL();

    /**
     * Disable sub service.
     */    
    void UnsubscribeL();

    /**
     * SubscribeL
     */  
    void SubscribeL();

    /**
     * Force Vmbx service disable
     * @param aSelf This object
     */    
    static TInt ForceVmbxServiceDisable( TAny* aSelf );
    
private: // data
    
    /**
     * Indicates do we have to make resubscribe
     */
    TBool iResubscribe;
    
#ifdef _DEBUG
    friend class T_CScpVmbxHandler;
    friend class T_CScpServiceManager;
#endif
    };

#endif      // C_CSCPVMBXHANDLER_H   
            
// End of File