SNode.C
Loading...
Searching...
No Matches
TimerEventPublisher.h
Go to the documentation of this file.
1/*
2 * SNode.C - a slim toolkit for network communication
3 * Copyright (C) Volker Christian <me@vchrist.at>
4 * 2020, 2021, 2022, 2023, 2024, 2025
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef CORE_TIMEREVENTPUBLISHER_H
21#define CORE_TIMEREVENTPUBLISHER_H
22
23namespace core {
25} // namespace core
26
27#ifndef DOXYGEN_SHOULD_SKIP_THIS
28
29#include "utils/Timeval.h"
30
31#include <list>
32#include <set>
33
34#endif /* DOXYGEN_SHOULD_SKIP_THIS */
35
36namespace core {
37
39 public:
41
42 utils::Timeval getNextTimeout(const utils::Timeval& currentTime);
43
44 void spanActiveEvents(const utils::Timeval& currentTime);
46
47 void remove(TimerEventReceiver* timer);
48
49 void erase(TimerEventReceiver* timer);
50 void insert(TimerEventReceiver* timer);
51
52 bool empty();
53
54 void stop();
55
56 private:
58 public:
59 bool operator()(const TimerEventReceiver* t1, const TimerEventReceiver* t2) const;
60 };
61
64 };
65
66} // namespace core
67
68#endif // CORE_TIMEREVENTPUBLISHER_H
static void execDlCloseDeleyed()
void execute(const utils::Timeval &currentTime)
virtual int monitorDescriptors(utils::Timeval &tickTimeOut, const sigset_t &sigMask)=0
void releaseExpiredResources(const utils::Timeval &currentTime)
utils::Timeval getNextTimeout(const utils::Timeval &currentTime)
void checkTimedOutEvents(const utils::Timeval &currentTime)
TickStatus waitForEvents(const utils::Timeval &tickTimeOut, const utils::Timeval &currentTime, const sigset_t &sigMask, int &activeDescriptorCount)
TimerEventPublisher & getTimerEventPublisher()
TickStatus tick(const utils::Timeval &tickTimeOut, const sigset_t &sigMask)
void spanActiveEvents(const utils::Timeval &currentTime, int activeDescriptorCount)
void span(core::Event *event)
virtual void spanActiveEvents(int activeDescriptorCount)=0
DescriptorEventPublisher & getDescriptorEventPublisher(DISP_TYPE dispType)
void relax(core::Event *event)
EventMultiplexer(DescriptorEventPublisher *readDescriptorEventPublisher, DescriptorEventPublisher *writeDescriptorEventPublisher, DescriptorEventPublisher *exceptionDescriptorEventPublisher)
void executeEventQueue(const utils::Timeval &currentTime)
core::TimerEventPublisher *const timerEventPublisher
bool operator()(const TimerEventReceiver *t1, const TimerEventReceiver *t2) const
void insert(TimerEventReceiver *timer)
std::list< TimerEventReceiver * > removedList
utils::Timeval getNextTimeout(const utils::Timeval &currentTime)
void spanActiveEvents(const utils::Timeval &currentTime)
void erase(TimerEventReceiver *timer)
std::set< TimerEventReceiver *, timernode_lt > timerList
void remove(TimerEventReceiver *timer)
static Timeval currentTime()
Definition Timeval.cpp:54
Timeval() noexcept
Definition Timeval.cpp:33
Timeval & operator=(const Timeval &timeVal)
Definition Timeval.cpp:61
TickStatus
Definition TickStatus.h:29