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 @@ ...@@ -11,6 +11,7 @@
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "net/base/completion_callback.h" #include "net/base/completion_callback.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h" #include "net/base/net_export.h"
#include "net/traffic_annotation/network_traffic_annotation.h" #include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/websockets/websocket_frame_parser.h" #include "net/websockets/websocket_frame_parser.h"
...@@ -43,11 +44,11 @@ class NET_EXPORT_PRIVATE WebSocketBasicStream : public WebSocketStream { ...@@ -43,11 +44,11 @@ class NET_EXPORT_PRIVATE WebSocketBasicStream : public WebSocketStream {
virtual ~Adapter() = default; virtual ~Adapter() = default;
virtual int Read(IOBuffer* buf, virtual int Read(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback) = 0; CompletionOnceCallback callback) = 0;
virtual int Write( virtual int Write(
IOBuffer* buf, IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback, CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) = 0; const NetworkTrafficAnnotationTag& traffic_annotation) = 0;
virtual void Disconnect() = 0; virtual void Disconnect() = 0;
virtual bool is_initialized() const = 0; virtual bool is_initialized() const = 0;
......
...@@ -25,19 +25,18 @@ WebSocketClientSocketHandleAdapter::WebSocketClientSocketHandleAdapter( ...@@ -25,19 +25,18 @@ WebSocketClientSocketHandleAdapter::WebSocketClientSocketHandleAdapter(
WebSocketClientSocketHandleAdapter::~WebSocketClientSocketHandleAdapter() {} WebSocketClientSocketHandleAdapter::~WebSocketClientSocketHandleAdapter() {}
int WebSocketClientSocketHandleAdapter::Read( int WebSocketClientSocketHandleAdapter::Read(IOBuffer* buf,
IOBuffer* buf, int buf_len,
int buf_len, CompletionOnceCallback callback) {
const CompletionCallback& callback) { return connection_->socket()->Read(buf, buf_len, std::move(callback));
return connection_->socket()->Read(buf, buf_len, callback);
} }
int WebSocketClientSocketHandleAdapter::Write( int WebSocketClientSocketHandleAdapter::Write(
IOBuffer* buf, IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback, CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) { const NetworkTrafficAnnotationTag& traffic_annotation) {
return connection_->socket()->Write(buf, buf_len, callback, return connection_->socket()->Write(buf, buf_len, std::move(callback),
traffic_annotation); traffic_annotation);
} }
...@@ -76,7 +75,7 @@ void WebSocketSpdyStreamAdapter::DetachDelegate() { ...@@ -76,7 +75,7 @@ void WebSocketSpdyStreamAdapter::DetachDelegate() {
int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf, int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback) { CompletionOnceCallback callback) {
DCHECK(!read_callback_); DCHECK(!read_callback_);
DCHECK_LT(0, buf_len); DCHECK_LT(0, buf_len);
...@@ -91,14 +90,14 @@ int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf, ...@@ -91,14 +90,14 @@ int WebSocketSpdyStreamAdapter::Read(IOBuffer* buf,
if (!stream_) if (!stream_)
return stream_error_; return stream_error_;
read_callback_ = callback; read_callback_ = std::move(callback);
return ERR_IO_PENDING; return ERR_IO_PENDING;
} }
int WebSocketSpdyStreamAdapter::Write( int WebSocketSpdyStreamAdapter::Write(
IOBuffer* buf, IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback, CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) { const NetworkTrafficAnnotationTag& traffic_annotation) {
CHECK(headers_sent_); CHECK(headers_sent_);
DCHECK(!write_callback_); DCHECK(!write_callback_);
...@@ -109,7 +108,7 @@ int WebSocketSpdyStreamAdapter::Write( ...@@ -109,7 +108,7 @@ int WebSocketSpdyStreamAdapter::Write(
return stream_error_; return stream_error_;
stream_->SendData(buf, buf_len, MORE_DATA_TO_SEND); stream_->SendData(buf, buf_len, MORE_DATA_TO_SEND);
write_callback_ = callback; write_callback_ = std::move(callback);
write_length_ = buf_len; write_length_ = buf_len;
return ERR_IO_PENDING; return ERR_IO_PENDING;
} }
...@@ -143,13 +142,13 @@ void WebSocketSpdyStreamAdapter::OnDataReceived( ...@@ -143,13 +142,13 @@ void WebSocketSpdyStreamAdapter::OnDataReceived(
std::unique_ptr<SpdyBuffer> buffer) { std::unique_ptr<SpdyBuffer> buffer) {
read_data_.Enqueue(std::move(buffer)); read_data_.Enqueue(std::move(buffer));
if (read_callback_) if (read_callback_)
base::ResetAndReturn(&read_callback_).Run(CopySavedReadDataIntoBuffer()); std::move(read_callback_).Run(CopySavedReadDataIntoBuffer());
} }
void WebSocketSpdyStreamAdapter::OnDataSent() { void WebSocketSpdyStreamAdapter::OnDataSent() {
DCHECK(write_callback_); DCHECK(write_callback_);
base::ResetAndReturn(&write_callback_).Run(write_length_); std::move(write_callback_).Run(write_length_);
} }
void WebSocketSpdyStreamAdapter::OnTrailers( void WebSocketSpdyStreamAdapter::OnTrailers(
...@@ -166,13 +165,13 @@ void WebSocketSpdyStreamAdapter::OnClose(int status) { ...@@ -166,13 +165,13 @@ void WebSocketSpdyStreamAdapter::OnClose(int status) {
if (read_callback_) { if (read_callback_) {
DCHECK(read_data_.IsEmpty()); DCHECK(read_data_.IsEmpty());
// Might destroy |this|. // Might destroy |this|.
base::ResetAndReturn(&read_callback_).Run(status); std::move(read_callback_).Run(status);
if (!self) if (!self)
return; return;
} }
if (write_callback_) { if (write_callback_) {
// Might destroy |this|. // Might destroy |this|.
base::ResetAndReturn(&write_callback_).Run(status); std::move(write_callback_).Run(status);
if (!self) if (!self)
return; return;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <memory> #include <memory>
#include "base/memory/weak_ptr.h" #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/base/net_export.h"
#include "net/spdy/spdy_read_queue.h" #include "net/spdy/spdy_read_queue.h"
#include "net/spdy/spdy_stream.h" #include "net/spdy/spdy_stream.h"
...@@ -32,10 +32,10 @@ class NET_EXPORT_PRIVATE WebSocketClientSocketHandleAdapter ...@@ -32,10 +32,10 @@ class NET_EXPORT_PRIVATE WebSocketClientSocketHandleAdapter
int Read(IOBuffer* buf, int Read(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback) override; CompletionOnceCallback callback) override;
int Write(IOBuffer* buf, int Write(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback, CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) override; const NetworkTrafficAnnotationTag& traffic_annotation) override;
void Disconnect() override; void Disconnect() override;
bool is_initialized() const override; bool is_initialized() const override;
...@@ -79,13 +79,13 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter ...@@ -79,13 +79,13 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
int Read(IOBuffer* buf, int Read(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback) override; CompletionOnceCallback callback) override;
// Write() must not be called before Delegate::OnHeadersSent() is called. // Write() must not be called before Delegate::OnHeadersSent() is called.
// Write() always returns asynchronously. // Write() always returns asynchronously.
int Write(IOBuffer* buf, int Write(IOBuffer* buf,
int buf_len, int buf_len,
const CompletionCallback& callback, CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag& traffic_annotation) override; const NetworkTrafficAnnotationTag& traffic_annotation) override;
void Disconnect() override; void Disconnect() override;
...@@ -132,7 +132,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter ...@@ -132,7 +132,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
// Read callback saved for asynchronous reads. // Read callback saved for asynchronous reads.
// Whenever |read_data_| is not empty, |read_callback_| must be null. // 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 // Write length saved to be passed to |write_callback_|. This is necessary
// because SpdyStream::Delegate::OnDataSent() does not pass number of bytes // because SpdyStream::Delegate::OnDataSent() does not pass number of bytes
...@@ -140,7 +140,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter ...@@ -140,7 +140,7 @@ class NET_EXPORT_PRIVATE WebSocketSpdyStreamAdapter
int write_length_; int write_length_;
// Write callback saved for asynchronous writes (all writes are asynchronous). // Write callback saved for asynchronous writes (all writes are asynchronous).
CompletionCallback write_callback_; CompletionOnceCallback write_callback_;
NetLogWithSource net_log_; 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