OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digest
er.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digest
er.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/callback.h" | 9 #include "base/callback.h" |
8 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
9 #include "storage/browser/fileapi/file_stream_reader.h" | 11 #include "storage/browser/fileapi/file_stream_reader.h" |
10 | 12 |
11 namespace drive { | 13 namespace drive { |
12 namespace util { | 14 namespace util { |
13 | 15 |
14 namespace { | 16 namespace { |
15 | 17 |
16 const int kMd5DigestBufferSize = 512 * 1024; // 512 kB. | 18 const int kMd5DigestBufferSize = 512 * 1024; // 512 kB. |
17 | 19 |
18 } // namespace | 20 } // namespace |
19 | 21 |
20 FileStreamMd5Digester::FileStreamMd5Digester() | 22 FileStreamMd5Digester::FileStreamMd5Digester() |
21 : buffer_(new net::IOBuffer(kMd5DigestBufferSize)) {} | 23 : buffer_(new net::IOBuffer(kMd5DigestBufferSize)) {} |
22 | 24 |
23 FileStreamMd5Digester::~FileStreamMd5Digester() {} | 25 FileStreamMd5Digester::~FileStreamMd5Digester() {} |
24 | 26 |
25 void FileStreamMd5Digester::GetMd5Digest( | 27 void FileStreamMd5Digester::GetMd5Digest( |
26 scoped_ptr<storage::FileStreamReader> stream_reader, | 28 scoped_ptr<storage::FileStreamReader> stream_reader, |
27 const ResultCallback& callback) { | 29 const ResultCallback& callback) { |
28 reader_ = stream_reader.Pass(); | 30 reader_ = std::move(stream_reader); |
29 base::MD5Init(&md5_context_); | 31 base::MD5Init(&md5_context_); |
30 | 32 |
31 // Start the read/hash. | 33 // Start the read/hash. |
32 ReadNextChunk(callback); | 34 ReadNextChunk(callback); |
33 } | 35 } |
34 | 36 |
35 void FileStreamMd5Digester::ReadNextChunk(const ResultCallback& callback) { | 37 void FileStreamMd5Digester::ReadNextChunk(const ResultCallback& callback) { |
36 const int result = | 38 const int result = |
37 reader_->Read(buffer_.get(), kMd5DigestBufferSize, | 39 reader_->Read(buffer_.get(), kMd5DigestBufferSize, |
38 base::Bind(&FileStreamMd5Digester::OnChunkRead, | 40 base::Bind(&FileStreamMd5Digester::OnChunkRead, |
(...skipping 20 matching lines...) Expand all Loading... |
59 // Read data and digest it. | 61 // Read data and digest it. |
60 base::MD5Update(&md5_context_, | 62 base::MD5Update(&md5_context_, |
61 base::StringPiece(buffer_->data(), bytes_read)); | 63 base::StringPiece(buffer_->data(), bytes_read)); |
62 | 64 |
63 // Kick off the next read. | 65 // Kick off the next read. |
64 ReadNextChunk(callback); | 66 ReadNextChunk(callback); |
65 } | 67 } |
66 | 68 |
67 } // namespace util | 69 } // namespace util |
68 } // namespace drive | 70 } // namespace drive |
OLD | NEW |