OLD | NEW |
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 "mojo/system/raw_channel.h" | 5 #include "mojo/system/raw_channel.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 DCHECK(!write_stopped_); | 461 DCHECK(!write_stopped_); |
462 DCHECK(!write_buffer_->message_queue_.empty()); | 462 DCHECK(!write_buffer_->message_queue_.empty()); |
463 | 463 |
464 if (result) { | 464 if (result) { |
465 write_buffer_->platform_handles_offset_ += platform_handles_written; | 465 write_buffer_->platform_handles_offset_ += platform_handles_written; |
466 write_buffer_->data_offset_ += bytes_written; | 466 write_buffer_->data_offset_ += bytes_written; |
467 | 467 |
468 MessageInTransit* message = write_buffer_->message_queue_.front(); | 468 MessageInTransit* message = write_buffer_->message_queue_.front(); |
469 if (write_buffer_->data_offset_ >= message->total_size()) { | 469 if (write_buffer_->data_offset_ >= message->total_size()) { |
470 // Complete write. | 470 // Complete write. |
471 DCHECK_EQ(write_buffer_->data_offset_, message->total_size()); | 471 CHECK_EQ(write_buffer_->data_offset_, message->total_size()); |
472 write_buffer_->message_queue_.pop_front(); | 472 write_buffer_->message_queue_.pop_front(); |
473 delete message; | 473 delete message; |
474 write_buffer_->platform_handles_offset_ = 0; | 474 write_buffer_->platform_handles_offset_ = 0; |
475 write_buffer_->data_offset_ = 0; | 475 write_buffer_->data_offset_ = 0; |
476 | 476 |
477 if (write_buffer_->message_queue_.empty()) | 477 if (write_buffer_->message_queue_.empty()) |
478 return true; | 478 return true; |
479 } | 479 } |
480 | 480 |
481 // Schedule the next write. | 481 // Schedule the next write. |
482 IOResult io_result = ScheduleWriteNoLock(); | 482 IOResult io_result = ScheduleWriteNoLock(); |
483 if (io_result == IO_PENDING) | 483 if (io_result == IO_PENDING) |
484 return true; | 484 return true; |
485 DCHECK_EQ(io_result, IO_FAILED); | 485 DCHECK_EQ(io_result, IO_FAILED); |
486 } | 486 } |
487 | 487 |
488 write_stopped_ = true; | 488 write_stopped_ = true; |
489 STLDeleteElements(&write_buffer_->message_queue_); | 489 STLDeleteElements(&write_buffer_->message_queue_); |
490 write_buffer_->platform_handles_offset_ = 0; | 490 write_buffer_->platform_handles_offset_ = 0; |
491 write_buffer_->data_offset_ = 0; | 491 write_buffer_->data_offset_ = 0; |
492 return false; | 492 return false; |
493 } | 493 } |
494 | 494 |
495 } // namespace system | 495 } // namespace system |
496 } // namespace mojo | 496 } // namespace mojo |
OLD | NEW |