OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ | 5 #ifndef REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ |
6 #define REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ | 6 #define REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 // |host_offline_reason|, or the |timeout| is reached. Deleting | 83 // |host_offline_reason|, or the |timeout| is reached. Deleting |
84 // |this| will release |network_task_runner_| and allow the host | 84 // |this| will release |network_task_runner_| and allow the host |
85 // process to exit. | 85 // process to exit. |
86 void SendHostOfflineReasonAndDelete(const std::string& host_offline_reason, | 86 void SendHostOfflineReasonAndDelete(const std::string& host_offline_reason, |
87 const base::TimeDelta& timeout); | 87 const base::TimeDelta& timeout); |
88 | 88 |
89 private: | 89 private: |
90 HostSignalingManager( | 90 HostSignalingManager( |
91 scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory_for_listener, | 91 scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory_for_listener, |
92 const scoped_refptr<AutoThreadTaskRunner>& network_task_runner, | 92 const scoped_refptr<AutoThreadTaskRunner>& network_task_runner, |
93 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier, | |
94 scoped_ptr<SignalStrategy> signal_strategy, | 93 scoped_ptr<SignalStrategy> signal_strategy, |
95 scoped_ptr<SignalingConnector> signaling_connector, | 94 scoped_ptr<SignalingConnector> signaling_connector, |
96 scoped_ptr<HeartbeatSender> heartbeat_sender); | 95 scoped_ptr<HeartbeatSender> heartbeat_sender); |
97 | 96 |
98 void OnHostOfflineReasonAck(bool success); | 97 void OnHostOfflineReasonAck(bool success); |
99 | 98 |
100 // Used to bind HeartbeatSender and SignalingConnector callbacks to |listener| | 99 // Used to bind HeartbeatSender and SignalingConnector callbacks to |listener| |
101 // in a way that allows "detaching" the |listener| when either |this| is | 100 // in a way that allows "detaching" the |listener| when either |this| is |
102 // destroyed or when SendHostOfflineReasonAndDelete method is called. | 101 // destroyed or when SendHostOfflineReasonAndDelete method is called. |
103 scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory_for_listener_; | 102 scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory_for_listener_; |
104 | 103 |
105 // By holding a reference to |network_task_runner_|, HostSignalingManager is | 104 // By holding a reference to |network_task_runner_|, HostSignalingManager is |
106 // extending the lifetime of the host process. This is needed for the case | 105 // extending the lifetime of the host process. This is needed for the case |
107 // where an instance of HostProcess has already been destroyed, but we want | 106 // where an instance of HostProcess has already been destroyed, but we want |
108 // to keep the process running while we try to establish a connection and send | 107 // to keep the process running while we try to establish a connection and send |
109 // host-offline-reason. | 108 // host-offline-reason. |
110 scoped_refptr<AutoThreadTaskRunner> network_task_runner_; | 109 scoped_refptr<AutoThreadTaskRunner> network_task_runner_; |
111 | 110 |
112 // Order of fields below is important for destroying them in the right order. | 111 // |heartbeat_sender_| and |signaling_connector_| have to be destroyed before |
113 // - |heartbeat_sender_| and |signaling_connector_| have to be destroyed | 112 // |signal_strategy_| because their destructors need to call |
114 // before |signal_strategy_| because their destructors need to call | 113 // signal_strategy_->RemoveListener(this) |
115 // signal_strategy_->RemoveListener(this) | |
116 // - |signaling_connector_| has to be destroyed before | |
117 // |network_change_notifier_| because its destructor needs to deregister | |
118 // network change notifications | |
119 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; | |
120 scoped_ptr<SignalStrategy> signal_strategy_; | 114 scoped_ptr<SignalStrategy> signal_strategy_; |
121 scoped_ptr<SignalingConnector> signaling_connector_; | 115 scoped_ptr<SignalingConnector> signaling_connector_; |
122 scoped_ptr<HeartbeatSender> heartbeat_sender_; | 116 scoped_ptr<HeartbeatSender> heartbeat_sender_; |
123 | 117 |
124 DISALLOW_COPY_AND_ASSIGN(HostSignalingManager); | 118 DISALLOW_COPY_AND_ASSIGN(HostSignalingManager); |
125 }; | 119 }; |
126 | 120 |
127 } // namespace remoting | 121 } // namespace remoting |
128 | 122 |
129 #endif // REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ | 123 #endif // REMOTING_HOST_HOST_SIGNALING_MANAGER_H_ |
OLD | NEW |