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

Unified Diff: mojo/system/raw_channel.cc

Issue 265753006: Mojo: Factor MessageInTransit secondary buffer stuff out into a separate class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/system/message_pipe.cc ('k') | mojo/system/raw_channel_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/system/raw_channel.cc
diff --git a/mojo/system/raw_channel.cc b/mojo/system/raw_channel.cc
index 92b9a3dfd9aff0646be7932e98d4f8e8d93ce11a..9780baf762cbd309806acfb7bf25d7672a9cb5bb 100644
--- a/mojo/system/raw_channel.cc
+++ b/mojo/system/raw_channel.cc
@@ -14,6 +14,7 @@
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "mojo/system/message_in_transit.h"
+#include "mojo/system/transport_data.h"
namespace mojo {
namespace system {
@@ -45,7 +46,10 @@ void RawChannel::WriteBuffer::GetBuffers(std::vector<Buffer>* buffers) const {
return;
MessageInTransit* message = message_queue_.front();
- if (!message->secondary_buffer_size()) {
+ size_t transport_data_buffer_size = message->transport_data() ?
+ message->transport_data()->buffer_size() : 0;
+
+ if (!transport_data_buffer_size) {
// Only write from the main buffer.
DCHECK_LT(offset_, message->main_buffer_size());
DCHECK_LE(bytes_to_write, message->main_buffer_size());
@@ -57,12 +61,12 @@ void RawChannel::WriteBuffer::GetBuffers(std::vector<Buffer>* buffers) const {
}
if (offset_ >= message->main_buffer_size()) {
- // Only write from the secondary buffer.
+ // Only write from the transport data buffer.
DCHECK_LT(offset_ - message->main_buffer_size(),
- message->secondary_buffer_size());
- DCHECK_LE(bytes_to_write, message->secondary_buffer_size());
+ transport_data_buffer_size);
+ DCHECK_LE(bytes_to_write, transport_data_buffer_size);
Buffer buffer = {
- static_cast<const char*>(message->secondary_buffer()) +
+ static_cast<const char*>(message->transport_data()->buffer()) +
(offset_ - message->main_buffer_size()),
bytes_to_write};
buffers->push_back(buffer);
@@ -71,14 +75,16 @@ void RawChannel::WriteBuffer::GetBuffers(std::vector<Buffer>* buffers) const {
// Write from both buffers.
DCHECK_EQ(bytes_to_write, message->main_buffer_size() - offset_ +
- message->secondary_buffer_size());
+ transport_data_buffer_size);
Buffer buffer1 = {
- static_cast<const char*>(message->main_buffer()) + offset_,
- message->main_buffer_size() - offset_};
+ static_cast<const char*>(message->main_buffer()) + offset_,
+ message->main_buffer_size() - offset_
+ };
buffers->push_back(buffer1);
Buffer buffer2 = {
- static_cast<const char*>(message->secondary_buffer()),
- message->secondary_buffer_size()};
+ static_cast<const char*>(message->transport_data()->buffer()),
+ transport_data_buffer_size
+ };
buffers->push_back(buffer2);
}
@@ -159,7 +165,8 @@ bool RawChannel::WriteMessage(scoped_ptr<MessageInTransit> message) {
DCHECK(message);
// TODO(vtl)
- if (message->has_platform_handles()) {
+ if (message->transport_data() &&
+ message->transport_data()->has_platform_handles()) {
NOTIMPLEMENTED();
return false;
}
« no previous file with comments | « mojo/system/message_pipe.cc ('k') | mojo/system/raw_channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698