remotestoragefw/remotefileengine/inc/rsfwrferequest.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 09:07:59 +0200
changeset 0 3ad9d5175a89
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2005-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:  Base class for request encapsulation.
*
*/

#ifndef C_RSFWRFEREQUEST_H
#define C_RSFWRFEREQUEST_H

class TParse;
class TRfeInArgs;
class TRfeOutArgs;
class CRsfwVolumeTable;
class CRsfwVolume;
class CRsfwRfeOperation;


#include <e32base.h>

// type of the request
// in the future we could have e.g. internal requests
enum TRequestType 
	{
	EMessageRequest
	};


/**
 *  Base class for request encapsulation.
 *
 *
 */
class CRsfwRfeRequest : public CBase
    {
public:
    ~CRsfwRfeRequest();
    //
    virtual void CompleteAndDestroy(TInt aError) = 0;  // pure virtual
    
    void Destroy();
    virtual void Dispatch();
    virtual TParse& Src();
    virtual TParse& Dest();
    //
    CRsfwRfeOperation* Operation();
    void SetOperation(CRsfwRfeOperation* aCaller);
    TRequestType RequestType();
    void SetRequestType(TRequestType aRequestType);
    
// Request parameters
public:
    TRfeInArgs*    iInArgs;
    TRfeOutArgs*   iOutArgs;

    CRsfwVolumeTable*  iVolumeTable;
    // volume can be null in mount operation, but not after that  
    CRsfwVolume*       iVolume;
public:
    TDblQueLink    iLink;
protected:
    CRsfwRfeOperation* iOperation;
private:
    TRequestType   iRequestType;
    };

#endif