dosservices/commondsy/inc/CDSYExtensionDOSServerPlugin.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:58:42 +0200
changeset 12 e978f818f9bd
parent 0 4e1aa6a622a0
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* Copyright (c) 2009 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:  Declaration of CCDSYExtensionDOSServerPlugin class
*
*/


#ifndef CDSYEXTENSIONDOSSERVERPLUGIN_H
#define CDSYEXTENSIONDOSSERVERPLUGIN_H

// INCLUDES
#include <dosextensionbase.h>


// CONSTANTS
// MACROS
// DATA TYPES
// FUNCTION PROTOTYPES
// FORWARD DECLARATIONS
class CCDSYDOSServerRequestManager;


/**
*  CCDSYExtensionDOSServerPlugin
*  This class implements the CCDSYExtensionDOSServerPlugin
*/
NONSHARABLE_CLASS( CCDSYExtensionDOSServerPlugin ): public CDosExtensionBase
    {
    public:                 // Constructor and destructor
        /**
        * Destructor.
        */
        ~CCDSYExtensionDOSServerPlugin();

        /**
        * Creates a new extension plug-in.
        * @param aCDSYDOSServerRequestManager   The request manager
        * @return                               The new plug-in
        */
        static CCDSYExtensionDOSServerPlugin* NewL( CCDSYDOSServerRequestManager& aCDSYDOSServerRequestManager );
        
    protected:              // From Dos plug-in API
        /**
        * Implements a raw function call. The implementation interprets the parameters and satisfies the requests.
        * @param aFunc                  A unique integer among the extended functions identifying the called function.
        * @param aParameter             A pointer to the function parameter.
        * @param aParLength             The parameter length.
        * @param aParameterModified     ETrue if the contents of aParameter have changed, otherwise EFalse. 
        * @return                       Symbian error code.
        */
        TInt CallFunctionL( TInt aFunc, TAny *aParameter, TInt aParLength, TBool& aParameterModified );

        /**
        * This is the asynchronous version of CallFunction.
        * @param aFunc                  A unique integer among the extended functions identifying the called function.
        * @param aParameter             A pointer to the function parameter.
        * @param aParLength             The parameter length.
        * @param aMessage               The message to be completed. Has to be completed by the implementation of the function.
        * @return                       void 
        */
        void CallFunctionAndCompleteL( TInt aFunc, TAny *aParameter, TInt aParLength, const RMessage2& aMessage );

    private:                // Internal functions
        /**
        * Constructor.
        * @param aCDSYDOSServerRequestManager The request manager
        */
        CCDSYExtensionDOSServerPlugin( CCDSYDOSServerRequestManager& aCDSYDOSServerRequestManager );

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

    private:                // Data
        // The request manager is used to send messages to service logic
        CCDSYDOSServerRequestManager& iCDSYDOSServerRequestManager;

        // The extension interface where function calls are delegated to
        MDosExtensionBaseDSY* iDosExtensionBaseDSY;
    };



#endif //#ifndef CDSYEXTENSIONDOSSERVERPLUGIN_H



//  End of File