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

Side by Side Diff: chrome/browser/devtools/device/usb/android_usb_device.cc

Issue 297853003: Use IOBufferWithSize instead of storing IOBuffer and size separately. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/devtools/device/usb/android_usb_device.h ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/devtools/device/usb/android_usb_device.h" 5 #include "chrome/browser/devtools/device/usb/android_usb_device.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/barrier_closure.h" 9 #include "base/barrier_closure.h"
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 if (message->command == AdbMessage::kCommandAUTH && 393 if (message->command == AdbMessage::kCommandAUTH &&
394 message->arg0 == AdbMessage::kAuthSignature) 394 message->arg0 == AdbMessage::kAuthSignature)
395 append_zero = false; 395 append_zero = false;
396 if (message->command == AdbMessage::kCommandWRTE) 396 if (message->command == AdbMessage::kCommandWRTE)
397 append_zero = false; 397 append_zero = false;
398 398
399 size_t body_length = message->body.length() + (append_zero ? 1 : 0); 399 size_t body_length = message->body.length() + (append_zero ? 1 : 0);
400 header.push_back(body_length); 400 header.push_back(body_length);
401 header.push_back(Checksum(message->body)); 401 header.push_back(Checksum(message->body));
402 header.push_back(message->command ^ 0xffffffff); 402 header.push_back(message->command ^ 0xffffffff);
403 scoped_refptr<net::IOBuffer> header_buffer = new net::IOBuffer(kHeaderSize); 403 scoped_refptr<net::IOBufferWithSize> header_buffer =
404 new net::IOBufferWithSize(kHeaderSize);
404 memcpy(header_buffer.get()->data(), &header[0], kHeaderSize); 405 memcpy(header_buffer.get()->data(), &header[0], kHeaderSize);
405 outgoing_queue_.push(std::make_pair(header_buffer, kHeaderSize)); 406 outgoing_queue_.push(header_buffer);
406 407
407 // Queue body. 408 // Queue body.
408 if (!message->body.empty()) { 409 if (!message->body.empty()) {
409 scoped_refptr<net::IOBuffer> body_buffer = new net::IOBuffer(body_length); 410 scoped_refptr<net::IOBufferWithSize> body_buffer =
411 new net::IOBufferWithSize(body_length);
410 memcpy(body_buffer->data(), message->body.data(), message->body.length()); 412 memcpy(body_buffer->data(), message->body.data(), message->body.length());
411 if (append_zero) 413 if (append_zero)
412 body_buffer->data()[body_length - 1] = 0; 414 body_buffer->data()[body_length - 1] = 0;
413 outgoing_queue_.push(std::make_pair(body_buffer, body_length)); 415 outgoing_queue_.push(body_buffer);
414 if (zero_mask_ && (body_length & zero_mask_) == 0) { 416 if (zero_mask_ && (body_length & zero_mask_) == 0) {
415 // Send a zero length packet. 417 // Send a zero length packet.
416 outgoing_queue_.push(std::make_pair(body_buffer, 0)); 418 outgoing_queue_.push(new net::IOBufferWithSize(0));
417 } 419 }
418 } 420 }
419 ProcessOutgoing(); 421 ProcessOutgoing();
420 } 422 }
421 423
422 void AndroidUsbDevice::ProcessOutgoing() { 424 void AndroidUsbDevice::ProcessOutgoing() {
423 DCHECK(message_loop_ == base::MessageLoop::current()); 425 DCHECK(message_loop_ == base::MessageLoop::current());
424 426
425 if (outgoing_queue_.empty() || !usb_handle_) 427 if (outgoing_queue_.empty() || !usb_handle_)
426 return; 428 return;
427 429
428 BulkMessage message = outgoing_queue_.front(); 430 BulkMessage message = outgoing_queue_.front();
429 outgoing_queue_.pop(); 431 outgoing_queue_.pop();
430 DumpMessage(true, message.first->data(), message.second); 432 DumpMessage(true, message->data(), message->size());
431 usb_handle_->BulkTransfer( 433 usb_handle_->BulkTransfer(
432 usb_service::USB_DIRECTION_OUTBOUND, outbound_address_, 434 usb_service::USB_DIRECTION_OUTBOUND, outbound_address_,
433 message.first, message.second, kUsbTimeout, 435 message, message->size(), kUsbTimeout,
434 base::Bind(&AndroidUsbDevice::OutgoingMessageSent, 436 base::Bind(&AndroidUsbDevice::OutgoingMessageSent,
435 weak_factory_.GetWeakPtr())); 437 weak_factory_.GetWeakPtr()));
436 } 438 }
437 439
438 void AndroidUsbDevice::OutgoingMessageSent(UsbTransferStatus status, 440 void AndroidUsbDevice::OutgoingMessageSent(UsbTransferStatus status,
439 scoped_refptr<net::IOBuffer> buffer, 441 scoped_refptr<net::IOBuffer> buffer,
440 size_t result) { 442 size_t result) {
441 DCHECK(message_loop_ == base::MessageLoop::current()); 443 DCHECK(message_loop_ == base::MessageLoop::current());
442 444
443 if (status != usb_service::USB_TRANSFER_COMPLETED) 445 if (status != usb_service::USB_TRANSFER_COMPLETED)
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 BrowserThread::PostTask( 645 BrowserThread::PostTask(
644 BrowserThread::FILE, FROM_HERE, 646 BrowserThread::FILE, FROM_HERE,
645 base::Bind(&ReleaseInterface, usb_handle, interface_id_)); 647 base::Bind(&ReleaseInterface, usb_handle, interface_id_));
646 } 648 }
647 649
648 void AndroidUsbDevice::SocketDeleted(uint32 socket_id) { 650 void AndroidUsbDevice::SocketDeleted(uint32 socket_id) {
649 DCHECK(message_loop_ == base::MessageLoop::current()); 651 DCHECK(message_loop_ == base::MessageLoop::current());
650 652
651 sockets_.erase(socket_id); 653 sockets_.erase(socket_id);
652 } 654 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/usb/android_usb_device.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698