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 #ifndef REMOTING_HOST_CLIENT_SESSION_H_ | 5 #ifndef REMOTING_HOST_CLIENT_SESSION_H_ |
6 #define REMOTING_HOST_CLIENT_SESSION_H_ | 6 #define REMOTING_HOST_CLIENT_SESSION_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 | 9 |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 } // namespace base | 31 } // namespace base |
32 | 32 |
33 namespace remoting { | 33 namespace remoting { |
34 | 34 |
35 class AudioEncoder; | 35 class AudioEncoder; |
36 class AudioScheduler; | 36 class AudioScheduler; |
37 struct ClientSessionTraits; | 37 struct ClientSessionTraits; |
38 class DesktopEnvironment; | 38 class DesktopEnvironment; |
39 class DesktopEnvironmentFactory; | 39 class DesktopEnvironmentFactory; |
40 class EventExecutor; | 40 class EventExecutor; |
| 41 class SessionController; |
41 class VideoEncoder; | 42 class VideoEncoder; |
42 class VideoScheduler; | 43 class VideoScheduler; |
43 | 44 |
44 // A ClientSession keeps a reference to a connection to a client, and maintains | 45 // A ClientSession keeps a reference to a connection to a client, and maintains |
45 // per-client state. | 46 // per-client state. |
46 class ClientSession | 47 class ClientSession |
47 : public base::RefCountedThreadSafe<ClientSession, ClientSessionTraits>, | 48 : public base::RefCountedThreadSafe<ClientSession, ClientSessionTraits>, |
48 public protocol::HostStub, | 49 public protocol::HostStub, |
49 public protocol::ConnectionToClient::EventHandler, | 50 public protocol::ConnectionToClient::EventHandler, |
50 public base::NonThreadSafe { | 51 public base::NonThreadSafe { |
(...skipping 20 matching lines...) Expand all Loading... |
71 virtual void OnSessionSequenceNumber(ClientSession* client, | 72 virtual void OnSessionSequenceNumber(ClientSession* client, |
72 int64 sequence_number) = 0; | 73 int64 sequence_number) = 0; |
73 | 74 |
74 // Called on notification of a route change event, when a channel is | 75 // Called on notification of a route change event, when a channel is |
75 // connected. | 76 // connected. |
76 virtual void OnSessionRouteChange( | 77 virtual void OnSessionRouteChange( |
77 ClientSession* client, | 78 ClientSession* client, |
78 const std::string& channel_name, | 79 const std::string& channel_name, |
79 const protocol::TransportRoute& route) = 0; | 80 const protocol::TransportRoute& route) = 0; |
80 | 81 |
81 // Called when the initial client resolution is received, and when it | |
82 // changes. | |
83 virtual void OnClientResolutionChanged(ClientSession* client, | |
84 const SkISize& size, | |
85 const SkIPoint& dpi) = 0; | |
86 | |
87 protected: | 82 protected: |
88 virtual ~EventHandler() {} | 83 virtual ~EventHandler() {} |
89 }; | 84 }; |
90 | 85 |
91 // |event_handler| must outlive |this|. |desktop_environment_factory| is only | 86 // |event_handler| must outlive |this|. |desktop_environment_factory| is only |
92 // used by the constructor to create an instance of DesktopEnvironment. | 87 // used by the constructor to create an instance of DesktopEnvironment. |
93 ClientSession( | 88 ClientSession( |
94 EventHandler* event_handler, | 89 EventHandler* event_handler, |
95 scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner, | 90 scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner, |
96 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, | 91 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner_; | 218 scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner_; |
224 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; | 219 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; |
225 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; | 220 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; |
226 | 221 |
227 // Schedulers for audio and video capture. | 222 // Schedulers for audio and video capture. |
228 scoped_refptr<AudioScheduler> audio_scheduler_; | 223 scoped_refptr<AudioScheduler> audio_scheduler_; |
229 scoped_refptr<VideoScheduler> video_scheduler_; | 224 scoped_refptr<VideoScheduler> video_scheduler_; |
230 | 225 |
231 scoped_ptr<EventExecutor> event_executor_; | 226 scoped_ptr<EventExecutor> event_executor_; |
232 | 227 |
| 228 scoped_ptr<SessionController> session_controller_; |
| 229 |
233 DISALLOW_COPY_AND_ASSIGN(ClientSession); | 230 DISALLOW_COPY_AND_ASSIGN(ClientSession); |
234 }; | 231 }; |
235 | 232 |
236 // Destroys |ClienSession| instances on the network thread. | 233 // Destroys |ClienSession| instances on the network thread. |
237 struct ClientSessionTraits { | 234 struct ClientSessionTraits { |
238 static void Destruct(const ClientSession* client); | 235 static void Destruct(const ClientSession* client); |
239 }; | 236 }; |
240 | 237 |
241 } // namespace remoting | 238 } // namespace remoting |
242 | 239 |
243 #endif // REMOTING_HOST_CLIENT_SESSION_H_ | 240 #endif // REMOTING_HOST_CLIENT_SESSION_H_ |
OLD | NEW |