| 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;
|
| }
|
|
|