Chromium Code Reviews| Index: mojo/services/network/net_adapters.cc |
| diff --git a/mojo/services/network/net_adapters.cc b/mojo/services/network/net_adapters.cc |
| index 63744ff0adb34eabec953123de2a4b9aed6b9eaa..380a15672839f76ae9c0038aab9ce42adc9dc20f 100644 |
| --- a/mojo/services/network/net_adapters.cc |
| +++ b/mojo/services/network/net_adapters.cc |
| @@ -8,6 +8,104 @@ |
| namespace mojo { |
| +namespace { |
| + |
| +const uint32_t kMaxReadSize = 64 * 1024; |
| + |
| +} // namespace |
| + |
| +NetToMojoPendingBuffer::NetToMojoPendingBuffer( |
| + ScopedDataPipeProducerHandle handle, |
| + void* buffer) |
| + : handle_(handle.Pass()), |
| + buffer_(buffer) { |
| +} |
| + |
| +NetToMojoPendingBuffer::~NetToMojoPendingBuffer() { |
| + if (handle_.is_valid()) |
| + EndWriteDataRaw(handle_.get(), 0); |
| +} |
| + |
| +// static |
| +MojoResult NetToMojoPendingBuffer::BeginWrite( |
| + ScopedDataPipeProducerHandle* handle, |
| + scoped_refptr<NetToMojoPendingBuffer>* pending, |
| + uint32_t* num_bytes) { |
| + void* buf; |
| + *num_bytes = 0; |
| + |
| + MojoResult result = BeginWriteDataRaw(handle->get(), &buf, num_bytes, |
| + MOJO_WRITE_DATA_FLAG_NONE); |
| + if (result == MOJO_RESULT_OK) { |
| + if (*num_bytes > kMaxReadSize) |
| + *num_bytes = kMaxReadSize; |
|
yzshen1
2014/10/10 21:18:59
It seems a little confusing why we use kMaxReadSiz
|
| + *pending = new NetToMojoPendingBuffer(handle->Pass(), buf); |
| + } |
| + return result; |
| +} |
| + |
| +ScopedDataPipeProducerHandle NetToMojoPendingBuffer::Complete( |
| + uint32_t num_bytes) { |
| + EndWriteDataRaw(handle_.get(), num_bytes); |
| + buffer_ = NULL; |
| + return handle_.Pass(); |
| +} |
| + |
| +// ----------------------------------------------------------------------------- |
| + |
| +NetToMojoIOBuffer::NetToMojoIOBuffer( |
| + NetToMojoPendingBuffer* pending_buffer) |
| + : net::WrappedIOBuffer(pending_buffer->buffer()), |
| + pending_buffer_(pending_buffer) { |
| +} |
| + |
| +NetToMojoIOBuffer::~NetToMojoIOBuffer() { |
| +} |
| + |
| +// ----------------------------------------------------------------------------- |
| + |
| +MojoToNetPendingBuffer::MojoToNetPendingBuffer( |
| + ScopedDataPipeConsumerHandle handle, |
| + const void* buffer) |
| + : buffer_(buffer) { |
|
yzshen1
2014/10/10 21:18:59
|handle| should be used to initialize the correspo
|
| +} |
| + |
| +MojoToNetPendingBuffer::~MojoToNetPendingBuffer() { |
| +} |
| + |
| +// static |
| +MojoResult MojoToNetPendingBuffer::BeginRead( |
| + ScopedDataPipeConsumerHandle* handle, |
| + scoped_refptr<MojoToNetPendingBuffer>* pending, |
| + uint32_t* num_bytes) { |
| + const void* buffer = NULL; |
| + *num_bytes = 0; |
| + MojoResult result = BeginReadDataRaw(handle->get(), &buffer, num_bytes, |
| + MOJO_READ_DATA_FLAG_NONE); |
| + if (result == MOJO_RESULT_OK) |
| + *pending = new MojoToNetPendingBuffer(handle->Pass(), buffer); |
| + return result; |
| +} |
| + |
| +ScopedDataPipeConsumerHandle MojoToNetPendingBuffer::Complete( |
| + uint32_t num_bytes) { |
| + EndReadDataRaw(handle_.get(), num_bytes); |
| + buffer_ = NULL; |
| + return handle_.Pass(); |
| +} |
| + |
| +// ----------------------------------------------------------------------------- |
| + |
| +MojoToNetIOBuffer::MojoToNetIOBuffer(MojoToNetPendingBuffer* pending_buffer) |
| + : net::WrappedIOBuffer(pending_buffer->buffer()), |
| + pending_buffer_(pending_buffer) { |
| +} |
| + |
| +MojoToNetIOBuffer::~MojoToNetIOBuffer() { |
| +} |
| + |
| +// ----------------------------------------------------------------------------- |
| + |
| NetworkErrorPtr MakeNetworkError(int error_code) { |
| NetworkErrorPtr error = NetworkError::New(); |
| error->code = error_code; |