Removes PostStop from RepeatingTaskHandle.
It isn't used and can easily be replaced with posting a task, as shown in the changes to the unit test. Also removing the sequenced task checker that no longer adds any value. We now ensure that the task can only be stopped with a reference to the task queue it runs on. Bug: webrtc:10365 Change-Id: Ie8aef6f742c55db1fb686f20c2a28c606c721fa0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129725 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27292}
This commit is contained in:

committed by
Commit Bot

parent
07122bc87e
commit
46b4a0f3fa
@ -60,6 +60,18 @@ class MoveOnlyClosure {
|
||||
private:
|
||||
MockClosure* mock_;
|
||||
};
|
||||
|
||||
// Helper closure class to stop repeating task on a task queue. This is
|
||||
// equivalent to [handle{move(handle)}] { handle.Stop(); } in c++14.
|
||||
class TaskHandleStopper {
|
||||
public:
|
||||
explicit TaskHandleStopper(RepeatingTaskHandle handle)
|
||||
: handle_(std::move(handle)) {}
|
||||
void operator()() { handle_.Stop(); }
|
||||
|
||||
private:
|
||||
RepeatingTaskHandle handle_;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
TEST(RepeatingTaskTest, TaskIsStoppedOnStop) {
|
||||
@ -79,7 +91,7 @@ TEST(RepeatingTaskTest, TaskIsStoppedOnStop) {
|
||||
Sleep(kShortInterval * (kShortIntervalCount + kMargin));
|
||||
EXPECT_EQ(counter.load(), kShortIntervalCount);
|
||||
|
||||
handle.PostStop();
|
||||
task_queue.PostTask(TaskHandleStopper(std::move(handle)));
|
||||
// Sleep long enough that the task would run at least once more if not
|
||||
// stopped.
|
||||
Sleep(kLongInterval * 2);
|
||||
@ -132,7 +144,7 @@ TEST(RepeatingTaskTest, CancelDelayedTaskBeforeItRuns) {
|
||||
TaskQueueForTest task_queue("queue");
|
||||
auto handle = RepeatingTaskHandle::DelayedStart(
|
||||
task_queue.Get(), TimeDelta::ms(100), MoveOnlyClosure(&mock));
|
||||
handle.PostStop();
|
||||
task_queue.PostTask(TaskHandleStopper(std::move(handle)));
|
||||
EXPECT_TRUE(done.Wait(kTimeout.ms()));
|
||||
}
|
||||
|
||||
@ -144,7 +156,7 @@ TEST(RepeatingTaskTest, CancelTaskAfterItRuns) {
|
||||
TaskQueueForTest task_queue("queue");
|
||||
auto handle =
|
||||
RepeatingTaskHandle::Start(task_queue.Get(), MoveOnlyClosure(&mock));
|
||||
handle.PostStop();
|
||||
task_queue.PostTask(TaskHandleStopper(std::move(handle)));
|
||||
EXPECT_TRUE(done.Wait(kTimeout.ms()));
|
||||
}
|
||||
|
||||
@ -211,9 +223,9 @@ TEST(RepeatingTaskTest, Example) {
|
||||
RepeatingTaskHandle handle;
|
||||
object->StartPeriodicTask(&handle, task_queue.Get());
|
||||
// Restart the task
|
||||
handle.PostStop();
|
||||
task_queue.PostTask(TaskHandleStopper(std::move(handle)));
|
||||
object->StartPeriodicTask(&handle, task_queue.Get());
|
||||
handle.PostStop();
|
||||
task_queue.PostTask(TaskHandleStopper(std::move(handle)));
|
||||
struct Destructor {
|
||||
void operator()() { object.reset(); }
|
||||
std::unique_ptr<ObjectOnTaskQueue> object;
|
||||
|
Reference in New Issue
Block a user