Index: remoting/host/chromoting_host.h |
diff --git a/remoting/host/chromoting_host.h b/remoting/host/chromoting_host.h |
index 3cbf2b7f6c950043bbeb8f1908b4e347af7a7342..bd731ca5643b36f258aa439eaae75af5d1fcbea8 100644 |
--- a/remoting/host/chromoting_host.h |
+++ b/remoting/host/chromoting_host.h |
@@ -12,9 +12,7 @@ |
#include "base/observer_list.h" |
#include "base/threading/thread.h" |
#include "net/base/backoff_entry.h" |
-#include "remoting/codec/video_encoder.h" |
#include "remoting/host/client_session.h" |
-#include "remoting/host/desktop_environment.h" |
#include "remoting/host/host_key_pair.h" |
#include "remoting/host/host_status_observer.h" |
#include "remoting/host/mouse_move_observer.h" |
@@ -31,13 +29,8 @@ class SessionConfig; |
class CandidateSessionConfig; |
} // namespace protocol |
-class AudioEncoder; |
-class AudioScheduler; |
class ChromotingHostContext; |
-class DesktopEnvironment; |
-class Encoder; |
-class ScreenRecorder; |
-class VideoFrameCapturer; |
+class DesktopEnvironmentFactory; |
// A class to implement the functionality of a host process. |
// |
@@ -69,10 +62,11 @@ class ChromotingHost : public base::RefCountedThreadSafe<ChromotingHost>, |
public: |
// The caller must ensure that |context|, |signal_strategy| and |
// |environment| out-live the host. |
- ChromotingHost(ChromotingHostContext* context, |
- SignalStrategy* signal_strategy, |
- DesktopEnvironment* environment, |
- scoped_ptr<protocol::SessionManager> session_manager); |
+ ChromotingHost( |
+ ChromotingHostContext* context, |
+ SignalStrategy* signal_strategy, |
+ DesktopEnvironmentFactory* desktop_environment_factory, |
+ scoped_ptr<protocol::SessionManager> session_manager); |
// Asynchronously start the host process. |
// |
@@ -154,7 +148,7 @@ class ChromotingHost : public base::RefCountedThreadSafe<ChromotingHost>, |
friend class base::RefCountedThreadSafe<ChromotingHost>; |
friend class ChromotingHostTest; |
- typedef std::vector<ClientSession*> ClientList; |
+ typedef std::vector<scoped_refptr<ClientSession> > ClientList; |
enum State { |
kInitial, |
@@ -163,21 +157,12 @@ class ChromotingHost : public base::RefCountedThreadSafe<ChromotingHost>, |
kStopped, |
}; |
- // Creates encoder for the specified configuration. |
- static VideoEncoder* CreateVideoEncoder( |
- const protocol::SessionConfig& config); |
- |
- // Creates an audio encoder for the specified configuration. |
- static scoped_ptr<AudioEncoder> CreateAudioEncoder( |
- const protocol::SessionConfig& config); |
- |
virtual ~ChromotingHost(); |
- void StopScreenRecorder(); |
- void StopAudioScheduler(); |
- void OnRecorderStopped(); |
+ // Called when a client session is stopped completely. |
+ void OnClientStopped(); |
- // Called from Shutdown() or OnScreenRecorderStopped() to finish shutdown. |
+ // Called from Shutdown() to finish shutdown. |
void ShutdownFinish(); |
// Unless specified otherwise all members of this class must be |
@@ -185,7 +170,7 @@ class ChromotingHost : public base::RefCountedThreadSafe<ChromotingHost>, |
// Parameters specified when the host was created. |
ChromotingHostContext* context_; |
- DesktopEnvironment* desktop_environment_; |
+ DesktopEnvironmentFactory* desktop_environment_factory_; |
scoped_ptr<protocol::SessionManager> session_manager_; |
// Connection objects. |
@@ -197,15 +182,10 @@ class ChromotingHost : public base::RefCountedThreadSafe<ChromotingHost>, |
// The connections to remote clients. |
ClientList clients_; |
- // Schedulers for audio and video capture. |
- // TODO(sergeyu): Do we need to have one set of schedulers per client? |
- scoped_refptr<ScreenRecorder> recorder_; |
- scoped_refptr<AudioScheduler> audio_scheduler_; |
- |
- // Number of screen recorders and audio schedulers that are currently being |
- // stopped. Used to delay shutdown if one or more recorders/schedulers are |
- // asynchronously shutting down. |
- int stopping_recorders_; |
+ // The number of allocated |ClientSession| objects. |clients_count_| can be |
+ // greater than |clients_.size()| because it also includes the objects that |
+ // are about to be deleted. |
+ int clients_count_; |
// Tracks the internal state of the host. |
State state_; |