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

Unified Diff: blimp/net/tcp_connection.cc

Issue 2439403003: Refactor BlimpConnection to TCPConnection (Closed)
Patch Set: Added missing Engine Transport Created 4 years, 2 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
Index: blimp/net/tcp_connection.cc
diff --git a/blimp/net/blimp_connection.cc b/blimp/net/tcp_connection.cc
similarity index 53%
copy from blimp/net/blimp_connection.cc
copy to blimp/net/tcp_connection.cc
index 57a3580d74394de21c9ab30ecba1141a29171e29..e6ba35a70ae03d91214266f10a86c063f6c04762 100644
--- a/blimp/net/blimp_connection.cc
+++ b/blimp/net/tcp_connection.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "blimp/net/blimp_connection.h"
+#include "blimp/net/tcp_connection.h"
#include <utility>
@@ -69,12 +69,13 @@ void BlimpMessageSender::ProcessMessage(
DCHECK(error_observer_);
VLOG(1) << "Sending " << *message;
- if (message->ByteSize() > static_cast<int>(kMaxPacketPayloadSizeBytes)) {
+ const int msg_byte_size = message->ByteSize();
Wez 2016/11/09 22:47:17 nit: Per style-guide, this should be message_bytes
+ if (msg_byte_size > static_cast<int>(kMaxPacketPayloadSizeBytes)) {
DLOG(ERROR) << "Message rejected (too large): " << *message;
callback.Run(net::ERR_MSG_TOO_BIG);
return;
}
- if (!message->SerializeToArray(buffer_->data(), message->GetCachedSize())) {
+ if (!message->SerializeToArray(buffer_->data(), msg_byte_size)) {
DLOG(ERROR) << "Failed to serialize message.";
callback.Run(net::ERR_INVALID_ARGUMENT);
return;
@@ -86,7 +87,7 @@ void BlimpMessageSender::ProcessMessage(
writer_->WritePacket(
scoped_refptr<net::DrainableIOBuffer>(
- new net::DrainableIOBuffer(buffer_.get(), message->ByteSize())),
+ new net::DrainableIOBuffer(buffer_.get(), msg_byte_size)),
base::Bind(&BlimpMessageSender::OnWritePacketComplete,
weak_factory_.GetWeakPtr()));
}
@@ -107,93 +108,28 @@ void BlimpMessageSender::OnWritePacketComplete(int result) {
process_callback.Run(result);
}
-// MessageProcessor filter used to route EndConnection messages through to
-// OnConnectionError notifications on the owning BlimpConnection.
-class BlimpConnection::EndConnectionFilter : public BlimpMessageProcessor {
- public:
- explicit EndConnectionFilter(BlimpConnection* connection);
-
- void set_message_handler(BlimpMessageProcessor* message_handler) {
- message_handler_ = message_handler;
- }
-
- // BlimpMessageProcessor implementation.
- void ProcessMessage(std::unique_ptr<BlimpMessage> message,
- const net::CompletionCallback& callback) override;
-
- private:
- // Owning BlimpConnection, on which to call OnConnectionError.
- BlimpConnection* connection_;
-
- // Caller-provided message handler to forward non-EndConnection messages to.
- BlimpMessageProcessor* message_handler_;
-
- DISALLOW_COPY_AND_ASSIGN(EndConnectionFilter);
-};
-
-BlimpConnection::EndConnectionFilter::EndConnectionFilter(
- BlimpConnection* connection)
- : connection_(connection), message_handler_(nullptr) {}
-
-void BlimpConnection::EndConnectionFilter::ProcessMessage(
- std::unique_ptr<BlimpMessage> message,
- const net::CompletionCallback& callback) {
- if (message->has_protocol_control() &&
- message->protocol_control().has_end_connection()) {
- // Report the EndConnection reason to connection error observers.
- connection_->OnConnectionError(
- message->protocol_control().end_connection().reason());
-
- // Caller must ensure |callback| safe to call after OnConnectionError.
- callback.Run(message->protocol_control().end_connection().reason());
- return;
- }
-
- message_handler_->ProcessMessage(std::move(message), callback);
-}
-
-BlimpConnection::BlimpConnection(std::unique_ptr<MessagePort> message_port)
- : message_port_(std::move(message_port)),
+TCPConnection::TCPConnection(std::unique_ptr<MessagePort> message_port)
+ : BlimpConnection(),
+ message_port_(std::move(message_port)),
message_pump_(new BlimpMessagePump(message_port_->reader())),
- outgoing_msg_processor_(new BlimpMessageSender(message_port_->writer())),
- end_connection_filter_(new EndConnectionFilter(this)) {
+ outgoing_msg_processor_(new BlimpMessageSender(message_port_->writer())) {
message_pump_->set_error_observer(this);
outgoing_msg_processor_->set_error_observer(this);
}
-BlimpConnection::BlimpConnection() {}
-
-BlimpConnection::~BlimpConnection() {
- VLOG(1) << "BlimpConnection destroyed.";
-}
-
-void BlimpConnection::AddConnectionErrorObserver(
- ConnectionErrorObserver* observer) {
- error_observers_.AddObserver(observer);
-}
-
-void BlimpConnection::RemoveConnectionErrorObserver(
- ConnectionErrorObserver* observer) {
- error_observers_.RemoveObserver(observer);
+TCPConnection::~TCPConnection() {
+ VLOG(1) << "TCPConnection destroyed.";
}
-void BlimpConnection::SetIncomingMessageProcessor(
+void TCPConnection::SetIncomingMessageProcessor(
BlimpMessageProcessor* processor) {
- end_connection_filter_->set_message_handler(processor);
- message_pump_->SetMessageProcessor(processor ? end_connection_filter_.get()
- : nullptr);
+ AddEndConnectionProcessor(processor);
+ message_pump_->SetMessageProcessor(
+ (processor != nullptr) ? GetEndConnectionProcessor() : nullptr);
Wez 2016/11/09 22:47:17 nit: You don't need the != nullptr here.
}
-BlimpMessageProcessor* BlimpConnection::GetOutgoingMessageProcessor() {
+BlimpMessageProcessor* TCPConnection::GetOutgoingMessageProcessor() {
return outgoing_msg_processor_.get();
}
-void BlimpConnection::OnConnectionError(int error) {
- VLOG(1) << "OnConnectionError, error=" << error;
-
- // Propagate the error to all observers.
- for (auto& observer : error_observers_)
- observer.OnConnectionError(error);
-}
-
} // namespace blimp

Powered by Google App Engine
This is Rietveld 408576698