Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 COMPONENTS_TIMER_RTC_ALARM_H_ | 5 #ifndef COMPONENTS_TIMER_RTC_ALARM_H_ |
| 6 #define COMPONENTS_TIMER_RTC_ALARM_H_ | 6 #define COMPONENTS_TIMER_RTC_ALARM_H_ |
| 7 | 7 |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 66 scoped_refptr<base::MessageLoopProxy> origin_message_loop_; | 66 scoped_refptr<base::MessageLoopProxy> origin_message_loop_; |
| 67 | 67 |
| 68 // The parent timer that should be informed when the timer fires. We may end | 68 // The parent timer that should be informed when the timer fires. We may end |
| 69 // up outliving the parent so we need to ensure the reference is valid before | 69 // up outliving the parent so we need to ensure the reference is valid before |
| 70 // we try to call it. | 70 // we try to call it. |
| 71 base::WeakPtr<AlarmTimer> parent_; | 71 base::WeakPtr<AlarmTimer> parent_; |
| 72 | 72 |
| 73 // Manages watching file descriptors. | 73 // Manages watching file descriptors. |
| 74 scoped_ptr<base::MessageLoopForIO::FileDescriptorWatcher> fd_watcher_; | 74 scoped_ptr<base::MessageLoopForIO::FileDescriptorWatcher> fd_watcher_; |
| 75 | 75 |
| 76 // These two variables are used for coordinating between the thread that | 76 // These two variables are used for coordinating between the thread that |
|
gromer
2014/12/05 20:13:41
Comments that say what something is "used for" ten
Chirantan Ekbote
2014/12/31 00:58:29
Ack. I'll try and clean up the explanation.
| |
| 77 // started the timer and the IO thread being used to watch the timer file | 77 // started the timer and the IO thread being used to watch the timer file |
| 78 // descriptor. When Reset() is called, the original thread increments | 78 // descriptor. When Reset() is called, the original thread increments |
| 79 // |origin_event_id_| and binds its value to ResetImpl(), which gets posted to | 79 // |origin_event_id_| and binds its value to ResetImpl(), which gets posted to |
| 80 // the IO thread. When the IO thread runs, it saves this value in | 80 // the IO thread. When the IO thread runs, it saves this value in |
| 81 // |io_event_id_|. Later, when the timer fires, the IO thread binds the value | 81 // |io_event_id_|. Later, when the timer fires, the IO thread binds the value |
| 82 // of |io_event_id_| to OnTimerFired() and posts it to the original thread. | 82 // of |io_event_id_| to OnTimerFired() and posts it to the original thread. |
| 83 // When the original thread runs OnTimerFired(), it calls | 83 // When the original thread runs OnTimerFired(), it calls |
| 84 // parent_->OnTimerFired() only if |origin_event_id_| matches the event id | 84 // parent_->OnTimerFired() only if |origin_event_id_| matches the event id |
| 85 // that was passed in to it. This is used to get around a race condition | 85 // that was passed in to it. This is used to get around a race condition |
| 86 // where the user resets the timer on the original thread, while the event is | 86 // where the user resets the timer on the original thread, while the event is |
| 87 // being fired on the IO thread at the same time. | 87 // being fired on the IO thread at the same time. |
| 88 int origin_event_id_; | 88 int origin_event_id_; |
| 89 int io_event_id_; | 89 int io_event_id_; |
| 90 | 90 |
| 91 DISALLOW_COPY_AND_ASSIGN(RtcAlarm); | 91 DISALLOW_COPY_AND_ASSIGN(RtcAlarm); |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 | |
| 94 } // namespace timers | 95 } // namespace timers |
| 95 #endif // COMPONENTS_TIMER_RTC_ALARM_H_ | 96 #endif // COMPONENTS_TIMER_RTC_ALARM_H_ |
| OLD | NEW |