Initial
This commit is contained in:
123
ftp/FTP.HPP
Normal file
123
ftp/FTP.HPP
Normal file
@@ -0,0 +1,123 @@
|
||||
#ifndef _FTP_FTPCLIENT_HPP_
|
||||
#define _FTP_FTPCLIENT_HPP_
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _SOCKET_SOCKET_HPP_
|
||||
#include <socket/socket.hpp>
|
||||
#endif
|
||||
#ifndef _SOCKET_INETSOCKETADDRESS_HPP_
|
||||
#include <socket/intsaddr.hpp>
|
||||
#endif
|
||||
#ifndef _FTP_FTPDATA_HPP_
|
||||
#include <ftp/ftpdata.hpp>
|
||||
#endif
|
||||
|
||||
class FTPClient : public INETSocketAddress
|
||||
{
|
||||
public:
|
||||
FTPClient(void);
|
||||
virtual ~FTPClient();
|
||||
WORD open(String hostName);
|
||||
WORD login(String userName,String password);
|
||||
WORD account(String accountInfo);
|
||||
WORD changeWorkingDirectory(String workingDirectory);
|
||||
WORD changeToParentDirectory(void);
|
||||
WORD structureMount(String systemFileGroupDesignator);
|
||||
WORD reinitialize(void);
|
||||
WORD logout(void);
|
||||
WORD port(FTPData &ftpData);
|
||||
WORD passive(void);
|
||||
WORD type(BYTE type,BYTE storage=0);
|
||||
WORD fileStructure(BYTE structure);
|
||||
WORD mode(BYTE transferMode);
|
||||
WORD retrieve(String pathFileName,DWORD &sizeData);
|
||||
WORD store(String pathFileName);
|
||||
WORD storeUnique(String pathFileName);
|
||||
WORD append(String pathFileName);
|
||||
WORD allocate(DWORD numBytes,DWORD maxRecord=0L);
|
||||
WORD restart(String serverMarker);
|
||||
WORD renameFrom(String oldPathFileName);
|
||||
WORD renameTo(String oldPathFileName);
|
||||
WORD abort(void);
|
||||
WORD remove(String pathFileName);
|
||||
WORD removeDirectory(String pathDirectoryName);
|
||||
WORD makeDirectory(String pathDirectoryName);
|
||||
WORD printWorkingDirectory(void);
|
||||
WORD list(String pathName=String());
|
||||
WORD nameList(String pathName=String(),WORD showResponse=TRUE);
|
||||
WORD siteParameters(void);
|
||||
WORD system(void);
|
||||
WORD status(String pathName=String());
|
||||
WORD help(String commandName=String());
|
||||
WORD noop(void);
|
||||
WORD isConnected(void)const;
|
||||
WORD isLoggedIn(void)const;
|
||||
WORD receive(String &lineString);
|
||||
BYTE currentType(void)const;
|
||||
protected:
|
||||
virtual void message(const String &messageString);
|
||||
virtual void message(Block<String> &messageStrings);
|
||||
private:
|
||||
enum FTPCommands{User,Password,Account,ChangeWorkingDirectory,ChangeToParentDirectory,
|
||||
StructureMount,Reinitialize,Logout,DataPort,Passive,RepresentationType,FileStructure,
|
||||
TransferMode,Retrieve,Store,StoreUnique,Append,Allocate,Restart,RenameFrom,RenameTo,
|
||||
Abort,Delete,RemoveDirectory,MakeDirectory,PrintWorkingDirectory,List,NameList,SiteParameters,
|
||||
System,Status,Help,Noop};
|
||||
void createCommands(void);
|
||||
void isLoggedIn(WORD isLoggedIn);
|
||||
WORD getControlData(void);
|
||||
WORD putControlData(String stringData,WORD waitForResponse=TRUE);
|
||||
void receiveStrings(WORD displayStrings=TRUE);
|
||||
WORD receive(Block<String> &receiveStrings,Block<String> &responseStrings);
|
||||
WORD receive(Block<String> &responseStrings);
|
||||
void buildResponseStrings(void);
|
||||
WORD isInResponse(const String &responseString,Block<String> &responseStrings);
|
||||
|
||||
Socket mFTPControl;
|
||||
WSASystem mWSASystem;
|
||||
Block<String> mFTPCommands;
|
||||
Block<String> mAckConnectionResponseStrings;
|
||||
Block<String> mAckLoginResponseStrings;
|
||||
Block<String> mAckLogoutResponseStrings;
|
||||
Block<String> mAckPortResponseStrings;
|
||||
Block<String> mResponseStrings;
|
||||
WORD mIsLoggedIn;
|
||||
BYTE mCurrentType;
|
||||
};
|
||||
|
||||
inline
|
||||
WORD FTPClient::isConnected(void)const
|
||||
{
|
||||
return mFTPControl.isConnected();
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FTPClient::isLoggedIn(void)const
|
||||
{
|
||||
return mIsLoggedIn;
|
||||
}
|
||||
|
||||
inline
|
||||
void FTPClient::isLoggedIn(WORD isLoggedIn)
|
||||
{
|
||||
mIsLoggedIn=isLoggedIn;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FTPClient::receive(String &lineString)
|
||||
{
|
||||
if(!isConnected()||!isLoggedIn())return FALSE;
|
||||
return mFTPControl.receive(lineString);
|
||||
}
|
||||
|
||||
inline
|
||||
BYTE FTPClient::currentType(void)const
|
||||
{
|
||||
return mCurrentType;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user