Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Unified Diff: remoting/host/chromoting_host_context.h

Issue 10572005: Use SingleThreadTaskRunner instead of MessageLoopProxy in remoting/host. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/chromoting_host.cc ('k') | remoting/host/chromoting_host_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/chromoting_host_context.h
diff --git a/remoting/host/chromoting_host_context.h b/remoting/host/chromoting_host_context.h
index 7476986ad605ec9efba49d996a015103cf4e5086..7bd765d58c1284ee6d58691c9d57c4ea70a461d7 100644
--- a/remoting/host/chromoting_host_context.h
+++ b/remoting/host/chromoting_host_context.h
@@ -8,10 +8,15 @@
#include <string>
#include "base/gtest_prod_util.h"
+#include "base/memory/ref_counted.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread.h"
#include "remoting/jingle_glue/jingle_thread.h"
+namespace base {
+class SingleThreadTaskRunner;
+} // namespace base
+
namespace net {
class URLRequestContextGetter;
} // namespace net
@@ -23,7 +28,8 @@ namespace remoting {
class ChromotingHostContext {
public:
// Create a context.
- ChromotingHostContext(base::MessageLoopProxy* ui_message_loop);
+ ChromotingHostContext(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
virtual ~ChromotingHostContext();
// TODO(ajwong): Move the Start method out of this class. Then
@@ -35,13 +41,42 @@ class ChromotingHostContext {
virtual JingleThread* jingle_thread();
- virtual MessageLoop* main_message_loop();
- virtual MessageLoop* encode_message_loop();
- virtual base::MessageLoopProxy* network_message_loop();
- virtual MessageLoop* desktop_message_loop();
- virtual base::MessageLoopProxy* ui_message_loop();
- virtual base::MessageLoopProxy* io_message_loop();
- virtual base::MessageLoopProxy* file_message_loop();
+ // Task runned for the thread that is used for UI. In the NPAPI
Wez 2012/06/19 18:30:21 typo: runned -> runner typo: UI -> the UI
Sergey Ulanov 2012/06/19 19:01:41 Done.
+ // plugin this corresponds to the main plugin thread.
+ virtual base::SingleThreadTaskRunner* ui_task_runner();
+
+ // Task runner for the thread used by the ScreenRecorder to capture
+ // the screen.
+ virtual base::SingleThreadTaskRunner* capture_task_runner();
+
+ // Task runner for the thread used to encode video streams.
+ virtual base::SingleThreadTaskRunner* encode_task_runner();
+
+ // Network thread is the thread use for most networking IO. It runs
+ // libjingle's message loop, so libjingle code should be used only
+ // on this thread.
Wez 2012/06/19 18:30:21 nit: Reword this to the same style as the others e
Sergey Ulanov 2012/06/19 19:01:41 Done.
+ virtual base::SingleThreadTaskRunner* network_task_runner();
+
+ // Task runner for the thread that is used by the EventExecutor.
+ //
+ // TODO(sergeyu): Do we need a separate thread for EventExecutor?
+ // Can we use some other thread instead?
+ virtual base::SingleThreadTaskRunner* desktop_task_runner();
+
+ // Task runner for the thread that is used for network IO. Note that
+ // most of network IO for remoting happens on a different thread,
+ // the one that corresponds to network_task_runner(). This is
+ // because libjingle code needs to work on a thread that runs
+ // libjingle's message loop.
Wez 2012/06/19 18:30:21 This is confusing; what networking do we run on io
Sergey Ulanov 2012/06/19 19:01:41 All HTTP requests, specifically for oauth and rela
+ //
+ // TODO(sergeyu): Implement socket server for libjingle that works
+ // on a regular chromium thread and use it for network_task_runner()
+ // to avoid the need for io_task_runner().
+ virtual base::SingleThreadTaskRunner* io_task_runner();
+
+ // Task runner for the thread that is used for file IO.
Wez 2012/06/19 18:30:21 nit: Why do we keep this separate from the IO thre
Sergey Ulanov 2012/06/19 19:01:41 changed "file IO" to "blocking file IO".
+ virtual base::SingleThreadTaskRunner* file_task_runner();
+
const scoped_refptr<net::URLRequestContextGetter>&
url_request_context_getter();
@@ -51,15 +86,13 @@ class ChromotingHostContext {
// A thread that hosts all network operations.
JingleThread jingle_thread_;
- // TODO(sergeyu): The "main" thread is used just by the
- // capturer. Consider renaming it.
- base::Thread main_thread_;
+ // A thread that hosts screen capture.
+ base::Thread capture_thread_;
// A thread that hosts all encode operations.
base::Thread encode_thread_;
- // A thread that hosts desktop integration (capture, input injection, etc)
- // This is NOT a Chrome-style UI thread.
+ // A thread that hosts input injection.
base::Thread desktop_thread_;
// Thread for non-blocking IO operations.
@@ -68,7 +101,7 @@ class ChromotingHostContext {
// Thread for blocking IO operations.
base::Thread file_thread_;
- scoped_refptr<base::MessageLoopProxy> ui_message_loop_;
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
« no previous file with comments | « remoting/host/chromoting_host.cc ('k') | remoting/host/chromoting_host_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698