OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // source code is governed by a BSD-style license that can be found in the | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_FTP_FTP_NETWORK_TRANSACTION_H_ | 5 #ifndef NET_FTP_FTP_NETWORK_TRANSACTION_H_ |
6 #define NET_FTP_FTP_NETWORK_TRANSACTION_H_ | 6 #define NET_FTP_FTP_NETWORK_TRANSACTION_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <queue> | 9 #include <queue> |
10 #include <utility> | 10 #include <utility> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/ref_counted.h" | 13 #include "base/ref_counted.h" |
(...skipping 29 matching lines...) Expand all Loading... |
43 virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback); | 43 virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback); |
44 virtual const FtpResponseInfo* GetResponseInfo() const; | 44 virtual const FtpResponseInfo* GetResponseInfo() const; |
45 virtual LoadState GetLoadState() const; | 45 virtual LoadState GetLoadState() const; |
46 virtual uint64 GetUploadProgress() const; | 46 virtual uint64 GetUploadProgress() const; |
47 | 47 |
48 private: | 48 private: |
49 enum Command { | 49 enum Command { |
50 COMMAND_NONE, | 50 COMMAND_NONE, |
51 COMMAND_USER, | 51 COMMAND_USER, |
52 COMMAND_PASS, | 52 COMMAND_PASS, |
53 COMMAND_ACCT, | |
54 COMMAND_SYST, | 53 COMMAND_SYST, |
55 COMMAND_TYPE, | 54 COMMAND_TYPE, |
56 COMMAND_EPSV, | 55 COMMAND_EPSV, |
57 COMMAND_PASV, | 56 COMMAND_PASV, |
58 COMMAND_PWD, | 57 COMMAND_PWD, |
59 COMMAND_SIZE, | 58 COMMAND_SIZE, |
60 COMMAND_RETR, | 59 COMMAND_RETR, |
61 COMMAND_CWD, | 60 COMMAND_CWD, |
62 COMMAND_MLSD, | 61 COMMAND_MLSD, |
63 COMMAND_LIST, | 62 COMMAND_LIST, |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 // See if the request URL contains a typecode and make us respect it. | 134 // See if the request URL contains a typecode and make us respect it. |
136 void DetectTypecode(); | 135 void DetectTypecode(); |
137 | 136 |
138 // Runs the state transition loop. | 137 // Runs the state transition loop. |
139 int DoLoop(int result); | 138 int DoLoop(int result); |
140 | 139 |
141 // Each of these methods corresponds to a State value. Those with an input | 140 // Each of these methods corresponds to a State value. Those with an input |
142 // argument receive the result from the previous state. If a method returns | 141 // argument receive the result from the previous state. If a method returns |
143 // ERR_IO_PENDING, then the result from OnIOComplete will be passed to the | 142 // ERR_IO_PENDING, then the result from OnIOComplete will be passed to the |
144 // next state method as the result arg. | 143 // next state method as the result arg. |
145 int DoCtrlInit(); | |
146 int DoCtrlInitComplete(int result); | |
147 int DoCtrlResolveHost(); | 144 int DoCtrlResolveHost(); |
148 int DoCtrlResolveHostComplete(int result); | 145 int DoCtrlResolveHostComplete(int result); |
149 int DoCtrlConnect(); | 146 int DoCtrlConnect(); |
150 int DoCtrlConnectComplete(int result); | 147 int DoCtrlConnectComplete(int result); |
151 int DoCtrlRead(); | 148 int DoCtrlRead(); |
152 int DoCtrlReadComplete(int result); | 149 int DoCtrlReadComplete(int result); |
153 int DoCtrlWrite(); | 150 int DoCtrlWrite(); |
154 int DoCtrlWriteComplete(int result); | 151 int DoCtrlWriteComplete(int result); |
155 int DoCtrlWriteUSER(); | 152 int DoCtrlWriteUSER(); |
156 int ProcessResponseUSER(const FtpCtrlResponse& response); | 153 int ProcessResponseUSER(const FtpCtrlResponse& response); |
157 int DoCtrlWritePASS(); | 154 int DoCtrlWritePASS(); |
158 int ProcessResponsePASS(const FtpCtrlResponse& response); | 155 int ProcessResponsePASS(const FtpCtrlResponse& response); |
159 int DoCtrlWriteACCT(); | |
160 int ProcessResponseACCT(const FtpCtrlResponse& response); | |
161 int DoCtrlWriteSYST(); | 156 int DoCtrlWriteSYST(); |
162 int ProcessResponseSYST(const FtpCtrlResponse& response); | 157 int ProcessResponseSYST(const FtpCtrlResponse& response); |
163 int DoCtrlWritePWD(); | 158 int DoCtrlWritePWD(); |
164 int ProcessResponsePWD(const FtpCtrlResponse& response); | 159 int ProcessResponsePWD(const FtpCtrlResponse& response); |
165 int DoCtrlWriteTYPE(); | 160 int DoCtrlWriteTYPE(); |
166 int ProcessResponseTYPE(const FtpCtrlResponse& response); | 161 int ProcessResponseTYPE(const FtpCtrlResponse& response); |
167 int DoCtrlWriteEPSV(); | 162 int DoCtrlWriteEPSV(); |
168 int ProcessResponseEPSV(const FtpCtrlResponse& response); | 163 int ProcessResponseEPSV(const FtpCtrlResponse& response); |
169 int DoCtrlWritePASV(); | 164 int DoCtrlWritePASV(); |
170 int ProcessResponsePASV(const FtpCtrlResponse& response); | 165 int ProcessResponsePASV(const FtpCtrlResponse& response); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 | 238 |
244 int data_connection_port_; | 239 int data_connection_port_; |
245 | 240 |
246 ClientSocketFactory* socket_factory_; | 241 ClientSocketFactory* socket_factory_; |
247 | 242 |
248 scoped_ptr<ClientSocket> ctrl_socket_; | 243 scoped_ptr<ClientSocket> ctrl_socket_; |
249 scoped_ptr<ClientSocket> data_socket_; | 244 scoped_ptr<ClientSocket> data_socket_; |
250 | 245 |
251 enum State { | 246 enum State { |
252 // Control connection states: | 247 // Control connection states: |
253 STATE_CTRL_INIT, | |
254 STATE_CTRL_INIT_COMPLETE, | |
255 STATE_CTRL_RESOLVE_HOST, | 248 STATE_CTRL_RESOLVE_HOST, |
256 STATE_CTRL_RESOLVE_HOST_COMPLETE, | 249 STATE_CTRL_RESOLVE_HOST_COMPLETE, |
257 STATE_CTRL_CONNECT, | 250 STATE_CTRL_CONNECT, |
258 STATE_CTRL_CONNECT_COMPLETE, | 251 STATE_CTRL_CONNECT_COMPLETE, |
259 STATE_CTRL_READ, | 252 STATE_CTRL_READ, |
260 STATE_CTRL_READ_COMPLETE, | 253 STATE_CTRL_READ_COMPLETE, |
261 STATE_CTRL_WRITE, | 254 STATE_CTRL_WRITE, |
262 STATE_CTRL_WRITE_COMPLETE, | 255 STATE_CTRL_WRITE_COMPLETE, |
263 STATE_CTRL_WRITE_USER, | 256 STATE_CTRL_WRITE_USER, |
264 STATE_CTRL_WRITE_PASS, | 257 STATE_CTRL_WRITE_PASS, |
265 STATE_CTRL_WRITE_ACCT, | |
266 STATE_CTRL_WRITE_SYST, | 258 STATE_CTRL_WRITE_SYST, |
267 STATE_CTRL_WRITE_TYPE, | 259 STATE_CTRL_WRITE_TYPE, |
268 STATE_CTRL_WRITE_EPSV, | 260 STATE_CTRL_WRITE_EPSV, |
269 STATE_CTRL_WRITE_PASV, | 261 STATE_CTRL_WRITE_PASV, |
270 STATE_CTRL_WRITE_PWD, | 262 STATE_CTRL_WRITE_PWD, |
271 STATE_CTRL_WRITE_RETR, | 263 STATE_CTRL_WRITE_RETR, |
272 STATE_CTRL_WRITE_SIZE, | 264 STATE_CTRL_WRITE_SIZE, |
273 STATE_CTRL_WRITE_CWD, | 265 STATE_CTRL_WRITE_CWD, |
274 STATE_CTRL_WRITE_MLSD, | 266 STATE_CTRL_WRITE_MLSD, |
275 STATE_CTRL_WRITE_LIST, | 267 STATE_CTRL_WRITE_LIST, |
276 STATE_CTRL_WRITE_QUIT, | 268 STATE_CTRL_WRITE_QUIT, |
277 // Data connection states: | 269 // Data connection states: |
278 STATE_DATA_CONNECT, | 270 STATE_DATA_CONNECT, |
279 STATE_DATA_CONNECT_COMPLETE, | 271 STATE_DATA_CONNECT_COMPLETE, |
280 STATE_DATA_READ, | 272 STATE_DATA_READ, |
281 STATE_DATA_READ_COMPLETE, | 273 STATE_DATA_READ_COMPLETE, |
282 STATE_NONE | 274 STATE_NONE |
283 }; | 275 }; |
284 State next_state_; | 276 State next_state_; |
285 }; | 277 }; |
286 | 278 |
287 } // namespace net | 279 } // namespace net |
288 | 280 |
289 #endif // NET_FTP_FTP_NETWORK_TRANSACTION_H_ | 281 #endif // NET_FTP_FTP_NETWORK_TRANSACTION_H_ |
OLD | NEW |