xref: /aosp_15_r20/external/cronet/base/task/sequence_manager/fence.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/task/sequence_manager/fence.h"
6 
7 #include "base/check.h"
8 #include "base/json/values_util.h"
9 #include "base/task/sequence_manager/enqueue_order.h"
10 #include "base/task/sequence_manager/task_order.h"
11 #include "base/time/time.h"
12 #include "base/values.h"
13 
14 namespace base {
15 namespace sequence_manager {
16 namespace internal {
17 
Fence(const TaskOrder & task_order)18 Fence::Fence(const TaskOrder& task_order) : task_order_(task_order) {
19   DCHECK_NE(task_order_.enqueue_order(), EnqueueOrder::none());
20 }
21 
Fence(EnqueueOrder enqueue_order,TimeTicks delayed_run_time,int sequence_num)22 Fence::Fence(EnqueueOrder enqueue_order,
23              TimeTicks delayed_run_time,
24              int sequence_num)
25     : task_order_(enqueue_order, delayed_run_time, sequence_num) {}
26 
27 Fence::Fence(const Fence& other) = default;
28 
29 Fence& Fence::operator=(const Fence& other) = default;
30 
31 Fence::~Fence() = default;
32 
33 // static
BlockingFence()34 Fence Fence::BlockingFence() {
35   return CreateWithEnqueueOrder(EnqueueOrder::blocking_fence());
36 }
37 
38 // static
CreateWithEnqueueOrder(EnqueueOrder enqueue_order)39 Fence Fence::CreateWithEnqueueOrder(EnqueueOrder enqueue_order) {
40   return Fence(enqueue_order, TimeTicks(), 0);
41 }
42 
43 }  // namespace internal
44 }  // namespace sequence_manager
45 }  // namespace base
46