epoc32/include/ftpprot.h
branchSymbian2
changeset 2 2fe1408b6811
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/ftpprot.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -0,0 +1,379 @@
     1.4 +/**
     1.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description:
    1.18 +* FTP Protocol header file
    1.19 +* Author:	Philippe Gabriel
    1.20 +* 
    1.21 +*
    1.22 +*/
    1.23 +
    1.24 +
    1.25 +
    1.26 +
    1.27 +
    1.28 +/**
    1.29 + @file ftprot.h
    1.30 + @internalComponent
    1.31 +*/
    1.32 +
    1.33 +#if !defined(__FTPPROT_H__)
    1.34 +#define __FTPPROT_H__
    1.35 +
    1.36 +#include <e32base.h>
    1.37 +#include <es_sock.h>
    1.38 +
    1.39 +/** FTPPROT.DLL major version number.
    1.40 +@internalComponent */
    1.41 +#define FTPPROTDLL_VERSION_MAJOR 0x01 // The very first release
    1.42 +/** FTPPROT.DLL minor version number. */
    1.43 +#define FTPPROTDLL_VERSION_MINOR 0x03
    1.44 +/** FTPPROT.DLL version number. */
    1.45 +#define FTPPROTDLL_VERSION_NUMBER (FTPPROTDLL_VERSION_MAJOR<<8)|FTPPROTDLL_VERSION_MINOR
    1.46 +
    1.47 +class MFtpProtocolNotifier
    1.48 +/** FTP engine callback interface.
    1.49 +*
    1.50 +* An FTP engine client implements this interface to receive status and results 
    1.51 +* from asynchronous FTP commands.
    1.52 +* @internalComponent */
    1.53 +	{
    1.54 +// Operation completion return codes.
    1.55 +	
    1.56 +public:
    1.57 +/** FTP engine/session operation completeness codes. */
    1.58 +	enum TOpComp 
    1.59 +	{
    1.60 +	/** Operation completed normally. */
    1.61 +	EOpComplete=0,
    1.62 +	/** Operation cancelled. */
    1.63 +	EOpCanceled,	// User canceled last operation
    1.64 +	/** Operation failed. */
    1.65 +	EOpFailed, 
    1.66 +	/** Sockets level error. */
    1.67 +	ESocketError, 
    1.68 +
    1.69 +	// Connection errors
    1.70 +	/** Connection error: Connection reset. */
    1.71 +	EOpConnectionReset,
    1.72 +	/** Connection error: Connection failed. */
    1.73 +	EOpConnectionFailed,	
    1.74 +	/** Connection error: Server not found. */
    1.75 +	EHostNotFound,
    1.76 +
    1.77 +	// Transfer error 
    1.78 +	/** Transfer error: Transfer was reset. */
    1.79 +	EXferReset,
    1.80 +	/** Transfer error: Transfer is not initialised. */	
    1.81 +	EXferNotInitialised,
    1.82 +
    1.83 +	//Transfer notification
    1.84 +	/** Transfer notification: Data packet was received. */
    1.85 +	EPacketReceived,
    1.86 +	/** Transfer notification: Data packet was sent. */	
    1.87 +	EPacketSent
    1.88 +	};
    1.89 +public:
    1.90 +	/** Destructor. */
    1.91 +	virtual ~MFtpProtocolNotifier(){};
    1.92 +
    1.93 +	/** Positive reply received from server.
    1.94 +	*
    1.95 +	* @param aStatus	Operation completion code */
    1.96 +	virtual void ServerPositiveAnswerNotification(const TOpComp aStatus)=0;
    1.97 +
    1.98 +
    1.99 +	/** Message sent by the FTP server.
   1.100 +	*
   1.101 +	* This returns the full server reply in plain text format.
   1.102 +	* 
   1.103 +	* @param aMessage	The message sent by the server */
   1.104 +	virtual void ServerMessage(const TDesC8& aMessage)=0;
   1.105 +
   1.106 +	/** Data transfer notification received from the server.
   1.107 +	*
   1.108 +	* @param aStatus	Operation completion code */
   1.109 +	virtual void ServerXFerNotification(const TOpComp aStatus)=0;
   1.110 +
   1.111 +	/** Negative reply received from server.
   1.112 +	* 
   1.113 +	* @param aStatus	Operation completion code */
   1.114 +	virtual void ServerNegativeAnswerNotification(const TOpComp aStatus)=0;
   1.115 +
   1.116 +	/** Error condition notification.
   1.117 +	* 
   1.118 +	* @param aStatus	Operation completion code */
   1.119 +	virtual void ErrorNotification(const TOpComp aStatus)=0;
   1.120 +	};
   1.121 +
   1.122 +
   1.123 +class CFtpProtocol : public CBase
   1.124 +/** Implements an FTP engine, and allows the client to access the individual FTP 
   1.125 +* commands as defined in RFC959.
   1.126 +* 
   1.127 +* Note that before commands that cause data to transit on the DTP channel (e.g. NLST, 
   1.128 +* LIST, RETR, STOR) a data buffer must be provided using SendBuffer()/RecvBuffer(). 
   1.129 +* Also, when the client is notified of a MoreData() event, it must re-issue RecvBuffer() 
   1.130 +* to get the rest of the data.
   1.131 +* @internalComponent
   1.132 +*/
   1.133 +	{
   1.134 +public:
   1.135 +
   1.136 +// Establish a connection:
   1.137 +	/** Connect to an FTP server, specifying an IP address.	
   1.138 +	* 
   1.139 +	* @param aNetAddr	FTP server's IP address */
   1.140 +	virtual void Connect(TSockAddr& aNetAddr)=0;	// IP address
   1.141 +
   1.142 +	/** Connect to an FTP server, specifying a DNS name.
   1.143 +	* 
   1.144 +	* @param aServerName	FTP server's DNS name */
   1.145 +	virtual void Connect(const THostName& aServerName)=0;  // URL name
   1.146 +
   1.147 +	/** Connect to an FTP server, specifying a DNS name and port number.
   1.148 +	* 
   1.149 +	* @param aServerName	FTP server's DNS name
   1.150 +	* @param aPort			FTP server's port */
   1.151 +	virtual void Connect(const THostName& aServerName, const TUint aPort)=0; // URL name + port
   1.152 +
   1.153 +// FTP commands, presented in the same order as RFC959:
   1.154 +	/** Issues the USER command.
   1.155 +	* 
   1.156 +	* @param aParam	Telnet string identifying the user */
   1.157 +	virtual void User(const TDesC8& aParam)=0;
   1.158 +
   1.159 +	/** Issues the PASS command.
   1.160 +	* 
   1.161 +	* @param aParam	Telnet string specifying the user's password */
   1.162 +	virtual void Pass(const TDesC8& aParam)=0;
   1.163 +
   1.164 +	/** Issues the ACCT command.
   1.165 +	* 
   1.166 +	* @param aParam	Telnet string identifying the user's account */
   1.167 +	virtual void Acct(const TDesC8& aParam)=0;
   1.168 +
   1.169 +	/** Issues the CWD command.
   1.170 +	* 
   1.171 +	* @param aParam	Directory or other system dependent file group designator */
   1.172 +	virtual void Cwd(const TDesC8& aParam)=0;
   1.173 +
   1.174 +	/** Issues the CDUP command. */
   1.175 +	virtual void Cdup(void)=0;
   1.176 +
   1.177 +	/** Issues the SMNT command.
   1.178 +	* 
   1.179 +	* @param aParam	Pathname specifying a directory or other system dependent file 
   1.180 +	* 				group designator */
   1.181 +	virtual void Smnt(const TDesC8& aParam)=0;
   1.182 +
   1.183 +	/** Issues the QUIT command. */
   1.184 +	virtual void Quit(void)=0;
   1.185 +
   1.186 +	/** Issues the REIN command. */
   1.187 +	virtual void Rein(void)=0;
   1.188 +
   1.189 +	/** Issues the PORT command, setting the Data Transfer Process port to a value 
   1.190 +	* allocated by the Sockets Server. */
   1.191 +	virtual void Port(void)=0;			// Sets the DTP port to one allocated by ESOCK
   1.192 +
   1.193 +	/** Issues the PORT command, specifying a port number.
   1.194 +	* 
   1.195 +	* @param aPort	Port number */
   1.196 +	virtual void Port(TUint aPort)=0;	// Sets the DTP port to a specific one
   1.197 +
   1.198 +	/** Issues the PASV command. */
   1.199 +	virtual void Pasv(void)=0;
   1.200 +
   1.201 +	/** Issues the TYPE command (single parameter).
   1.202 +	* 
   1.203 +	* @param aParam	First representation type parameter */
   1.204 +	virtual void Type(const TDesC8& aParam)=0;
   1.205 +
   1.206 +	/** Issues the TYPE command (two parameters).
   1.207 +	* 
   1.208 +	* @param aParam1	First representation type parameter
   1.209 +	* @param aParam2	Second representation type parameter */
   1.210 +	virtual void Type(const TDesC8& aParam1, const TDesC8& aParam2)=0;
   1.211 +
   1.212 +	/** Issues the STRU command.
   1.213 +	* 
   1.214 +	* @param aParam	Telnet character code specifying the file structure */
   1.215 +	virtual void Stru(const TDesC8& aParam)=0;
   1.216 +
   1.217 +	/** Issues the MODE command.
   1.218 +	* 
   1.219 +	* @param aParam	Telnet character code specifying the data transfer mode */
   1.220 +	virtual void Mode(const TDesC8& aParam)=0;
   1.221 +
   1.222 +	/** Issues the RETR command.
   1.223 +	* 
   1.224 +	* @param aFileName	File name */
   1.225 +	virtual void Retr(const TDesC8& aFileName)=0;
   1.226 +
   1.227 +	/** Issues the STOR command.
   1.228 +	* 
   1.229 +	* @param aFileName	File name */
   1.230 +	virtual void Stor(const TDesC8& aFileName)=0;
   1.231 +
   1.232 +	/** Issues the STOU command. */
   1.233 +	virtual void Stou(void)=0;
   1.234 +
   1.235 +	/** Issues the APPE command.
   1.236 +	* 
   1.237 +	* @param aFileName	File name */
   1.238 +	virtual void Appe(const TDesC8& aFileName)=0;
   1.239 +
   1.240 +	/** Issues the ALLO command (single parameter).
   1.241 +	* 
   1.242 +	* @param aParam	Number of bytes (using the logical byte size) of storage to 
   1.243 +	* 				be reserved for the file */
   1.244 +	virtual void Allo(const TDesC8& aParam)=0;
   1.245 +
   1.246 +	/** Issues the ALLO command (two parameters).
   1.247 +	* 
   1.248 +	* @param aParam1	Number of bytes (using the logical byte size) of storage to 
   1.249 +	* 					be reserved for the file
   1.250 +	* @param aParam2	Maximum record or page size (in logical bytes) */
   1.251 +	virtual void Allo(const TDesC8& aParam1, const TDesC8& aParam2)=0;
   1.252 +
   1.253 +	/** Issues the REST command.
   1.254 +	* 
   1.255 +	* @param aParam	The server marker at which file transfer is to be restarted */
   1.256 +	virtual void Rest(const TDesC8& aParam)=0;
   1.257 +
   1.258 +	/** Issues the RNFR command.
   1.259 +	* 
   1.260 +	* @param aFileName	File name */
   1.261 +	virtual void Rnfr(const TDesC8& aFileName)=0;
   1.262 +
   1.263 +	/** Issues the RNTO command.
   1.264 +	* 
   1.265 +	* @param aFileName	File name */
   1.266 +	virtual void Rnto(const TDesC8& aFileName)=0;
   1.267 +
   1.268 +	/** Issues the ABOR command. */
   1.269 +	virtual void Abor(void)=0;
   1.270 +
   1.271 +	/** Issues the DELE command.
   1.272 +	* 
   1.273 +	* @param aFileName	File name */
   1.274 +	virtual void Dele(const TDesC8& aFileName)=0;
   1.275 +
   1.276 +	/** Issues the RMD command.
   1.277 +	* 
   1.278 +	* @param aParam	Directory name */
   1.279 +	virtual void Rmd(const TDesC8& aParam)=0;
   1.280 +
   1.281 +	/** Issues the MKD command.
   1.282 +	* 
   1.283 +	* @param aParam	Directory name */
   1.284 +	virtual void Mkd(const TDesC8& aParam)=0;
   1.285 +
   1.286 +	/** Issues the PWD command. */
   1.287 +	virtual void Pwd(void)=0;
   1.288 +
   1.289 +	/** Issues the LIST command, giving a null argument. */
   1.290 +	virtual void List(void)=0;
   1.291 +
   1.292 +	/** Issues the LIST command, specifying a file/directory name.
   1.293 +	* 
   1.294 +	* @param aParam	File/directory name */
   1.295 +	virtual void List(const TDesC8& aParam)=0;
   1.296 +
   1.297 +	/** Issues the NLST command, giving a null argument. */
   1.298 +	virtual void Nlst(void)=0;
   1.299 +
   1.300 +	/** Issues the NLST command, specifying a directory name.
   1.301 +	* 
   1.302 +	* @param aParam	Directory name */
   1.303 +	virtual void Nlst(const TDesC8& aParam)=0;
   1.304 +
   1.305 +	/** Issues the SITE command.
   1.306 +	* 
   1.307 +	* @param aParam	SITE command argument */
   1.308 +	virtual void Site(const TDesC8& aParam)=0;
   1.309 +
   1.310 +	/** Issues the SYST command. */
   1.311 +	virtual void Syst(void)=0;
   1.312 +
   1.313 +	/** Issues the STAT command, specifying an argument.
   1.314 +	* 
   1.315 +	* @param aParam	STAT command argument */
   1.316 +	virtual void Stat(const TDesC8& aParam)=0;
   1.317 +
   1.318 +	/** Issues the STAT command (no argument). */
   1.319 +	virtual void Stat(void)=0;
   1.320 +
   1.321 +	/** Issues the HELP command.
   1.322 +	* 
   1.323 +	* @param aParam	HELP command argument */
   1.324 +	virtual void Help(const TDesC8& aParam)=0;
   1.325 +
   1.326 +	/** Issues the HELP command (no argument). */
   1.327 +	virtual void Help(void)=0;
   1.328 +
   1.329 +	/** Issues the NOOP command. */
   1.330 +	virtual void Noop(void)=0;
   1.331 +
   1.332 +// Buffer management for transfer
   1.333 +	// Following functions pass a pointer to a buffer
   1.334 +	// to transfer data to/from the Dtp channel
   1.335 +	// Before an operation which cause data to transit on the 
   1.336 +	// DTP channel to occur (Nlst, List, Retr, Stor)
   1.337 +	// a Buffer must be provided with the following api
   1.338 +	// Also when the client is notified of a MoreData event
   1.339 +	// It must reissue the following operation to get the rest of
   1.340 +	// the data
   1.341 +	/** Specifies a buffer to transfer data to the DTP channel.	
   1.342 +	* 
   1.343 +	* @param aBuffer	Send receive */
   1.344 +	virtual void SendBuffer(TDes8* aBuffer)=0;
   1.345 +
   1.346 +	/** Specifies a buffer to receive data from the DTP channel.
   1.347 +	* 
   1.348 +	* @param aBuffer	Receive buffer */
   1.349 +	virtual void RecvBuffer(TDes8* aBuffer)=0;
   1.350 +
   1.351 +	/** Finishes the transfer initiated by a STOR command. */
   1.352 +	virtual void SendEOF(void)=0; //Finishes the transfer initiated by a stor command
   1.353 +
   1.354 +	/** Cancels current operation. */
   1.355 +	virtual void UserCancel(void)=0;
   1.356 +
   1.357 +// Copies the 3 digits answer received from the FTP server
   1.358 +	/** Gets the 3 digits answer received from the FTP server.
   1.359 +	* 
   1.360 +	* @param aServerAnswer	3 digit answer */
   1.361 +	virtual void FTPServerAnswer(TDes& aServerAnswer)=0;
   1.362 +
   1.363 +	/**
   1.364 +	Returns 32-bit, with MAJOR_VERSION in the highest byte
   1.365 +	MINOR_VERSION in the next byte
   1.366 +	i.e. MAJOR 2, MINOR 0x34, BUILD 0x278 would be "ver 2.52
   1.367 +	*/
   1.368 +	IMPORT_C static TUint32 GetVersion(void);
   1.369 +
   1.370 +	/** Allocates and constructs a new FTP engine object.
   1.371 +	* 
   1.372 +	* @return	New FTP engine object
   1.373 +	*/
   1.374 +	// @param aNotifier Client callback interface. 
   1.375 +	// The FTP engine calls this interface to pass 
   1.376 +	//server responses and status messages to the client.
   1.377 +	IMPORT_C static CFtpProtocol *NewL(MFtpProtocolNotifier*);
   1.378 +
   1.379 +	/**Destructor.*/
   1.380 +	virtual ~CFtpProtocol();
   1.381 +	};
   1.382 +#endif //__FTPPROT_H__