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

Unified Diff: remoting/protocol/connection_to_client.cc

Issue 7508044: Remove video_channel() from Session interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 5 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: remoting/protocol/connection_to_client.cc
diff --git a/remoting/protocol/connection_to_client.cc b/remoting/protocol/connection_to_client.cc
index f5cf592e444f42b5e4ca99ff805cffcf4eba562e..f61aded408d3cbeed0fde6b7ea660cf1f415db09 100644
--- a/remoting/protocol/connection_to_client.cc
+++ b/remoting/protocol/connection_to_client.cc
@@ -4,6 +4,7 @@
#include "remoting/protocol/connection_to_client.h"
+#include "base/bind.h"
#include "google/protobuf/message.h"
#include "net/base/io_buffer.h"
#include "remoting/protocol/client_control_sender.h"
@@ -96,20 +97,18 @@ void ConnectionToClient::OnSessionStateChange(protocol::Session::State state) {
client_control_sender_.reset(
new ClientControlSender(session_->control_channel()));
video_writer_.reset(VideoWriter::Create(session_->config()));
- video_writer_->Init(session_.get());
-
+ video_writer_->Init(
+ session_.get(), base::Bind(&ConnectionToClient::OnVideoInitialized,
+ base::Unretained(this)));
dispatcher_.reset(new HostMessageDispatcher());
dispatcher_->Initialize(this, host_stub_, input_stub_);
-
- handler_->OnConnectionOpened(this);
break;
case protocol::Session::CLOSED:
CloseChannels();
handler_->OnConnectionClosed(this);
break;
case protocol::Session::FAILED:
- CloseChannels();
- handler_->OnConnectionFailed(this);
+ CloseOnError();
break;
default:
// We shouldn't receive other states.
@@ -117,6 +116,20 @@ void ConnectionToClient::OnSessionStateChange(protocol::Session::State state) {
}
}
+void ConnectionToClient::OnVideoInitialized(bool successful) {
+ if (!successful) {
+ CloseOnError();
+ return;
+ }
+
+ handler_->OnConnectionOpened(this);
+}
+
+void ConnectionToClient::CloseOnError() {
+ CloseChannels();
+ handler_->OnConnectionFailed(this);
+}
+
void ConnectionToClient::CloseChannels() {
if (video_writer_.get())
video_writer_->Close();

Powered by Google App Engine
This is Rietveld 408576698