11 #include "platform/Platform.h" 12 #include "threads/CriticalSection.h" 13 #include "threads/Thread.h" 18 #include <sys/epoll.h> 27 typedef void (*EventCallback)(
int id,
int fd,
short revents,
void *data);
34 EventCallback callback =
nullptr;
37 MonitoredFD(
int fd_,
short events_, EventCallback callback_,
void *callbackData_) :
38 fd(fd_), events(events_), callback(callback_), callbackData(callbackData_) {}
45 void AddFD(
const MonitoredFD& monitoredFD,
int&
id);
46 void AddFDs(
const std::vector<MonitoredFD>& monitoredFDs, std::vector<int>& ids);
48 void RemoveFD(
int id);
49 void RemoveFDs(
const std::vector<int>& ids);
52 void Process()
override;
55 void AddFDLocked(
const MonitoredFD& monitoredFD,
int&
id);
57 void AddPollDesc(
int id,
int fd,
short events);
58 void UpdatePollDescs();
60 void StartMonitoring();
63 std::map<int, MonitoredFD> m_monitoredFDs;
66 std::vector<int> m_monitoredFDbyPollDescs;
67 std::vector<struct pollfd> m_pollDescs;
72 CCriticalSection m_mutex;
73 CCriticalSection m_pollMutex;
void * callbackData
Callback to be called on events.
Definition: FDEventMonitor.h:35
Monitor a file descriptor with callback on poll() events.
Definition: FDEventMonitor.h:23
short events
Events to be monitored (see poll(2))
Definition: FDEventMonitor.h:32
MonitoredFD(int fd_, short events_, EventCallback callback_, void *callbackData_)
data parameter for EventCallback
Definition: FDEventMonitor.h:37
Definition: FDEventMonitor.h:29