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

Side by Side Diff: chrome/browser/chromeos/drive/drive_file_stream_reader.h

Issue 14237004: Add an utility interface ReaderProxy and its implementation for local file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_
6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_ 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_
7 7
8 #include <string>
9
8 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/chromeos/drive/drive_file_error.h"
13 #include "net/base/completion_callback.h"
9 #include "webkit/blob/file_stream_reader.h" 14 #include "webkit/blob/file_stream_reader.h"
10 15
16 namespace net {
17 class FileStream;
18 class IOBuffer;
19 } // namespace net
20
11 namespace drive { 21 namespace drive {
22 namespace internal {
12 23
24 // An interface to dispatch the reading operation. If the file is locally
25 // cached, LocalReaderProxy defined below will be used. Otherwise (i.e. the
26 // file is being downloaded from the server), NetworkReaderProxy will be used.
27 // Conceptually this is a part of implementation details for
hashimoto 2013/04/16 08:38:29 nit: Is this sentence needed? The name of the name
hidehiko 2013/04/16 08:57:11 Ok. Removed.
28 // DriveFileStreamReader but exposed under internal namespace for testing
29 // purpose.
30 class ReaderProxy {
31 public:
32 virtual ~ReaderProxy() {}
33
34 // Called from DriveFileStreamReader::Read method.
35 virtual int Read(net::IOBuffer* buffer, int buffer_length,
36 const net::CompletionCallback& callback) = 0;
37
38 // Called when the data from the server is received.
39 virtual void OnGetContent(scoped_ptr<std::string> data) = 0;
hashimoto 2013/04/16 08:38:29 Does this method need to be in this interface? Onl
hidehiko 2013/04/16 08:57:11 Yes, this needs to be a part of this interface, ot
40
41 // Called when an error is found, during the network downloading.
42 virtual void OnError(DriveFileError error) = 0;
hashimoto 2013/04/16 08:38:29 ditto.
hidehiko 2013/04/16 08:57:11 Acknowledged.
43 };
44
45 // The read operation implementation for the locally cached files.
46 class LocalReaderProxy : public ReaderProxy {
47 public:
48 // The |file_stream| should be the instance which is already opened.
49 // This class takes its ownership.
50 explicit LocalReaderProxy(scoped_ptr<net::FileStream> file_stream);
51 virtual ~LocalReaderProxy();
52
53 // ReaderProxy overrides.
54 virtual int Read(net::IOBuffer* buffer, int buffer_length,
55 const net::CompletionCallback& callback) OVERRIDE;
56 virtual void OnGetContent(scoped_ptr<std::string> data) OVERRIDE;
57 virtual void OnError(DriveFileError error) OVERRIDE;
58
59 private:
60 scoped_ptr<net::FileStream> file_stream_;
61
62 DISALLOW_COPY_AND_ASSIGN(LocalReaderProxy);
63 };
64
65 // TODO(hidehiko): implement the NetworkReaderProxy.
66
67 } // namespace internal
68
69 // TODO(hidehiko): Simplify the interface by getting rid of
70 // webkit_blob::FileStreamReader inheritance.
13 class DriveFileStreamReader : public webkit_blob::FileStreamReader { 71 class DriveFileStreamReader : public webkit_blob::FileStreamReader {
14 public: 72 public:
15 DriveFileStreamReader(); 73 DriveFileStreamReader();
16 virtual ~DriveFileStreamReader(); 74 virtual ~DriveFileStreamReader();
17 75
18 // webkit_blob::FileStreamReader overrides. 76 // webkit_blob::FileStreamReader overrides.
19 virtual int Read(net::IOBuffer* buf, int buf_len, 77 virtual int Read(net::IOBuffer* buf, int buf_len,
20 const net::CompletionCallback& callback) OVERRIDE; 78 const net::CompletionCallback& callback) OVERRIDE;
21 virtual int64 GetLength( 79 virtual int64 GetLength(
22 const net::Int64CompletionCallback& callback) OVERRIDE; 80 const net::Int64CompletionCallback& callback) OVERRIDE;
23 81
24 private: 82 private:
25 DISALLOW_COPY_AND_ASSIGN(DriveFileStreamReader); 83 DISALLOW_COPY_AND_ASSIGN(DriveFileStreamReader);
26 }; 84 };
27 85
28 } // namespace drive 86 } // namespace drive
29 87
30 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_ 88 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_FILE_STREAM_READER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698