epoc32/include/ftpprot.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 /**
     2 * Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * 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
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:
    15 * FTP Protocol header file
    16 * Author:	Philippe Gabriel
    17 * 
    18 *
    19 */
    20 
    21 
    22 
    23 
    24 
    25 /**
    26  @file ftprot.h
    27  @internalComponent
    28 */
    29 
    30 #if !defined(__FTPPROT_H__)
    31 #define __FTPPROT_H__
    32 
    33 #include <e32base.h>
    34 #include <es_sock.h>
    35 
    36 /** FTPPROT.DLL major version number.
    37 @internalComponent */
    38 #define FTPPROTDLL_VERSION_MAJOR 0x01 // The very first release
    39 /** FTPPROT.DLL minor version number. */
    40 #define FTPPROTDLL_VERSION_MINOR 0x03
    41 /** FTPPROT.DLL version number. */
    42 #define FTPPROTDLL_VERSION_NUMBER (FTPPROTDLL_VERSION_MAJOR<<8)|FTPPROTDLL_VERSION_MINOR
    43 
    44 class MFtpProtocolNotifier
    45 /** FTP engine callback interface.
    46 *
    47 * An FTP engine client implements this interface to receive status and results 
    48 * from asynchronous FTP commands.
    49 * @internalComponent */
    50 	{
    51 // Operation completion return codes.
    52 	
    53 public:
    54 /** FTP engine/session operation completeness codes. */
    55 	enum TOpComp 
    56 	{
    57 	/** Operation completed normally. */
    58 	EOpComplete=0,
    59 	/** Operation cancelled. */
    60 	EOpCanceled,	// User canceled last operation
    61 	/** Operation failed. */
    62 	EOpFailed, 
    63 	/** Sockets level error. */
    64 	ESocketError, 
    65 
    66 	// Connection errors
    67 	/** Connection error: Connection reset. */
    68 	EOpConnectionReset,
    69 	/** Connection error: Connection failed. */
    70 	EOpConnectionFailed,	
    71 	/** Connection error: Server not found. */
    72 	EHostNotFound,
    73 
    74 	// Transfer error 
    75 	/** Transfer error: Transfer was reset. */
    76 	EXferReset,
    77 	/** Transfer error: Transfer is not initialised. */	
    78 	EXferNotInitialised,
    79 
    80 	//Transfer notification
    81 	/** Transfer notification: Data packet was received. */
    82 	EPacketReceived,
    83 	/** Transfer notification: Data packet was sent. */	
    84 	EPacketSent
    85 	};
    86 public:
    87 	/** Destructor. */
    88 	virtual ~MFtpProtocolNotifier(){};
    89 
    90 	/** Positive reply received from server.
    91 	*
    92 	* @param aStatus	Operation completion code */
    93 	virtual void ServerPositiveAnswerNotification(const TOpComp aStatus)=0;
    94 
    95 
    96 	/** Message sent by the FTP server.
    97 	*
    98 	* This returns the full server reply in plain text format.
    99 	* 
   100 	* @param aMessage	The message sent by the server */
   101 	virtual void ServerMessage(const TDesC8& aMessage)=0;
   102 
   103 	/** Data transfer notification received from the server.
   104 	*
   105 	* @param aStatus	Operation completion code */
   106 	virtual void ServerXFerNotification(const TOpComp aStatus)=0;
   107 
   108 	/** Negative reply received from server.
   109 	* 
   110 	* @param aStatus	Operation completion code */
   111 	virtual void ServerNegativeAnswerNotification(const TOpComp aStatus)=0;
   112 
   113 	/** Error condition notification.
   114 	* 
   115 	* @param aStatus	Operation completion code */
   116 	virtual void ErrorNotification(const TOpComp aStatus)=0;
   117 	};
   118 
   119 
   120 class CFtpProtocol : public CBase
   121 /** Implements an FTP engine, and allows the client to access the individual FTP 
   122 * commands as defined in RFC959.
   123 * 
   124 * Note that before commands that cause data to transit on the DTP channel (e.g. NLST, 
   125 * LIST, RETR, STOR) a data buffer must be provided using SendBuffer()/RecvBuffer(). 
   126 * Also, when the client is notified of a MoreData() event, it must re-issue RecvBuffer() 
   127 * to get the rest of the data.
   128 * @internalComponent
   129 */
   130 	{
   131 public:
   132 
   133 // Establish a connection:
   134 	/** Connect to an FTP server, specifying an IP address.	
   135 	* 
   136 	* @param aNetAddr	FTP server's IP address */
   137 	virtual void Connect(TSockAddr& aNetAddr)=0;	// IP address
   138 
   139 	/** Connect to an FTP server, specifying a DNS name.
   140 	* 
   141 	* @param aServerName	FTP server's DNS name */
   142 	virtual void Connect(const THostName& aServerName)=0;  // URL name
   143 
   144 	/** Connect to an FTP server, specifying a DNS name and port number.
   145 	* 
   146 	* @param aServerName	FTP server's DNS name
   147 	* @param aPort			FTP server's port */
   148 	virtual void Connect(const THostName& aServerName, const TUint aPort)=0; // URL name + port
   149 
   150 // FTP commands, presented in the same order as RFC959:
   151 	/** Issues the USER command.
   152 	* 
   153 	* @param aParam	Telnet string identifying the user */
   154 	virtual void User(const TDesC8& aParam)=0;
   155 
   156 	/** Issues the PASS command.
   157 	* 
   158 	* @param aParam	Telnet string specifying the user's password */
   159 	virtual void Pass(const TDesC8& aParam)=0;
   160 
   161 	/** Issues the ACCT command.
   162 	* 
   163 	* @param aParam	Telnet string identifying the user's account */
   164 	virtual void Acct(const TDesC8& aParam)=0;
   165 
   166 	/** Issues the CWD command.
   167 	* 
   168 	* @param aParam	Directory or other system dependent file group designator */
   169 	virtual void Cwd(const TDesC8& aParam)=0;
   170 
   171 	/** Issues the CDUP command. */
   172 	virtual void Cdup(void)=0;
   173 
   174 	/** Issues the SMNT command.
   175 	* 
   176 	* @param aParam	Pathname specifying a directory or other system dependent file 
   177 	* 				group designator */
   178 	virtual void Smnt(const TDesC8& aParam)=0;
   179 
   180 	/** Issues the QUIT command. */
   181 	virtual void Quit(void)=0;
   182 
   183 	/** Issues the REIN command. */
   184 	virtual void Rein(void)=0;
   185 
   186 	/** Issues the PORT command, setting the Data Transfer Process port to a value 
   187 	* allocated by the Sockets Server. */
   188 	virtual void Port(void)=0;			// Sets the DTP port to one allocated by ESOCK
   189 
   190 	/** Issues the PORT command, specifying a port number.
   191 	* 
   192 	* @param aPort	Port number */
   193 	virtual void Port(TUint aPort)=0;	// Sets the DTP port to a specific one
   194 
   195 	/** Issues the PASV command. */
   196 	virtual void Pasv(void)=0;
   197 
   198 	/** Issues the TYPE command (single parameter).
   199 	* 
   200 	* @param aParam	First representation type parameter */
   201 	virtual void Type(const TDesC8& aParam)=0;
   202 
   203 	/** Issues the TYPE command (two parameters).
   204 	* 
   205 	* @param aParam1	First representation type parameter
   206 	* @param aParam2	Second representation type parameter */
   207 	virtual void Type(const TDesC8& aParam1, const TDesC8& aParam2)=0;
   208 
   209 	/** Issues the STRU command.
   210 	* 
   211 	* @param aParam	Telnet character code specifying the file structure */
   212 	virtual void Stru(const TDesC8& aParam)=0;
   213 
   214 	/** Issues the MODE command.
   215 	* 
   216 	* @param aParam	Telnet character code specifying the data transfer mode */
   217 	virtual void Mode(const TDesC8& aParam)=0;
   218 
   219 	/** Issues the RETR command.
   220 	* 
   221 	* @param aFileName	File name */
   222 	virtual void Retr(const TDesC8& aFileName)=0;
   223 
   224 	/** Issues the STOR command.
   225 	* 
   226 	* @param aFileName	File name */
   227 	virtual void Stor(const TDesC8& aFileName)=0;
   228 
   229 	/** Issues the STOU command. */
   230 	virtual void Stou(void)=0;
   231 
   232 	/** Issues the APPE command.
   233 	* 
   234 	* @param aFileName	File name */
   235 	virtual void Appe(const TDesC8& aFileName)=0;
   236 
   237 	/** Issues the ALLO command (single parameter).
   238 	* 
   239 	* @param aParam	Number of bytes (using the logical byte size) of storage to 
   240 	* 				be reserved for the file */
   241 	virtual void Allo(const TDesC8& aParam)=0;
   242 
   243 	/** Issues the ALLO command (two parameters).
   244 	* 
   245 	* @param aParam1	Number of bytes (using the logical byte size) of storage to 
   246 	* 					be reserved for the file
   247 	* @param aParam2	Maximum record or page size (in logical bytes) */
   248 	virtual void Allo(const TDesC8& aParam1, const TDesC8& aParam2)=0;
   249 
   250 	/** Issues the REST command.
   251 	* 
   252 	* @param aParam	The server marker at which file transfer is to be restarted */
   253 	virtual void Rest(const TDesC8& aParam)=0;
   254 
   255 	/** Issues the RNFR command.
   256 	* 
   257 	* @param aFileName	File name */
   258 	virtual void Rnfr(const TDesC8& aFileName)=0;
   259 
   260 	/** Issues the RNTO command.
   261 	* 
   262 	* @param aFileName	File name */
   263 	virtual void Rnto(const TDesC8& aFileName)=0;
   264 
   265 	/** Issues the ABOR command. */
   266 	virtual void Abor(void)=0;
   267 
   268 	/** Issues the DELE command.
   269 	* 
   270 	* @param aFileName	File name */
   271 	virtual void Dele(const TDesC8& aFileName)=0;
   272 
   273 	/** Issues the RMD command.
   274 	* 
   275 	* @param aParam	Directory name */
   276 	virtual void Rmd(const TDesC8& aParam)=0;
   277 
   278 	/** Issues the MKD command.
   279 	* 
   280 	* @param aParam	Directory name */
   281 	virtual void Mkd(const TDesC8& aParam)=0;
   282 
   283 	/** Issues the PWD command. */
   284 	virtual void Pwd(void)=0;
   285 
   286 	/** Issues the LIST command, giving a null argument. */
   287 	virtual void List(void)=0;
   288 
   289 	/** Issues the LIST command, specifying a file/directory name.
   290 	* 
   291 	* @param aParam	File/directory name */
   292 	virtual void List(const TDesC8& aParam)=0;
   293 
   294 	/** Issues the NLST command, giving a null argument. */
   295 	virtual void Nlst(void)=0;
   296 
   297 	/** Issues the NLST command, specifying a directory name.
   298 	* 
   299 	* @param aParam	Directory name */
   300 	virtual void Nlst(const TDesC8& aParam)=0;
   301 
   302 	/** Issues the SITE command.
   303 	* 
   304 	* @param aParam	SITE command argument */
   305 	virtual void Site(const TDesC8& aParam)=0;
   306 
   307 	/** Issues the SYST command. */
   308 	virtual void Syst(void)=0;
   309 
   310 	/** Issues the STAT command, specifying an argument.
   311 	* 
   312 	* @param aParam	STAT command argument */
   313 	virtual void Stat(const TDesC8& aParam)=0;
   314 
   315 	/** Issues the STAT command (no argument). */
   316 	virtual void Stat(void)=0;
   317 
   318 	/** Issues the HELP command.
   319 	* 
   320 	* @param aParam	HELP command argument */
   321 	virtual void Help(const TDesC8& aParam)=0;
   322 
   323 	/** Issues the HELP command (no argument). */
   324 	virtual void Help(void)=0;
   325 
   326 	/** Issues the NOOP command. */
   327 	virtual void Noop(void)=0;
   328 
   329 // Buffer management for transfer
   330 	// Following functions pass a pointer to a buffer
   331 	// to transfer data to/from the Dtp channel
   332 	// Before an operation which cause data to transit on the 
   333 	// DTP channel to occur (Nlst, List, Retr, Stor)
   334 	// a Buffer must be provided with the following api
   335 	// Also when the client is notified of a MoreData event
   336 	// It must reissue the following operation to get the rest of
   337 	// the data
   338 	/** Specifies a buffer to transfer data to the DTP channel.	
   339 	* 
   340 	* @param aBuffer	Send receive */
   341 	virtual void SendBuffer(TDes8* aBuffer)=0;
   342 
   343 	/** Specifies a buffer to receive data from the DTP channel.
   344 	* 
   345 	* @param aBuffer	Receive buffer */
   346 	virtual void RecvBuffer(TDes8* aBuffer)=0;
   347 
   348 	/** Finishes the transfer initiated by a STOR command. */
   349 	virtual void SendEOF(void)=0; //Finishes the transfer initiated by a stor command
   350 
   351 	/** Cancels current operation. */
   352 	virtual void UserCancel(void)=0;
   353 
   354 // Copies the 3 digits answer received from the FTP server
   355 	/** Gets the 3 digits answer received from the FTP server.
   356 	* 
   357 	* @param aServerAnswer	3 digit answer */
   358 	virtual void FTPServerAnswer(TDes& aServerAnswer)=0;
   359 
   360 	/**
   361 	Returns 32-bit, with MAJOR_VERSION in the highest byte
   362 	MINOR_VERSION in the next byte
   363 	i.e. MAJOR 2, MINOR 0x34, BUILD 0x278 would be "ver 2.52
   364 	*/
   365 	IMPORT_C static TUint32 GetVersion(void);
   366 
   367 	/** Allocates and constructs a new FTP engine object.
   368 	* 
   369 	* @return	New FTP engine object
   370 	*/
   371 	// @param aNotifier Client callback interface. 
   372 	// The FTP engine calls this interface to pass 
   373 	//server responses and status messages to the client.
   374 	IMPORT_C static CFtpProtocol *NewL(MFtpProtocolNotifier*);
   375 
   376 	/**Destructor.*/
   377 	virtual ~CFtpProtocol();
   378 	};
   379 #endif //__FTPPROT_H__