Commit 9acb534c authored by Bence Béky's avatar Bence Béky Committed by Commit Bot

Use CompletionOnceCallback in WebSocketBasicStream::Adapter.

Bug: 807724
Change-Id: Idf518b751e1b0399c14c33f1be485da9be9247aa
Reviewed-on: https://chromium-review.googlesource.com/1091959Reviewed-by: default avatarAdam Rice <ricea@chromium.org>
Commit-Queue: Bence Béky <bnc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565991}
parent 3f2a65de
......@@ -11,6 +11,7 @@
#include "base/memory/scoped_refptr.h"
#include "net/base/completion_callback.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/websockets/websocket_frame_parser.h"
......@@ -43,11 +44,11 @@ class NET_EXPORT_PRIVATE WebSocketBasicStream : public WebSocketStream {
virtual ~Adapter() = default;
virtual int Read(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback) = 0;
CompletionOnceCallback callback) = 0;
virtual int Write(
IOBuffer* buf,
int buf_len,
const CompletionCallback& callback,
CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) = 0;
virtual void Disconnect() = 0;
virtual bool is_initialized() const = 0;
......
......@@ -25,19 +25,18 @@ WebSocketClientSocketHandleAdapter::WebSocketClientSocketHandleAdapter(
WebSocketClientSocketHandleAdapter::~WebSocketClientSocketHandleAdapter() {}
int WebSocketClientSocketHandleAdapter::Read(
IOBuffer* buf,
int buf_len,
const CompletionCallback& callback) {
return connection_->socket()->Read(buf, buf_len, callback);
int WebSocketClientSocketHandleAdapter::Read(IOBuffer* buf,
int buf_len,
CompletionOnceCallback callback) {
return connection_->socket()->Read(buf, buf_len, std::move(callback));
}
int WebSocketClientSocketHandleAdapter::Write(
IOBuffer* buf,
int buf_len,
const CompletionCallback& callback,
CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) {
return connection_->socket()->Write(buf, buf_len, callback,
return connection_->socket()->Write(buf, buf_len, std::move(callback),
traffic_annotation);
}
......@@ -76,7 +75,7 @@ void WebSocketSpdyStreamAdapter::DetachDelegate() {
int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback) {
CompletionOnceCallback callback) {
DCHECK(!read_callback_);
DCHECK_LT(0, buf_len);
......@@ -91,14 +90,14 @@ int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf,
if (!stream_)
return stream_error_;
read_callback_ = callback;
read_callback_ = std::move(callback);
return ERR_IO_PENDING;
}
int WebSocketSpdyStreamAdapter::Write(
IOBuffer* buf,
int buf_len,
const CompletionCallback& callback,
CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) {
CHECK(headers_sent_);
DCHECK(!write_callback_);
......@@ -109,7 +108,7 @@ int WebSocketSpdyStreamAdapter::Write(
return stream_error_;
stream_->SendData(buf, buf_len, MORE_DATA_TO_SEND);
write_callback_ = callback;
write_callback_ = std::move(callback);
write_length_ = buf_len;
return ERR_IO_PENDING;
}
......@@ -143,13 +142,13 @@ void WebSocketSpdyStreamAdapter::OnDataReceived(
std::unique_ptr<SpdyBuffer> buffer) {
read_data_.Enqueue(std::move(buffer));
if (read_callback_)
base::ResetAndReturn(&read_callback_).Run(CopySavedReadDataIntoBuffer());
std::move(read_callback_).Run(CopySavedReadDataIntoBuffer());
}
void WebSocketSpdyStreamAdapter::OnDataSent() {
DCHECK(write_callback_);
base::ResetAndReturn(&write_callback_).Run(write_length_);
std::move(write_callback_).Run(write_length_);
}
void WebSocketSpdyStreamAdapter::OnTrailers(
......@@ -166,13 +165,13 @@ void WebSocketSpdyStreamAdapter::OnClose(int status) {
if (read_callback_) {
DCHECK(read_data_.IsEmpty());
// Might destroy |this|.
base::ResetAndReturn(&read_callback_).Run(status);
std::move(read_callback_).Run(status);
if (!self)
return;
}
if (write_callback_) {
// Might destroy |this|.
base::ResetAndReturn(&write_callback_).Run(status);
std::move(write_callback_).Run(status);
if (!self)
return;
}
......
......@@ -8,7 +8,7 @@
#include <memory>
#include "base/memory/weak_ptr.h"
#include "net/base/completion_callback.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/spdy/spdy_read_queue.h"
#include "net/spdy/spdy_stream.h"
......@@ -32,10 +32,10 @@ class NET_EXPORT_PRIVATE WebSocketClientSocketHandleAdapter
int Read(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback) override;
CompletionOnceCallback callback) override;
int Write(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback,
CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) override;
void Disconnect() override;
bool is_initialized() const override;
......@@ -79,13 +79,13 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
int Read(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback) override;
CompletionOnceCallback callback) override;
// Write() must not be called before Delegate::OnHeadersSent() is called.
// Write() always returns asynchronously.
int Write(IOBuffer* buf,
int buf_len,
const CompletionCallback& callback,
CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) override;
void Disconnect() override;
......@@ -132,7 +132,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
// Read callback saved for asynchronous reads.
// Whenever |read_data_| is not empty, |read_callback_| must be null.
CompletionCallback read_callback_;
CompletionOnceCallback read_callback_;
// Write length saved to be passed to |write_callback_|. This is necessary
// because SpdyStream::Delegate::OnDataSent() does not pass number of bytes
......@@ -140,7 +140,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
int write_length_;
// Write callback saved for asynchronous writes (all writes are asynchronous).
CompletionCallback write_callback_;
CompletionOnceCallback write_callback_;
NetLogWithSource net_log_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment