hwrmhaptics/hapticsserver/inc/hwrmhapticsserver.h
author andy simpson <andrews@symbian.org>
Fri, 17 Sep 2010 17:21:53 +0100
branchRCL_3
changeset 67 6ff7ee498df1
parent 0 4e1aa6a622a0
permissions -rw-r--r--
Merge re-apply fix for Bug 2620

/*
* Copyright (c) 2008 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:  Haptic server interface.
*
*/


#ifndef HWRMHAPTICSSERVER_H
#define HWRMHAPTICSSERVER_H

#include "hwrmhapticsclientserver.h"

class CHWRMHapticsPluginManager;
class CHWRMHapticsReservationHandler;
class CHWRMHapticsCommonData;
class CHWRMHapticsShutdown;

/**
 * Haptics server implementation.
 */
class CHWRMHapticsServer : public CPolicyServer
    {
public:

    /**
     * Creates a new server.
     * 
     * @param aPriority Priority of the server.
     * @return A pointer to the created object.
     */
    static CHWRMHapticsServer* NewL( TInt aPriority );

    /**
     * Creates a new server. Newly created instance is left onto
     * the cleanup stack.
     * 
     * @param aPriority Priority of the server.
     * @return A pointer to the created object.
     */
    static CHWRMHapticsServer* NewLC( TInt aPriority );

    /**
     * Destructor.
     */
    virtual ~CHWRMHapticsServer();

    /**
     * Get pointer to plugin handler. Returns NULL if plugin manager
     * is not initialized yet.
     *
     * @return Pointer to correct plugin handler, or NULL if not created.
     */
    CHWRMHapticsPluginManager* PluginManager() const;

    /**
     * Get pointer to reservation handler. Returns NULL if handler is 
     * not initialized yet.
     *
     * @return Pointer to correct reservation handler, or NULL if not created.
     */
    CHWRMHapticsReservationHandler* ReservationHandler() const;

    /**
     * Get pointer to Haptics common data.
     *
     * @return Pointer to haptics common data or NULL if resource 
               not supported.
     */
    CHWRMHapticsCommonData* HapticsCommonData() const;

    /**
     * Initializes Haptics service. Haptics is not initialized in 
     * ConstructL in order to speed up the startup.
     */
    void InitHaptics();

    /**
     * Increases the amount of sessions connected to 
     * this server (iSessionCount).
     */
    void AddSession();

    /**
     * Decreases the amount of sessions connected to 
     * this server (iSessionCount). If the session count becomes
     * zero, starts the shutdown timer for shutting down this server.
     */
    void DropSession();

private:

    /**
     * C++ constructor.
     * 
     * @param aPriority The priority for this server.
     */
    CHWRMHapticsServer( TInt aPriority );
    /**
     * Symbian 2nd phase constructor.
     */
    void ConstructL();

    /**
     * Creates a new session when client connects.
     * 
     * @param aVersion Version, which should match with the version of 
                       this server.
     * @param aMessage 'connect' message from the client
     * @return Pointer to created session or leaves with codes
     *         KErrNotSupported if versions does not match
     *         KErrNoMemory if creation of new session fails.
     */
    CSession2* NewSessionL( const TVersion& aVersion,
                            const RMessage2& aMessage ) const;

private:

    /**
     * Plugin manager for this server.
     * Owned.
     */
    CHWRMHapticsPluginManager* iHapticsPluginManager;

    /**
     * Reservation handler for this server.
     * Owned.
     */
    CHWRMHapticsReservationHandler* iHapticsReservationHandler;

    /**
     * Common data of this server.
     * Owned.
     */
    CHWRMHapticsCommonData* iHapticsCommonData;

    /**
     * Whether or not haptics has been initialized on the server.
     */
    TBool iHapticsInitiated;

    /**
     * The amount of sessions currently in the server.
     */
    TInt iSessionCount;

    /**
     * Shutdown timer instance.
     * Owned.
     */
    CHWRMHapticsShutdown* iShutdown;
    };

#endif      // HWRMHAPTICSSERVER_H 
            
// End of File