OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "remoting/protocol/connection_to_client.h" | 5 #include "remoting/protocol/connection_to_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/message_loop_proxy.h" | 9 #include "base/message_loop_proxy.h" |
10 #include "google/protobuf/message.h" | 10 #include "google/protobuf/message.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 void ConnectionToClient::set_host_stub(protocol::HostStub* host_stub) { | 81 void ConnectionToClient::set_host_stub(protocol::HostStub* host_stub) { |
82 DCHECK(CalledOnValidThread()); | 82 DCHECK(CalledOnValidThread()); |
83 host_stub_ = host_stub; | 83 host_stub_ = host_stub; |
84 } | 84 } |
85 | 85 |
86 void ConnectionToClient::set_input_stub(protocol::InputStub* input_stub) { | 86 void ConnectionToClient::set_input_stub(protocol::InputStub* input_stub) { |
87 DCHECK(CalledOnValidThread()); | 87 DCHECK(CalledOnValidThread()); |
88 input_stub_ = input_stub; | 88 input_stub_ = input_stub; |
89 } | 89 } |
90 | 90 |
91 void ConnectionToClient::OnSessionStateChange(protocol::Session::State state) { | 91 void ConnectionToClient::OnSessionStateChange(Session::State state) { |
92 DCHECK(CalledOnValidThread()); | 92 DCHECK(CalledOnValidThread()); |
93 | 93 |
94 DCHECK(handler_); | 94 DCHECK(handler_); |
95 switch(state) { | 95 switch(state) { |
96 case protocol::Session::CONNECTING: | 96 case Session::INITIALIZING: |
97 // Don't care about this message. | 97 case Session::CONNECTING: |
| 98 case Session::CONNECTED: |
| 99 // Don't care about these events. |
98 break; | 100 break; |
99 | 101 |
100 case protocol::Session::CONNECTED: | 102 case Session::AUTHENTICATED: |
101 // Initialize channels. | 103 // Initialize channels. |
102 control_dispatcher_.reset(new HostControlDispatcher()); | 104 control_dispatcher_.reset(new HostControlDispatcher()); |
103 control_dispatcher_->Init(session_.get(), base::Bind( | 105 control_dispatcher_->Init(session_.get(), base::Bind( |
104 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); | 106 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); |
105 control_dispatcher_->set_host_stub(host_stub_); | 107 control_dispatcher_->set_host_stub(host_stub_); |
106 | 108 |
107 event_dispatcher_.reset(new HostEventDispatcher()); | 109 event_dispatcher_.reset(new HostEventDispatcher()); |
108 event_dispatcher_->Init(session_.get(), base::Bind( | 110 event_dispatcher_->Init(session_.get(), base::Bind( |
109 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); | 111 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); |
110 event_dispatcher_->set_input_stub(input_stub_); | 112 event_dispatcher_->set_input_stub(input_stub_); |
111 event_dispatcher_->set_sequence_number_callback(base::Bind( | 113 event_dispatcher_->set_sequence_number_callback(base::Bind( |
112 &ConnectionToClient::UpdateSequenceNumber, base::Unretained(this))); | 114 &ConnectionToClient::UpdateSequenceNumber, base::Unretained(this))); |
113 | 115 |
114 video_writer_.reset(VideoWriter::Create( | 116 video_writer_.reset(VideoWriter::Create( |
115 base::MessageLoopProxy::current(), session_->config())); | 117 base::MessageLoopProxy::current(), session_->config())); |
116 video_writer_->Init(session_.get(), base::Bind( | 118 video_writer_->Init(session_.get(), base::Bind( |
117 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); | 119 &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); |
118 | 120 |
119 break; | 121 break; |
120 | 122 |
121 case protocol::Session::CLOSED: | 123 case Session::CLOSED: |
122 CloseChannels(); | 124 CloseChannels(); |
123 handler_->OnConnectionClosed(this); | 125 handler_->OnConnectionClosed(this); |
124 break; | 126 break; |
125 | 127 |
126 case protocol::Session::FAILED: | 128 case Session::FAILED: |
127 CloseOnError(); | 129 CloseOnError(); |
128 break; | 130 break; |
129 | |
130 default: | |
131 // We shouldn't receive other states. | |
132 NOTREACHED(); | |
133 } | 131 } |
134 } | 132 } |
135 | 133 |
136 void ConnectionToClient::OnChannelInitialized(bool successful) { | 134 void ConnectionToClient::OnChannelInitialized(bool successful) { |
137 DCHECK(CalledOnValidThread()); | 135 DCHECK(CalledOnValidThread()); |
138 | 136 |
139 if (!successful) { | 137 if (!successful) { |
140 LOG(ERROR) << "Failed to connect a channel"; | 138 LOG(ERROR) << "Failed to connect a channel"; |
141 CloseOnError(); | 139 CloseOnError(); |
142 return; | 140 return; |
(...skipping 18 matching lines...) Expand all Loading... |
161 } | 159 } |
162 | 160 |
163 void ConnectionToClient::CloseChannels() { | 161 void ConnectionToClient::CloseChannels() { |
164 control_dispatcher_.reset(); | 162 control_dispatcher_.reset(); |
165 event_dispatcher_.reset(); | 163 event_dispatcher_.reset(); |
166 video_writer_.reset(); | 164 video_writer_.reset(); |
167 } | 165 } |
168 | 166 |
169 } // namespace protocol | 167 } // namespace protocol |
170 } // namespace remoting | 168 } // namespace remoting |
OLD | NEW |