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

Side by Side Diff: device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc

Issue 180783005: MTP Streaming: Optimize block reading (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
« no previous file with comments | « chrome/browser/media_galleries/linux/mtp_device_task_helper.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "device/media_transfer_protocol/media_transfer_protocol_daemon_client.h " 5 #include "device/media_transfer_protocol/media_transfer_protocol_daemon_client.h "
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "dbus/bus.h" 9 #include "dbus/bus.h"
10 #include "dbus/message.h" 10 #include "dbus/message.h"
11 #include "dbus/object_path.h" 11 #include "dbus/object_path.h"
12 #include "dbus/object_proxy.h" 12 #include "dbus/object_proxy.h"
13 #include "device/media_transfer_protocol/mtp_file_entry.pb.h" 13 #include "device/media_transfer_protocol/mtp_file_entry.pb.h"
14 #include "device/media_transfer_protocol/mtp_storage_info.pb.h" 14 #include "device/media_transfer_protocol/mtp_storage_info.pb.h"
15 #include "third_party/cros_system_api/dbus/service_constants.h" 15 #include "third_party/cros_system_api/dbus/service_constants.h"
16 16
17 namespace device { 17 namespace device {
18 18
19 namespace { 19 namespace {
20 20
21 const char kInvalidResponseMsg[] = "Invalid Response: "; 21 const char kInvalidResponseMsg[] = "Invalid Response: ";
22 uint32 kMaxChunkSize = 1024*1024; // D-Bus has message size limits.
22 23
23 // The MediaTransferProtocolDaemonClient implementation. 24 // The MediaTransferProtocolDaemonClient implementation.
24 class MediaTransferProtocolDaemonClientImpl 25 class MediaTransferProtocolDaemonClientImpl
25 : public MediaTransferProtocolDaemonClient { 26 : public MediaTransferProtocolDaemonClient {
26 public: 27 public:
27 explicit MediaTransferProtocolDaemonClientImpl(dbus::Bus* bus) 28 explicit MediaTransferProtocolDaemonClientImpl(dbus::Bus* bus)
28 : proxy_(bus->GetObjectProxy( 29 : proxy_(bus->GetObjectProxy(
29 mtpd::kMtpdServiceName, 30 mtpd::kMtpdServiceName,
30 dbus::ObjectPath(mtpd::kMtpdServicePath))), 31 dbus::ObjectPath(mtpd::kMtpdServicePath))),
31 listen_for_changes_called_(false), 32 listen_for_changes_called_(false),
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 } 134 }
134 135
135 // MediaTransferProtocolDaemonClient override. 136 // MediaTransferProtocolDaemonClient override.
136 virtual void ReadFileChunkByPath( 137 virtual void ReadFileChunkByPath(
137 const std::string& handle, 138 const std::string& handle,
138 const std::string& path, 139 const std::string& path,
139 uint32 offset, 140 uint32 offset,
140 uint32 bytes_to_read, 141 uint32 bytes_to_read,
141 const ReadFileCallback& callback, 142 const ReadFileCallback& callback,
142 const ErrorCallback& error_callback) OVERRIDE { 143 const ErrorCallback& error_callback) OVERRIDE {
144 DCHECK_LE(bytes_to_read, kMaxChunkSize);
143 dbus::MethodCall method_call(mtpd::kMtpdInterface, 145 dbus::MethodCall method_call(mtpd::kMtpdInterface,
144 mtpd::kReadFileChunkByPath); 146 mtpd::kReadFileChunkByPath);
145 dbus::MessageWriter writer(&method_call); 147 dbus::MessageWriter writer(&method_call);
146 writer.AppendString(handle); 148 writer.AppendString(handle);
147 writer.AppendString(path); 149 writer.AppendString(path);
148 writer.AppendUint32(offset); 150 writer.AppendUint32(offset);
149 writer.AppendUint32(bytes_to_read); 151 writer.AppendUint32(bytes_to_read);
150 proxy_->CallMethod( 152 proxy_->CallMethod(
151 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 153 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
152 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile, 154 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile,
153 weak_ptr_factory_.GetWeakPtr(), 155 weak_ptr_factory_.GetWeakPtr(),
154 callback, 156 callback,
155 error_callback)); 157 error_callback));
156 } 158 }
157 159
158 // MediaTransferProtocolDaemonClient override. 160 // MediaTransferProtocolDaemonClient override.
159 virtual void ReadFileChunkById(const std::string& handle, 161 virtual void ReadFileChunkById(const std::string& handle,
160 uint32 file_id, 162 uint32 file_id,
161 uint32 offset, 163 uint32 offset,
162 uint32 bytes_to_read, 164 uint32 bytes_to_read,
163 const ReadFileCallback& callback, 165 const ReadFileCallback& callback,
164 const ErrorCallback& error_callback) OVERRIDE { 166 const ErrorCallback& error_callback) OVERRIDE {
167 DCHECK_LE(bytes_to_read, kMaxChunkSize);
165 dbus::MethodCall method_call(mtpd::kMtpdInterface, 168 dbus::MethodCall method_call(mtpd::kMtpdInterface,
166 mtpd::kReadFileChunkById); 169 mtpd::kReadFileChunkById);
167 dbus::MessageWriter writer(&method_call); 170 dbus::MessageWriter writer(&method_call);
168 writer.AppendString(handle); 171 writer.AppendString(handle);
169 writer.AppendUint32(file_id); 172 writer.AppendUint32(file_id);
170 writer.AppendUint32(offset); 173 writer.AppendUint32(offset);
171 writer.AppendUint32(bytes_to_read); 174 writer.AppendUint32(bytes_to_read);
172 proxy_->CallMethod( 175 proxy_->CallMethod(
173 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 176 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
174 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile, 177 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile,
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 426
424 MediaTransferProtocolDaemonClient::~MediaTransferProtocolDaemonClient() {} 427 MediaTransferProtocolDaemonClient::~MediaTransferProtocolDaemonClient() {}
425 428
426 // static 429 // static
427 MediaTransferProtocolDaemonClient* MediaTransferProtocolDaemonClient::Create( 430 MediaTransferProtocolDaemonClient* MediaTransferProtocolDaemonClient::Create(
428 dbus::Bus* bus) { 431 dbus::Bus* bus) {
429 return new MediaTransferProtocolDaemonClientImpl(bus); 432 return new MediaTransferProtocolDaemonClientImpl(bus);
430 } 433 }
431 434
432 } // namespace device 435 } // namespace device
OLDNEW
« no previous file with comments | « chrome/browser/media_galleries/linux/mtp_device_task_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698