]> icculus.org git repositories - taylor/freespace2.git/blob - include/cftp.h
Initial revision
[taylor/freespace2.git] / include / cftp.h
1  /*
2  * $Logfile: /Freespace2/code/Inetfile/CFtp.h $
3  * $Revision$
4  * $Date$
5  * $Author$
6  *
7  * FTP Client class (get only)
8  *
9  * $Log$
10  * Revision 1.1  2002/05/03 03:28:12  root
11  * Initial revision
12  *
13  * 
14  * 2     4/20/99 6:39p Dave
15  * Almost done with artillery targeting. Added support for downloading
16  * images on the PXO screen.
17  * 
18  * 1     4/20/99 4:37p Dave
19  * 
20  * Initial version
21  *
22  * $NoKeywords: $
23  */
24 #ifndef _CFTP_HEADER_
25 #define _CFTP_HEADER_
26
27 #define FTP_STATE_INTERNAL_ERROR                0
28 #define FTP_STATE_SOCKET_ERROR          1
29 #define FTP_STATE_URL_PARSING_ERROR     2
30 #define FTP_STATE_CONNECTING                    3
31 #define FTP_STATE_HOST_NOT_FOUND                4
32 #define FTP_STATE_CANT_CONNECT          5
33 #define FTP_STATE_LOGGING_IN                    6
34 #define FTP_STATE_LOGIN_ERROR                   7
35 #define FTP_STATE_LOGGED_IN                     8
36 #define FTP_STATE_DIRECTORY_INVALID     9
37 #define FTP_STATE_FILE_NOT_FOUND                10
38 #define FTP_STATE_RECEIVING                     11
39 #define FTP_STATE_FILE_RECEIVED         12
40 #define FTP_STATE_UNKNOWN_ERROR         13
41 #define FTP_STATE_RECV_FAILED                   14
42 #define FTP_STATE_CANT_WRITE_FILE       15
43 #define FTP_STATE_STARTUP                               16
44
45
46 extern void FTPObjThread( void * obj );
47
48 class CFtpGet
49 {
50
51 public:
52         CFtpGet(char *URL,char *localfile,char *Username = NULL,char *Password = NULL);
53         ~CFtpGet();
54         int GetStatus();
55         unsigned int GetBytesIn();
56         unsigned int GetTotalBytes();
57         void AbortGet();
58
59         void WorkerThread();
60
61 protected:
62         
63         int ConnectControlSocket();
64         int LoginHost();        
65         unsigned int SendFTPCommand(char *command);
66         unsigned int ReadFTPServerReply();
67         unsigned int GetFile();
68         unsigned int IssuePort();
69         unsigned int ReadDataChannel();
70         void FlushControlChannel();
71
72         unsigned int m_iBytesIn;
73         unsigned int m_iBytesTotal;
74         unsigned int m_State;
75
76         bool m_Aborting;
77         bool m_Aborted;
78
79         char m_szUserName[100];
80         char m_szPassword[100];
81         char m_szHost[200];
82         char m_szDir[200];
83         char m_szFilename[100];
84         
85         char recv_buffer[1000];
86
87         SOCKET m_ListenSock;
88         SOCKET m_DataSock;
89         SOCKET m_ControlSock;
90
91         FILE *LOCALFILE;
92 };
93
94
95
96 #endif
97