PTLib
Version 2.18.8
|
File Transfer Protocol client channel class. More...
#include <ftp.h>
Public Member Functions | |
PFTPClient () | |
Declare an FTP client socket. More... | |
~PFTPClient () | |
Delete and close the socket. More... | |
Overrides from class PSocket. | |
virtual PBoolean | Close () |
Close the socket, and if connected as a client, QUITs from server. More... | |
New functions for class | |
bool | OpenHost (const PString &host, WORD port=DefaultPort) |
Open host using TCP. More... | |
PBoolean | LogIn (const PString &username, const PString &password) |
Log in to the remote host for FTP. More... | |
PString | GetSystemType () |
Get the type of the remote FTP server system, eg Unix, WindowsNT etc. More... | |
PBoolean | SetType (RepresentationType type) |
Set the transfer type. More... | |
PBoolean | ChangeDirectory (const PString &dirPath) |
Change the current directory on the remote FTP host. More... | |
PString | GetCurrentDirectory () |
Get the current working directory on the remote FTP host. More... | |
PStringArray | GetDirectoryNames (NameTypes type=ShortNames, DataChannelType channel=Passive) |
Get a list of files from the current working directory on the remote FTP host. More... | |
PStringArray | GetDirectoryNames (const PString &path, NameTypes type=ShortNames, DataChannelType channel=Passive) |
Get a list of files from the current working directory on the remote FTP host. More... | |
PBoolean | CreateDirectory (const PString &path) |
Create a directory on the remote FTP host. More... | |
PString | GetFileStatus (const PString &path, DataChannelType channel=Passive) |
Get status information for the file path specified. More... | |
PTCPSocket * | GetFile (const PString &filename, DataChannelType channel=Passive) |
Begin retreiving a file from the remote FTP server. More... | |
PTCPSocket * | PutFile (const PString &filename, DataChannelType channel=Passive) |
Begin storing a file to the remote FTP server. More... | |
PTCPSocket * | GetURL (const PURL &url, RepresentationType type, DataChannelType channel=Passive) |
Begin retreiving a file from the remote FTP server. More... | |
![]() | |
PBoolean | SendPORT (const PIPSocket::Address &addr, WORD port) |
Send the PORT command for a transfer. More... | |
![]() | |
virtual PBoolean | Read (void *buf, PINDEX len) |
Low level read from the channel. More... | |
virtual int | ReadChar () |
Read a single 8 bit byte from the channel. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len) |
Low level write to the channel. More... | |
void | SetReadLineTimeout (const PTimeInterval &t) |
Set the maximum timeout between characters within a line. More... | |
virtual PBoolean | Connect (const PString &address, WORD port=0) |
Connect a socket to a remote host for the internet protocol. More... | |
virtual PBoolean | Connect (const PString &address, const PString &service) |
virtual PBoolean | Accept (PSocket &listener) |
Accept a server socket to a remote host for the internet protocol. More... | |
const PString & | GetDefaultService () const |
Get the default service name or port number to use in socket connections. More... | |
PIPSocket * | GetSocket () const |
Get the eventual socket for the series of indirect channels that may be between the current protocol and the actual I/O channel. More... | |
virtual PBoolean | WriteLine (const PString &line) |
Write a string to the socket channel followed by a CR/LF pair. More... | |
virtual PBoolean | ReadLine (PString &line, PBoolean allowContinuation=false) |
Read a string from the socket channel up to a CR/LF pair. More... | |
virtual void | UnRead (int ch) |
Put back the characters into the data stream so that the next Read() function call will return them first. More... | |
virtual void | UnRead (const PString &str) |
virtual void | UnRead (const void *buffer, PINDEX len) |
virtual bool | WriteCommand (PINDEX cmdNumber, const PString ¶m=PString::Empty()) |
Write a single line for a command. More... | |
virtual bool | WriteCommand (PINDEX cmdNumber, const PString ¶m, const PMIMEInfo &mime) |
virtual PBoolean | ReadCommand (PINDEX &num, PString &args) |
Read a single line of a command which ends with a CR/LF pair. More... | |
virtual PBoolean | ReadCommand (PINDEX &num, PString &args, PMIMEInfo &mime) |
virtual PBoolean | WriteResponse (unsigned numericCode, const PString &info) |
Write a response code followed by a text string describing the response to a command. More... | |
virtual PBoolean | WriteResponse (const PString &code, const PString &info) |
virtual PBoolean | ReadResponse () |
Read a response code followed by a text string describing the response to a command. More... | |
virtual PBoolean | ReadResponse (int &code, PString &info) |
virtual PBoolean | ReadResponse (int &code, PString &info, PMIMEInfo &mime) |
virtual int | ExecuteCommand (PINDEX cmdNumber) |
Write a command to the socket, using WriteCommand() and await a response using ReadResponse() . More... | |
virtual int | ExecuteCommand (PINDEX cmdNumber, const PString ¶m) |
int | GetLastResponseCode () const |
Return the code associated with the last response received by the socket. More... | |
PString | GetLastResponseInfo () const |
Return the last response received by the socket. More... | |
![]() | |
PIndirectChannel () | |
Create a new indirect channel without any channels to redirect to. More... | |
~PIndirectChannel () | |
Close the indirect channel, deleting read/write channels if desired. More... | |
Comparison | Compare (const PObject &obj) const |
Determine if the two objects refer to the same indirect channel. More... | |
virtual PString | GetName () const |
Get the name of the channel. More... | |
virtual P_INT_PTR | GetHandle () const |
Get the OS specific handle for the PSoundChannel. More... | |
virtual PBoolean | IsOpen () const |
Determine if the channel is currently open and read and write operations can be executed on it. More... | |
virtual PBoolean | Shutdown (ShutdownValue option) |
Close one or both of the data streams associated with a channel. More... | |
virtual bool | SetLocalEcho (bool localEcho) |
Set local echo mode. More... | |
virtual PChannel * | GetBaseReadChannel () const |
This function returns the eventual base channel for reading of a series of indirect channels provided by descendents of PIndirectChannel . More... | |
virtual PChannel * | GetBaseWriteChannel () const |
This function returns the eventual base channel for writing of a series of indirect channels provided by descendents of PIndirectChannel . More... | |
virtual bool | CloseBaseReadChannel () |
Close the base channel of channel indirection using PIndirectChannel. More... | |
virtual bool | CloseBaseWriteChannel () |
Close the base channel of channel indirection using PIndirectChannel. More... | |
virtual PString | GetErrorText (ErrorGroup group=NumErrorGroups) const |
Get error message description. More... | |
PBoolean | Open (PChannel &channel) |
Set the channel for both read and write operations. More... | |
PBoolean | Open (PChannel *channel, PBoolean autoDelete=true) |
Set the channel for both read and write operations. More... | |
PBoolean | Open (PChannel *readChannel, PChannel *writeChannel, PBoolean autoDeleteRead=true, PBoolean autoDeleteWrite=true) |
Set the channel for both read and write operations. More... | |
PChannel * | Detach (ShutdownValue option=ShutdownReadAndWrite) |
Detach without closing the read/write channel. More... | |
PChannel * | GetReadChannel () const |
Get the channel used for read operations. More... | |
bool | SetReadChannel (PChannel *channel, bool autoDelete=true, bool closeExisting=false) |
Set the channel for read operations. More... | |
PChannel * | GetWriteChannel () const |
Get the channel used for write operations. More... | |
PBoolean | SetWriteChannel (PChannel *channel, bool autoDelete=true, bool closeExisting=false) |
Set the channel for read operations. More... | |
template<class ChannelClass > | |
ChannelClass * | FindChannel () |
Locate a channel of a specific class in the indirect chain. More... | |
![]() | |
PBoolean | SetErrorValues (Errors errorCode, int osError, ErrorGroup group=LastGeneralError) |
Set error values to those specified. More... | |
virtual PINDEX | HashFunction () const |
Calculate a hash value for use in sets and dictionaries. More... | |
FILE * | FDOpen (const char *mode) |
Re-open the device using the stdio library. More... | |
void | SetReadTimeout (const PTimeInterval &time) |
Set the timeout for read operations. More... | |
PTimeInterval | GetReadTimeout () const |
Get the timeout for read operations. More... | |
virtual PINDEX | GetLastReadCount () const |
Get the number of bytes read by the last Read() call. More... | |
virtual PINDEX | SetLastReadCount (PINDEX count) |
PBoolean | ReadBlock (void *buf, PINDEX len) |
Read len bytes into the buffer from the channel. More... | |
PString | ReadString (PINDEX len) |
Read len character into a string from the channel. More... | |
void | SetWriteTimeout (const PTimeInterval &time) |
Set the timeout for write operations to complete. More... | |
PTimeInterval | GetWriteTimeout () const |
Get the timeout for write operations to complete. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len, const void *) |
Low level write to the channel with marker. More... | |
virtual PINDEX | GetLastWriteCount () const |
Get the number of bytes written by the last Write() call. More... | |
virtual PINDEX | SetLastWriteCount (PINDEX count) |
PBoolean | WriteChar (int c) |
Write a single character to the channel. More... | |
PBoolean | WriteString (const PString &str) |
Write a string to the channel. More... | |
~PChannel () | |
Close down the channel. More... | |
Errors | GetErrorCode (ErrorGroup group=NumErrorGroups) const |
Get normalised error code. More... | |
int | GetErrorNumber (ErrorGroup group=NumErrorGroups) const |
Get OS errro code. More... | |
virtual bool | ReadAsync (AsyncContext &context) |
Begin an asynchronous read from channel. More... | |
virtual void | OnReadComplete (AsyncContext &context) |
User callback function for when a ReadAsync() call has completed or timed out. More... | |
virtual bool | WriteAsync (AsyncContext &context) |
Begin an asynchronous write from channel. More... | |
virtual void | OnWriteComplete (AsyncContext &context) |
User callback function for when a WriteAsync() call has completed or timed out. More... | |
virtual bool | FlowControl (const void *flowData) |
Flow Control information Pass data to the channel for flowControl determination. More... | |
PBoolean | SetBufferSize (PINDEX newSize) |
Set the iostream buffer size for reads and writes. More... | |
PBoolean | SendCommandString (const PString &command) |
Send a command meta-string. More... | |
void | AbortCommandString () |
Abort a command string that is in progress. More... | |
![]() | |
__inline unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
__inline void | SetTraceContextIdentifier (unsigned id) |
__inline void | SetTraceContextIdentifier (const PObject &obj) |
__inline void | SetTraceContextIdentifier (const PObject *obj) |
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
virtual | ~PObject () |
__inline const char * | GetClass () const |
__inline bool | IsClass (const char *name) const |
__inline const PObject * | PTraceObjectInstance () const |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
template<class CLS > | |
CLS * | CloneAs () const |
As for Clone() but converts to specified type. More... | |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Protected Member Functions | |
virtual PBoolean | OnOpen () |
Call back to verify open succeeded in an PInternetProtocol class. More... | |
PTCPSocket * | NormalClientTransfer (Commands cmd, const PString &args) |
PTCPSocket * | PassiveClientTransfer (Commands cmd, const PString &args) |
![]() | |
PFTP () | |
Construct an ineternal File Transfer Protocol channel. More... | |
![]() | |
PInternetProtocol (const char *defaultServiceName, PINDEX cmdCount, char const *const *cmdNames) | |
virtual PINDEX | ParseResponse (const PString &line) |
Parse a response line string into a response code and any extra info on the line. More... | |
bool | SetLastResponse (int code, const PString &info, ErrorGroup group=LastGeneralError) |
![]() | |
PDECLARE_READ_WRITE_MUTEX (channelPointerMutex) | |
Race condition prevention on closing channel. More... | |
![]() | |
PChannel (const PChannel &) | |
PChannel & | operator= (const PChannel &) |
virtual PBoolean | ConvertOSError (P_INT_PTR libcReturnValue, ErrorGroup group=LastGeneralError) |
Convert an operating system error into platform independent error. More... | |
int | ReadCharWithTimeout (PTimeInterval &timeout) |
Read a character with specified timeout. More... | |
PBoolean | ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start) |
bool | CheckNotOpen () |
virtual int | os_errno () const |
PBoolean | PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout) |
P_INT_PTR | GetOSHandleAsInt () const |
int | PXClose () |
PDECLARE_MUTEX (px_threadMutex) | |
PDECLARE_MUTEX (px_writeMutex) | |
PChannel () | |
Create the channel. More... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
Additional Inherited Members | |
![]() | |
enum | Commands { USER, PASS, ACCT, CWD, CDUP, SMNT, QUIT, REIN, PORT, PASV, TYPE, STRU, MODE, RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLST, SITE, SYST, STATcmd, HELP, NOOP, NumCommands } |
FTP commands. More... | |
enum | RepresentationType { ASCII, EBCDIC, Image } |
Types for file transfer. More... | |
enum | DataChannelType { NormalPort, Passive } |
File transfer mode on data channel. More... | |
enum | NameTypes { ShortNames, DetailedNames } |
Listing types. More... | |
enum | { DefaultPort = 21 } |
![]() | |
enum | PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock } |
enum | Errors { NoError, NotFound, FileExists, DiskFull, AccessDenied, DeviceInUse, BadParameter, NoMemory, NotOpen, Timeout, Interrupted, BufferTooSmall, Miscellaneous, ProtocolFailure, Unavailable, NumNormalisedErrors } |
Normalised error codes. More... | |
enum | ErrorGroup { LastReadError, LastWriteError, LastGeneralError, NumErrorGroups } |
Error groups. More... | |
typedef PNotifierTemplate < PChannel::AsyncContext & > | AsyncNotifier |
enum | ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 } |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
![]() | |
static PString | GetErrorText (Errors lastError, int osError=0) |
Get error message description. More... | |
![]() | |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
static __inline const char * | Class () |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
template<typename T > | |
static Comparison | Compare2 (T v1, T v2) |
Compare two types, returning Comparison type. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
![]() | |
enum | StuffState { DontStuff, StuffIdle, StuffCR, StuffCRLF, StuffCRLFdot, StuffCRLFdotCR } |
File Transfer Protocol client channel class.
PFTPClient::PFTPClient | ( | ) |
Declare an FTP client socket.
PFTPClient::~PFTPClient | ( | ) |
Delete and close the socket.
Change the current directory on the remote FTP host.
dirPath | New directory |
|
virtual |
Close the socket, and if connected as a client, QUITs from server.
Reimplemented from PIndirectChannel.
Create a directory on the remote FTP host.
path | Name of the directory to create. |
PString PFTPClient::GetCurrentDirectory | ( | ) |
Get the current working directory on the remote FTP host.
PStringArray PFTPClient::GetDirectoryNames | ( | NameTypes | type = ShortNames , |
DataChannelType | channel = Passive |
||
) |
Get a list of files from the current working directory on the remote FTP host.
type | Detail level on a directory entry. |
channel | Data channel type. |
PStringArray PFTPClient::GetDirectoryNames | ( | const PString & | path, |
NameTypes | type = ShortNames , |
||
DataChannelType | channel = Passive |
||
) |
Get a list of files from the current working directory on the remote FTP host.
path | Name to get details for. |
type | Detail level on a directory entry. |
channel | Data channel type. |
PTCPSocket* PFTPClient::GetFile | ( | const PString & | filename, |
DataChannelType | channel = Passive |
||
) |
Begin retreiving a file from the remote FTP server.
The second parameter indicates that the transfer is on a normal or passive data channel. In short, a normal transfer the server connects to the client and in passive mode the client connects to the server.
filename | Name of file to get |
channel | Data channel type. |
PString PFTPClient::GetFileStatus | ( | const PString & | path, |
DataChannelType | channel = Passive |
||
) |
Get status information for the file path specified.
path | Path to get status for. |
channel | Data channel type. |
PString PFTPClient::GetSystemType | ( | ) |
Get the type of the remote FTP server system, eg Unix, WindowsNT etc.
PTCPSocket* PFTPClient::GetURL | ( | const PURL & | url, |
RepresentationType | type, | ||
DataChannelType | channel = Passive |
||
) |
Begin retreiving a file from the remote FTP server.
The second parameter indicates that the transfer is on a normal or passive data channel. In short, a normal transfer the server connects to the client and in passive mode the client connects to the server.
url | URL of file to get |
type | Type of transfer (text/binary) |
channel | Data channel type. |
Log in to the remote host for FTP.
username | User name for FTP log in. |
password | Password for the specified user name. |
|
protected |
|
protectedvirtual |
Call back to verify open succeeded in an PInternetProtocol class.
Reimplemented from PIndirectChannel.
bool PFTPClient::OpenHost | ( | const PString & | host, |
WORD | port = DefaultPort |
||
) |
Open host using TCP.
|
protected |
PTCPSocket* PFTPClient::PutFile | ( | const PString & | filename, |
DataChannelType | channel = Passive |
||
) |
Begin storing a file to the remote FTP server.
The second parameter indicates that the transfer is on a normal or passive data channel. In short, a normal transfer the server connects to the client and in passive mode the client connects to the server.
filename | Name of file to get |
channel | Data channel type. |
PBoolean PFTPClient::SetType | ( | RepresentationType | type | ) |
Set the transfer type.
type | RepresentationTypeof file to transfer |
|
protected |
Port number on remote system.