diff -r 000000000000 -r b16258d2340f applayerprotocols/ftpengine/inc/SESSION.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/ftpengine/inc/SESSION.H Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,179 @@ +/** +* Copyright (c) 1998-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: +* EPOC32 FTP Engine header file +* Author: Philippe Gabriel +* Exports set of APIs simplyfying access to the FTP protocol +* +* +*/ + + + +/** + @file SESSION.H + @internalComponent +*/ + +#if !defined(__SESSION_H__) +#define __SESSION_H__ +#include +#include +#include +#include +#include +#include "SETERROR.H" + +//class CFtpProtocol; +//class CFtpSessSetError; + +/** +MInterface definition to provide callback functions to the client +*/ + +class MSetErrorNotifier; +NONSHARABLE_CLASS(CFTPSessionDerived) : public CFTPSession,public MFtpProtocolNotifier,MSetErrorNotifier +/** +The CFTPSession class +@internalComponent +*/ + { +public: + /** Define the CFTPSetError callback notifier */ + void SetErrorNotifier(const TInt); + /** Define the CFtpProtocol callback notifiers */ + void ServerMessage(const TDesC8& aMessage); + void ServerPositiveAnswerNotification(const TOpComp aStatus); + void ServerXFerNotification(const TOpComp aStatus); + void ServerNegativeAnswerNotification(const TOpComp aStatus); + void ErrorNotification(const TOpComp aStatus); + /** Construction */ + static CFTPSessionDerived* NewL(MFtpSessionNotifier* aNotifier); + + /** Destruction */ + ~CFTPSessionDerived(); + + /** Connection APIs */ + + /** Establish a connection with a server: */ + virtual void Connect( const TSockAddr& aNetAddr, //IP address + const TDesC8& aUserName, + const TDesC8& aPassword, + const TConnectionMode aConnectionMode=EActive); + + virtual void Connect( const THostName& aServerName, //DNS name + const TDesC8& aUserName, + const TDesC8& aPassword, + const TConnectionMode aConnectionMode=EActive, + const TUint aPort=KDefaultServerPiPort); + + /** Close connection with a server */ + virtual void Close(); + + /** Cancel last FTP operation */ + virtual void Cancel(); + + /** Restart an aborted transfer operation */ + virtual void Restart(const TUint aTFTPRestartOffset); + + /** Transfer APIs */ + + /** Store a file on the server */ + virtual void Store(const TDesC& aLocalFileName, + const TDesC8& aNewRemoteFileName, + const TBool aOverwrite = FALSE, + const RepresentationType aRepresentationType = EBinary, + const TransferMode aTransferMode = EStream); + + /** Get a file from the server */ + virtual void Retrieve( const TDesC8& aRemoteFileName, + const TDesC& aNewLocalFileName, + const TOpenMode aOpenMode = EOverwrite, + const RepresentationType aRepresentationType = EBinary, + const TransferMode aTransferMode = EStream); + + /** File system management functions */ + virtual void ChangeDirectory(const TDesC8& aDirectoryName); + virtual void CreateDirectory(const TDesC8& aDirectoryName); + virtual void DeleteDirectory(const TDesC8& aDirectoryName); + virtual void GetCurrentDirectory(void); + virtual void ListDirectory(const TDesC8& aDirectoryName, + TDes8& aFileList); + + virtual void DeleteFile(const TDesC8& aFileName); + virtual void RenameFile( const TDesC8& aRemoteFileName, + const TDesC8& aNewRemoteFileName); +private: + /** C++ constructor - not exported; implicitly called from NewL() */ + CFTPSessionDerived(void); + /** 2nd phase construction, called by NewL() */ + void ConstructL(MFtpSessionNotifier* aNotifier); + void NormalTransition(void); + void ErrorTransition(const MFtpProtocolNotifier::TOpComp); +enum TState + { + EIdle, + EConnecting,EConnected,ELoginUser,ELoginPass,EClosing, + EGetCurrentDirectory,EChangeDirectory,ECreateDirectory, + EDeleteDirectory,EDeleteFile,ERenameFileFrom, + ERenameFileTo, + EInitiateListOperation,EInitiateRetrieveOperation,EInitiateStoreOperation, + EPerformingPortForList,EPerformingPasvForList,EPerformingList, + EPerformingTypeForRetrieve,EPerformingTypeForStore, + EPerformingRestForRetrieve,EPerformingRestForStore, + EPerformingPortForRetrieve,EPerformingPasvForRetrieve,ERetrieveFile, + EPerformingPortForStore,EPerformingPasvForStore,EStoreFile,EStoreFileSendEOF, + EAbortingStore,EAbortingRetrieve,EAbortingList + }; +TState UpdateState(TState,MFtpProtocolNotifier::TOpComp); +TInt debugInt; +TState iState; +/** A pointer to the set of callback notifiers */ +MFtpSessionNotifier* iFtpSessionNotifier; +/** A pointer to the CFTPProtocol object */ +CFtpProtocol* iCFtpProtocol; +/** A pointer to the CFTPSetError object */ +CFTPSetError* iCFTPSetError; +TBool FileServerInitialised; +RFs iFs; +RFile iFile; +TBool iFileOpErrorOccured; +/** The current representation type */ +RepresentationType iCurrentRepresentationType; +/** A placeholder for the parameter passed to retrieve and store functions*/ +RepresentationType iNewRepresentationType; +/** An offset for the FTP REST command to perform a restart */ +TUint iRESTOffset; +/** FTP Connection can be passive (server connects on one of my ports) */ +TBool iPASVMode; +/** +A place holder buffer for my API parameters +client can pass me pointer to params stored on its stack +need to copy them to a safe place so I can use them latter +when the scheduler calls my notifier +*/ +TBuf8<512> iBuffer1; +TBuf8<512> iBuffer2; +TBuf8<5000> iFileXferBuffer[2]; +TInt iCurrentXferBuffer; +TDes8* iFileList; +TInt iTInt1,iTInt2; +TBool iTBool1; +/** Placeholder for the answer I got from the FTP server */ +TBuf<3> iServerAnswer; +TBuf<256> iRenamedLocalFileName; +TBool iTempStore; +TBool iFirstRun; //first run of ServerXFerNotification +}; +#endif