hti/HtiServicePlugins/HtiFtpServicePlugin/inc/HtiFtpServicePlugin.h
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/hti/HtiServicePlugins/HtiFtpServicePlugin/inc/HtiFtpServicePlugin.h	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,488 +0,0 @@
-/*
-* 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:  Implementation of ECOM plug-in service interface providing
-*               the FTP service.
-*
-*/
-
-
-#ifndef HTIFTPSERVICEPLUGIN_H__
-#define HTIFTPSERVICEPLUGIN_H__
-
-// INCLUDES
-#include <e32std.h>
-#include <f32file.h>
-#include <HtiServicePluginInterface.h>
-
-// CONSTANTS
-enum TFtpCommand
-    {
-    EFtpSTOR                = 0x02,
-    EFtpSTOR_u              = 0x03,
-    EFtpRETR                = 0x04,
-    EFtpRETR_u              = 0x05,
-    EFtpLIST                = 0x06,
-    EFtpLIST_u              = 0x07,
-    EFtpMKD                 = 0x08,
-    EFtpMKD_u               = 0x09,
-    EFtpRMD                 = 0x0A,
-    EFtpRMD_u               = 0x0B,
-    EFtpDELE                = 0x0C,
-    EFtpDELE_u              = 0x0D,
-    EFtpCANCEL              = 0x0E,
-    EFtpFILESIZE            = 0x0F,
-    EFtpLISTDIR             = 0x10,
-    EFtpLISTDIR_u           = 0x11,
-    EFtpLISTSIZES           = 0x12,
-    EFtpLISTSIZES_u         = 0x13,
-    EFtpLISTDRIVES          = 0x14,
-    EFtpLISTDRIVES_u        = 0x15,
-    EFtpRENAME              = 0x16,
-    EFtpRENAME_u            = 0x17,
-    EFtpCOPY                = 0x18,
-    EFtpCOPY_u              = 0x19,
-    EFtpMOVE                = 0x1A,
-    EFtpMOVE_u              = 0x1B,
-    EFtpSETFORCE            = 0x20,
-    EFtpCHECKSUM            = 0x30,
-    EFtpCHECKSUM_u          = 0x31,
-    EFtpListDetail          = 0x32,
-    EFtpListDetail_u        = 0x33,
-    EFtpListDirDetail       = 0x34,
-    EFtpListDirDetail_u     = 0x35,
-    EFtpFORMAT              = 0x40,
-    EFtpOK                  = 0xF0,
-    };
-
-enum TAlgorithm
-    {
-    EMD5 = 0x01,
-    };
-
-_LIT(KHtiFileHlp, "HtiFileHlp.exe");
-
-//temporary file used if file is uploaded to Tcb
-_LIT(KTmpFileName, "C:\\htitemp.bin");
-
-//tokens used for command line for HtiFileHlp.exe
-_LIT( KHtiFileHlpDeleteCmd, "d" );
-_LIT( KHtiFileHlpCopyCmd,   "c" );
-_LIT( KHtiFileHlpMkdCmd,    "m" );
-_LIT( KHtiFileHlpRmdCmd,    "r" );
-_LIT( KHtiFileHlpMoveCmd,   "mv" );
-_LIT( KHtiFileHlpRenameCmd, "re" );
-_LIT( KHtiFileHlpDelim,     "|" );
-
-//tokens used to id Tcb folders
-_LIT(KHtiTcbSys, "\\sys\\");
-_LIT(KHtiTcbResource, "\\resource\\");
-
-//offset where first folder's backslash starts in absolute filename
-                                   // 012
-const static TInt KPathOffset = 2; //"C:\"
-
-// MACROS
-
-// DATA TYPES
-
-// FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-class CHtiFtpBackupFakeBase;
-
-// CLASS DECLARATION
-/**
-* Callback interface for AO
-*/
-class MFtpObserverAO
-    {
-public:
-    virtual void FtpComplete( TInt anError) = 0;
-    };
-
-
-// CLASS DECLARATION
-/**
-* AO for async request to CFileMan and RFile
-*/
-class CFtpHandlerAO : public CActive, public MFileManObserver
-    {
-public:
-    CFtpHandlerAO(MFtpObserverAO* anObserver);
-    ~CFtpHandlerAO();
-
-    /** Set AO active */
-    void Start();
-
-public: //MFileManObserver
-    virtual MFileManObserver::TControl NotifyFileManStarted();
-    virtual MFileManObserver::TControl NotifyFileManOperation();
-    virtual MFileManObserver::TControl NotifyFileManEnded();
-
-protected: //from CActive
-    void RunL();
-    /**
-    * no direct cancel for RFile and CFileMan
-    */
-    void DoCancel();
-    //TInt RunError(TInt aError);
-
-protected:
-    MFtpObserverAO* iObserver;
-    /** set to ERtue if CFileMan operation should be canceled */
-    TBool iCancelFileMan;
-    };
-
-
-class CProcessLogonAO : public CActive
-    {
-public:
-    CProcessLogonAO(MFtpObserverAO* anObserver);
-    ~CProcessLogonAO();
-
-    /** Set AO active */
-    void Start(const TDesC& aCmdLine);
-
-protected: //from CActive
-    void RunL();
-    void DoCancel();
-
-protected:
-    MFtpObserverAO* iObserver;
-    RProcess iProcess;
-    };
-
-
-// CLASS DECLARATION
-/**
-* FTP plugin implementation
-*/
-class CHtiFtpServicePlugin : public CHTIServicePluginInterface,
-                             public MFtpObserverAO
-    {
-protected:
-    /**
-    * Major states of FPT plug-in
-    */
-    enum TFtpServiceState
-        {
-        EIdle,          /** waits for a new command                 */
-        EListBusy,      /** waits for memory to send LIST response  */
-        ERmdBusy,       /** outstanding request CFileMan::RmDir()   */
-        EDeleBusy,      /** outstanding request CFileMan::Delete()  */
-        EStorWait,      /** waits for data packages                 */
-        EStorBusy,      /** outstanding request to RFile::Write()   */
-        ERetrBusy,      /** outstanding request to RFile::Read()    */
-        ERetrWait,      /** waits for memory to send data package   */
-        EStorTcbBusy,   /** outstandig request to HtiFileHlp.exe    */
-        EDeleTcbBusy,   /** outstandig request to HtiFileHlp.exe    */
-        EMkdTcbBusy,    /** outstandig request to HtiFileHlp.exe    */
-        ERmdTcbBusy,    /** outstandig request to HtiFileHlp.exe    */
-        ERenameBusy,    /** outstanding request CFileMan::Rename()  */
-        ERenameTcbBusy, /** outstandig request to HtiFileHlp.exe   */
-        ECopyBusy,      /** outstanding request CFileMan::Copy()    */
-        ECopyTcbBusy,   /** outstandig request to HtiFileHlp.exe   */
-        EMoveBusy,      /** outstanding request CFileMan::Move()    */
-        EMoveTcbBusy    /** outstandig request to HtiFileHlp.exe   */
-        };
-public:
-
-    static CHtiFtpServicePlugin* NewL();
-
-    // Interface implementation
-
-    /**
-    * Calculates iBufferSize based on iDispatcher->FreeMemory() value
-    */
-    void InitL();
-
-    /**
-    * @return ETrue when in any EXXXBusy state
-    */
-    TBool IsBusy();
-
-    /**
-    * Process either control or data message depending on aPriority
-    *
-    * @param aMessage message with commands or data
-    * @param aPriority indicates type of aMessage
-    */
-    void ProcessMessageL( const TDesC8& aMessage,
-                         THtiMessagePriority aPriority );
-
-    void NotifyMemoryChange( TInt aAvailableMemory );
-
-public: // MFtpObserverAO
-    void FtpComplete( TInt anError );
-
-protected:
-    CHtiFtpServicePlugin();
-    void ConstructL();
-
-    virtual ~CHtiFtpServicePlugin();
-
-    /**
-    * Handle FTP control messages
-    *
-    * @param aMessage message with command
-    */
-    void HandleControlMessageL( const TDesC8& aMessage );
-
-    /**
-    * Handle expected CANCEL control message
-    * received in EStorWait or ERetrWait state
-    * If aMessage does not contain CANCEL command,
-    * BUSY message is sent, otherwise current operation is canceled
-    * and plugin goes to EIdle state and sends OK message.
-    *
-    * @param aMessage message with command
-    */
-    void HandleCancelL( const TDesC8& aMessage );
-
-    /**
-    * Accepts data messages for STOR command
-    *
-    * @param aMessage message with file data
-    */
-    void HandleDataMessageL( const TDesC8& aMessage );
-
-    //command handlers
-
-    /**
-    * Handle STOR command request
-    */
-    void HandleReceiveFileL();
-
-    /**
-    * Handle RETR command request
-    */
-    void HandleSendFileL();
-
-    /**
-    * Reads one portion of file data during RETR command handeling.
-    */
-    void ReadToBuffer();
-
-    /**
-    * Sends one portion of file data during RETR command handeling.
-    */
-    void SendBuffer();
-
-    /**
-    * Handle LIST command
-    *
-    * @param aUnicodText if ETrue then response in unicode
-    * @param aReadingAtt specifies what entries to read from a dir
-    * @param aSizes if ETrue filesizes are included in the response
-    */
-    void HandleListL( TBool aUnicodText, TUint aReadingAtt, TBool aSizes );
-    
-    /**
-    * Handle LIST FILES DETAIL command
-    *
-    * @param aUnicodText if ETrue then response in unicode
-    * @param aReadingAtt specifies what entries to read from a dir
-    */
-    void HandleListDetailL( TBool aUnicodText, TUint aReadingAtt);
-
-    /**
-    * Extracts and validate file name to iFileName
-    * If error sends err msg
-    * Return ETrue when filename is valid
-    * @param aFilename descriptor with filename
-    * @param aToUnicode flag indicates that data in aFilename
-    *                   should be treated as an unicode string
-    */
-    TBool GetFileNameL( const TDesC8& aFilename, TBool aToUnicode );
-
-    /**
-    * Extracts and validates path to iFileName
-    * If error sends err msg
-    * Return ETrue when directory is valid
-    * @param aDirname descriptor with directory name
-    * @param aToUnicode flag indicates that data in aFilename
-    *                   should be treated as an unicode string
-    */
-    TBool GetDirectoryL( const TDesC8& aDirname, TBool aToUnicode );
-
-    /**
-    * Helper to send short control messages
-    * (e.g. OK, BUSY, FILESIZE)
-    * @param aCmd command code
-    * @param aMsg additional command parameters
-    * @return KErrNone or Symbian error code
-    */
-    TInt SendControlMsg( TFtpCommand aCmd, const TDesC8& aMsg );
-
-    /**
-    * Helper to send error message
-    * @return KErrNone or some system-wide error code
-    */
-    inline TInt SendErrorMsg( TInt anError, const TDesC8& aMsg );
-
-    /**
-    * Handle delete command
-    * @param aFilename the file to delete
-    */
-    void HandleDeleteL( const TDesC& aFilename );
-
-    /**
-    * Handle rename command
-    * @param aMessage message that contains
-    * old and new file/directory names.
-    * @param aToUnicode flag indicates that data in aFilename
-    *  should be treated as an unicode string
-    */
-    void HandleRenameL( const TDesC8& aMessage, TBool aUnicode );
-
-    /**
-    * Handle copy command
-    * @param aMessage message that contains the file/directory to be copied
-    * and the location and name of the copy.
-    * @param aToUnicode flag indicates that data in aFilename
-    *  should be treated as an unicode string
-    */
-    void HandleCopyL( const TDesC8& aMessage, TBool aUnicode );
-
-    /**
-    * Handle move command
-    * @param aMessage message that contains the file/directory to be moved
-    * and the new location
-    * @param aToUnicode flag indicates that data in aFilename
-    *  should be treated as an unicode string
-    */
-    void HandleMoveL( const TDesC8& aMessage, TBool aUnicode );
-
-    /**
-    * Safe unicode copying from 8bit descr to 16bit buffer
-    * @param aTo destination descriptor
-    * @param aFrom source descriptor
-    */
-    void CopyUnicode( TDes& aTo, const TDesC8& aFrom );
-
-    /**
-    * Check either aFilename point in a TCB directories (sys, private, resource)
-    * @param aFilename the file to check
-    */
-    TBool IsFileTcb( const TDesC& aFilename );
-
-    /**
-    * Uses HtiFileHlp.exe to delete file from TCB directories
-    * @param aFilename the file to delete
-    */
-    void HandleTcbDeleteL( const TDesC& aFilename );
-
-    /**
-    * Uses HtiFileHlp.exe to copy files/folders to TCB directories
-    * @param aFromFilename the source path
-    * @param aToFilename the destination path
-    */
-    void HandleTcbCopyL( const TDesC& aFromFilename, const TDesC& aToFilename );
-
-    /**
-    * Uses HtiFileHlp.exe to makedir in TCB directories
-    * @param aDirname the directory to create
-    */
-    void HandleTcbMkdL( const TDesC& aDirname );
-
-    /**
-    * Uses HtiFileHlp.exe to delete dir in TCB directories
-    * @param aDirname the directory to delete
-    */
-    void HandleTcbRmdL( const TDesC& aDirname );
-
-    /**
-    * Uses HtiFileHlp.exe to do rename in TCB folders
-    * @param aTargetName the path to rename
-    * @param aDestName the new path name
-    */
-    void HandleTcbRenameL( const TDesC& aTargetName, const TDesC& aDestName );
-
-    /**
-    * Uses HtiFileHlp.exe to do move to TCB folders
-    * @param aTargetName the path to move
-    * @param aDestName the destination path
-    */
-    void HandleTcbMoveL( const TDesC& aTargetName, const TDesC& aDestName );
-
-    /**
-    * Sets the faking of backup/restore operation on/off.
-    * If aOn is ETrue sets backup/restore on, otherwise sets it off.
-    * @return KErrNone on success, otherwise system error code
-    */
-    TInt SetBURFakeState( TBool aOn );
-
-    /**
-    * Calculates a checksum for the given file with the given algorithm.
-    */
-    void HandleCheckSumCalcL( TAlgorithm aAlgorithm,
-                              const TDesC& aFilename );
-
-    /**
-    * Formats a drive.
-    */
-    void HandleFormat( const TUint8 aDrive, const TUint8 aMode );
-
-    /**
-    * Creates a list of drives.
-    */
-    void HandleListDrivesL( TBool aUnicode );
-
-private:
-    void RemoveEndBackslash( TFileName& aFileName );
-
-protected:
-    /** plugin state */
-    TFtpServiceState iState;
-    /** File server */
-    RFs iFs;
-    /** File manager used for RMD and DELE */
-    CFileMan* iFileMan;
-    /** current file for STOR and RETR*/
-    RFile iFile;
-    /** file name of iFile */
-    TFileName iFileName;
-
-    /** current offset in file during STOR or RETR */
-    TInt iCurrentOffset; //mean received bytes or sent bytes
-    /** the final size of iFile */
-    TInt iFileSize;
-
-    /** the size of iSendBuffer, calculated in InitL() */
-    TInt iBufferSize;
-    /** send buffer for RETR and LIST commands */
-    HBufC8* iSendBuffer;
-    /** des of iSendBuffer, used for RETR */
-    TPtr8 iSendBufferDes;
-
-    /** AO to handle current asyn request */
-    CFtpHandlerAO* iHandlerAO;
-
-    /** used for HtiFileHlp.exe */
-    CProcessLogonAO* iProcessLogonAO;
-
-    /**
-    * Class for activating/deactivating a backup session.
-    * This is used for forced operations to locked files. Activating backup
-    * should release locks on files that are in use by some other application.
-    */
-    CHtiFtpBackupFakeBase* iBackupFake;
-
-    /** Handle to the DLL for activating/deactivating backup */
-    RLibrary iBackupFakeLib;
-    };
-
-#endif
-
-// End of File