Index: chrome/browser/chrome_thread_relay.h |
=================================================================== |
--- chrome/browser/chrome_thread_relay.h (revision 0) |
+++ chrome/browser/chrome_thread_relay.h (revision 0) |
@@ -0,0 +1,55 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// ChromeThreadRelay provides a convenient way to bounce work to a specific |
+// ChromeThread and then return results back to the originating thread. |
+// |
+// EXAMPLE: |
+// |
+// class MyRelay : public ChromeThreadRelay { |
+// public: |
+// MyRelay(const Params& params) : params_(params) { |
+// } |
+// protected: |
+// virtual void RunWork() { |
+// results_ = DoWork(params_); |
+// } |
+// virtual void RunCallback() { |
+// ... use results_ on the originating thread ... |
+// } |
+// private: |
+// Params params_; |
+// Results_ results_; |
+// }; |
+ |
+#ifndef CHROME_BROWSER_CHROME_THREAD_RELAY_H_ |
+#define CHROME_BROWSER_CHROME_THREAD_RELAY_H_ |
+ |
+#include "base/ref_counted.h" |
+#include "chrome/browser/chrome_thread.h" |
+ |
+class ChromeThreadRelay |
+ : public base::RefCountedThreadSafe<ChromeThreadRelay> { |
+ public: |
+ ChromeThreadRelay(); |
+ |
+ void Start(ChromeThread::ID target_thread_id, |
+ const tracked_objects::Location& from_here); |
+ |
+ protected: |
+ friend class base::RefCountedThreadSafe<ChromeThreadRelay>; |
+ virtual ~ChromeThreadRelay() {} |
+ |
+ // Called to perform work on the FILE thread. |
+ virtual void RunWork() = 0; |
+ |
+ // Called to notify the callback on the origin thread. |
+ virtual void RunCallback() = 0; |
+ |
+ private: |
+ void ProcessOnTargetThread(); |
+ ChromeThread::ID origin_thread_id_; |
+}; |
+ |
+#endif // CHROME_BROWSER_CHROME_THREAD_RELAY_H_ |
Property changes on: chrome\browser\chrome_thread_relay.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |