Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: net/url_request/url_request_file_dir_job.h

Issue 5710002: Create base::WorkerPoolJob. Use it for HostResolverImpl and DirectoryLister. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address cancellation. Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__ 5 #ifndef NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__
6 #define NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__ 6 #define NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/file_util.h" 12 #include "base/file_util.h"
13 #include "base/task.h" 13 #include "base/task.h"
14 #include "net/base/directory_lister.h" 14 #include "net/base/directory_lister.h"
15 #include "net/url_request/url_request_job.h" 15 #include "net/url_request/url_request_job.h"
16 16
17 class URLRequestFileDirJob 17 class URLRequestFileDirJob
18 : public net::URLRequestJob, 18 : public net::URLRequestJob, public net::DirectoryLister::Delegate {
19 public net::DirectoryLister::DirectoryListerDelegate {
20 public: 19 public:
21 URLRequestFileDirJob(net::URLRequest* request, const FilePath& dir_path); 20 URLRequestFileDirJob(net::URLRequest* request, const FilePath& dir_path);
22 21
23 // net::URLRequestJob methods: 22 // net::URLRequestJob methods:
24 virtual void Start(); 23 virtual void Start();
25 virtual void StartAsync(); 24 virtual void StartAsync();
26 virtual void Kill(); 25 virtual void Kill();
27 virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read); 26 virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read);
28 virtual bool GetMimeType(std::string* mime_type) const; 27 virtual bool GetMimeType(std::string* mime_type) const;
29 virtual bool GetCharset(std::string* charset); 28 virtual bool GetCharset(std::string* charset);
30 29
31 // DirectoryLister::DirectoryListerDelegate methods: 30 // DirectoryLister::Delegate methods:
32 virtual void OnListFile( 31 virtual void OnListFile(
33 const net::DirectoryLister::DirectoryListerData& data); 32 const net::DirectoryLister::Data& data);
34 virtual void OnListDone(int error); 33 virtual void OnListDone(int error);
35 34
36 bool list_complete() const { return list_complete_; } 35 bool list_complete() const { return list_complete_; }
37 36
38 private: 37 private:
39 virtual ~URLRequestFileDirJob(); 38 virtual ~URLRequestFileDirJob();
40 39
41 void CloseLister(); 40 void CloseLister();
42 // When we have data and a read has been pending, this function 41 // When we have data and a read has been pending, this function
43 // will fill the response buffer and notify the request 42 // will fill the response buffer and notify the request
44 // appropriately. 43 // appropriately.
45 void CompleteRead(); 44 void CompleteRead();
46 45
47 // Fills a buffer with the output. 46 // Fills a buffer with the output.
48 bool FillReadBuffer(char *buf, int buf_size, int *bytes_read); 47 bool FillReadBuffer(char *buf, int buf_size, int *bytes_read);
49 48
50 scoped_refptr<net::DirectoryLister> lister_; 49 net::DirectoryLister lister_;
51 FilePath dir_path_; 50 FilePath dir_path_;
52 std::string data_; 51 std::string data_;
53 bool canceled_; 52 bool canceled_;
54 53
55 // Indicates whether we have the complete list of the dir 54 // Indicates whether we have the complete list of the dir
56 bool list_complete_; 55 bool list_complete_;
57 56
58 // Indicates whether we have written the HTML header 57 // Indicates whether we have written the HTML header
59 bool wrote_header_; 58 bool wrote_header_;
60 59
61 // To simulate Async IO, we hold onto the Reader's buffer while 60 // To simulate Async IO, we hold onto the Reader's buffer while
62 // we wait for IO to complete. When done, we fill the buffer 61 // we wait for IO to complete. When done, we fill the buffer
63 // manually. 62 // manually.
64 bool read_pending_; 63 bool read_pending_;
65 scoped_refptr<net::IOBuffer> read_buffer_; 64 scoped_refptr<net::IOBuffer> read_buffer_;
66 int read_buffer_length_; 65 int read_buffer_length_;
67 ScopedRunnableMethodFactory<URLRequestFileDirJob> method_factory_; 66 ScopedRunnableMethodFactory<URLRequestFileDirJob> method_factory_;
68 67
69 DISALLOW_COPY_AND_ASSIGN(URLRequestFileDirJob); 68 DISALLOW_COPY_AND_ASSIGN(URLRequestFileDirJob);
70 }; 69 };
71 70
72 #endif // NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__ 71 #endif // NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698