| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2012 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/host/chromoting_host.h" |    5 #include "remoting/host/chromoting_host.h" | 
|    6  |    6  | 
|    7 #include <algorithm> |    7 #include <algorithm> | 
|    8  |    8  | 
|    9 #include "base/bind.h" |    9 #include "base/bind.h" | 
|   10 #include "base/callback.h" |   10 #include "base/callback.h" | 
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  141   session_manager_->set_authenticator_factory(authenticator_factory.Pass()); |  141   session_manager_->set_authenticator_factory(authenticator_factory.Pass()); | 
|  142 } |  142 } | 
|  143  |  143  | 
|  144 void ChromotingHost::SetMaximumSessionDuration( |  144 void ChromotingHost::SetMaximumSessionDuration( | 
|  145     const base::TimeDelta& max_session_duration) { |  145     const base::TimeDelta& max_session_duration) { | 
|  146   max_session_duration_ = max_session_duration; |  146   max_session_duration_ = max_session_duration; | 
|  147 } |  147 } | 
|  148  |  148  | 
|  149 //////////////////////////////////////////////////////////////////////////// |  149 //////////////////////////////////////////////////////////////////////////// | 
|  150 // protocol::ClientSession::EventHandler implementation. |  150 // protocol::ClientSession::EventHandler implementation. | 
|  151 void ChromotingHost::OnSessionAuthenticated(ClientSession* client) { |  151 bool ChromotingHost::OnSessionAuthenticated(ClientSession* client) { | 
|  152   DCHECK(CalledOnValidThread()); |  152   DCHECK(CalledOnValidThread()); | 
|  153  |  153  | 
|  154   login_backoff_.Reset(); |  154   login_backoff_.Reset(); | 
|  155  |  155  | 
|  156   // Disconnect all other clients. |it| should be advanced before Disconnect() |  156   // Disconnect all other clients. |it| should be advanced before Disconnect() | 
|  157   // is called to avoid it becoming invalid when the client is removed from |  157   // is called to avoid it becoming invalid when the client is removed from | 
|  158   // the list. |  158   // the list. | 
|  159   ClientList::iterator it = clients_.begin(); |  159   ClientList::iterator it = clients_.begin(); | 
|  160   while (it != clients_.end()) { |  160   while (it != clients_.end()) { | 
|  161     ClientSession* other_client = *it++; |  161     ClientSession* other_client = *it++; | 
|  162     if (other_client != client) |  162     if (other_client != client) | 
|  163       other_client->DisconnectSession(); |  163       other_client->DisconnectSession(); | 
|  164   } |  164   } | 
|  165  |  165  | 
|  166   // Disconnects above must have destroyed all other clients. |  166   // Disconnects above must have destroyed all other clients. | 
|  167   DCHECK_EQ(clients_.size(), 1U); |  167   DCHECK_EQ(clients_.size(), 1U); | 
|  168  |  168  | 
|  169   // Notify observers that there is at least one authenticated client. |  169   // Notify observers that there is at least one authenticated client. | 
|  170   const std::string& jid = client->client_jid(); |  170   const std::string& jid = client->client_jid(); | 
|  171  |  171  | 
|  172   reject_authenticating_client_ = false; |  172   reject_authenticating_client_ = false; | 
|  173  |  173  | 
|  174   authenticating_client_ = true; |  174   authenticating_client_ = true; | 
|  175   FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |  175   FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, | 
|  176                     OnClientAuthenticated(jid)); |  176                     OnClientAuthenticated(jid)); | 
|  177   authenticating_client_ = false; |  177   authenticating_client_ = false; | 
|  178  |  178  | 
|  179   if (reject_authenticating_client_) { |  179   return !reject_authenticating_client_; | 
|  180     client->DisconnectSession(); |  | 
|  181   } |  | 
|  182 } |  180 } | 
|  183  |  181  | 
|  184 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) { |  182 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) { | 
|  185   DCHECK(CalledOnValidThread()); |  183   DCHECK(CalledOnValidThread()); | 
|  186  |  184  | 
|  187   // Notify observers. |  185   // Notify observers. | 
|  188   FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, |  186   FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, | 
|  189                     OnClientConnected(client->client_jid())); |  187                     OnClientConnected(client->client_jid())); | 
|  190 } |  188 } | 
|  191  |  189  | 
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  297   DCHECK(CalledOnValidThread()); |  295   DCHECK(CalledOnValidThread()); | 
|  298  |  296  | 
|  299   while (!clients_.empty()) { |  297   while (!clients_.empty()) { | 
|  300     size_t size = clients_.size(); |  298     size_t size = clients_.size(); | 
|  301     clients_.front()->DisconnectSession(); |  299     clients_.front()->DisconnectSession(); | 
|  302     CHECK_EQ(clients_.size(), size - 1); |  300     CHECK_EQ(clients_.size(), size - 1); | 
|  303   } |  301   } | 
|  304 } |  302 } | 
|  305  |  303  | 
|  306 }  // namespace remoting |  304 }  // namespace remoting | 
| OLD | NEW |