Index: base/message_loop_proxy_impl.h |
=================================================================== |
--- base/message_loop_proxy_impl.h (revision 0) |
+++ base/message_loop_proxy_impl.h (revision 0) |
@@ -0,0 +1,61 @@ |
+// 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. |
+ |
+#ifndef BASE_MESSAGE_LOOP_PROXY_IMPL_H_ |
+#define BASE_MESSAGE_LOOP_PROXY_IMPL_H_ |
+ |
+#include "base/lock.h" |
+#include "base/message_loop.h" |
+#include "base/message_loop_proxy.h" |
+ |
+namespace base { |
+ |
+// A stock implementation of MessageLoopProxy that takes in a MessageLoop |
+// and keeps track of its lifetime using the MessageLoop DestructionObserver. |
+// For now a MessageLoopProxyImpl can only be created for the current thread. |
+class MessageLoopProxyImpl : public MessageLoopProxy, |
+ public MessageLoop::DestructionObserver { |
+ public: |
+ ~MessageLoopProxyImpl(); |
+ |
+ // MessageLoopProxy implementation |
+ virtual bool PostTask(const tracked_objects::Location& from_here, |
+ Task* task); |
+ virtual bool PostDelayedTask(const tracked_objects::Location& from_here, |
+ Task* task, int64 delay_ms); |
+ virtual bool PostNonNestableTask(const tracked_objects::Location& from_here, |
+ Task* task); |
+ virtual bool PostNonNestableDelayedTask( |
+ const tracked_objects::Location& from_here, |
+ Task* task, |
+ int64 delay_ms); |
+ virtual bool BelongsToCurrentThread(); |
+ |
+// MessageLoop::DestructionObserver implementation |
+ void WillDestroyCurrentMessageLoop(); |
+ |
+ protected: |
+ // Override OnDestruct so that we can delete the object on the target message |
+ // loop if it still exists. |
+ virtual void OnDestruct(); |
+ |
+ private: |
+ MessageLoopProxyImpl(); |
+ bool PostTaskHelper(const tracked_objects::Location& from_here, |
+ Task* task, int64 delay_ms, bool nestable); |
+ |
+ // For the factory method to work |
+ friend class MessageLoopProxy; |
+ |
+ // The lock that protects access to target_message_loop_. |
+ Lock message_loop_lock_; |
+ MessageLoop* target_message_loop_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MessageLoopProxyImpl); |
+}; |
+ |
+} // namespace base |
+ |
+#endif // BASE_MESSAGE_LOOP_PROXY_IMPL_H_ |
+ |
Property changes on: base\message_loop_proxy_impl.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |