event_engine/iomgr_engine/timer_heap.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_TIMER_HEAP_H
20 #define GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_TIMER_HEAP_H
21 
23 
24 #include <cstddef>
25 #include <vector>
26 
27 namespace grpc_event_engine {
28 namespace iomgr_engine {
29 
30 struct Timer;
31 
32 class TimerHeap {
33  public:
34  /* return true if the new timer is the first timer in the heap */
35  bool Add(Timer* timer);
36 
37  void Remove(Timer* timer);
38  Timer* Top();
39  void Pop();
40 
41  bool is_empty();
42 
43  const std::vector<Timer*>& TestOnlyGetTimers() const { return timers_; }
44 
45  private:
46  void AdjustUpwards(size_t i, Timer* t);
47  void AdjustDownwards(size_t i, Timer* t);
49 
50  std::vector<Timer*> timers_;
51 };
52 
53 } // namespace iomgr_engine
54 } // namespace grpc_event_engine
55 
56 #endif /* GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_TIMER_HEAP_H */
grpc_event_engine::iomgr_engine::TimerHeap
Definition: event_engine/iomgr_engine/timer_heap.h:32
grpc_event_engine::iomgr_engine::TimerHeap::Top
Timer * Top()
Definition: event_engine/iomgr_engine/timer_heap.cc:102
grpc_event_engine::iomgr_engine::TimerHeap::Add
bool Add(Timer *timer)
Definition: event_engine/iomgr_engine/timer_heap.cc:81
grpc_event_engine::iomgr_engine::TimerHeap::TestOnlyGetTimers
const std::vector< Timer * > & TestOnlyGetTimers() const
Definition: event_engine/iomgr_engine/timer_heap.h:43
grpc_event_engine::iomgr_engine::TimerHeap::Pop
void Pop()
Definition: event_engine/iomgr_engine/timer_heap.cc:104
grpc_event_engine::iomgr_engine::TimerHeap::is_empty
bool is_empty()
Definition: event_engine/iomgr_engine/timer_heap.cc:100
grpc_event_engine::iomgr_engine::TimerHeap::NoteChangedPriority
void NoteChangedPriority(Timer *timer)
Definition: event_engine/iomgr_engine/timer_heap.cc:71
grpc_event_engine::iomgr_engine::TimerHeap::timers_
std::vector< Timer * > timers_
Definition: event_engine/iomgr_engine/timer_heap.h:50
grpc_event_engine::iomgr_engine::TimerHeap::Remove
void Remove(Timer *timer)
Definition: event_engine/iomgr_engine/timer_heap.cc:88
grpc_event_engine::iomgr_engine::Timer
Definition: event_engine/iomgr_engine/timer.h:44
grpc_event_engine::iomgr_engine::TimerHeap::AdjustUpwards
void AdjustUpwards(size_t i, Timer *t)
Definition: event_engine/iomgr_engine/timer_heap.cc:37
grpc_event_engine::iomgr_engine::TimerHeap::AdjustDownwards
void AdjustDownwards(size_t i, Timer *t)
Definition: event_engine/iomgr_engine/timer_heap.cc:52
grpc_event_engine
Definition: endpoint_config.h:24
timer
static uv_timer_t timer
Definition: test-callback-stack.c:34
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:39