mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 19:38:12 +00:00
Port Terminal to LibGUI.
To facilitate listening for action on arbitrary file descriptors, I've added a GNotifier class. It's quite simple but very useful: GNotifier notifier(fd, GNotifier::Read); notifier.on_ready_to_read = [this] (GNotifier& fd) { // read from fd or whatever else you like :^) }; The callback will get invoked by GEventLoop when select() says we have something to read on the fd.
This commit is contained in:
parent
ae4811fbae
commit
53d34a0885
15 changed files with 268 additions and 151 deletions
25
LibGUI/GNotifier.h
Normal file
25
LibGUI/GNotifier.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/Function.h>
|
||||
|
||||
class GNotifier {
|
||||
public:
|
||||
enum Event {
|
||||
None = 0,
|
||||
Read = 1,
|
||||
Write = 2,
|
||||
Exceptional = 4,
|
||||
};
|
||||
GNotifier(int fd, unsigned event_mask);
|
||||
~GNotifier();
|
||||
|
||||
Function<void(GNotifier&)> on_ready_to_read;
|
||||
Function<void(GNotifier&)> on_ready_to_write;
|
||||
|
||||
int fd() const { return m_fd; }
|
||||
unsigned event_mask() const { return m_event_mask; }
|
||||
|
||||
private:
|
||||
int m_fd { -1 };
|
||||
unsigned m_event_mask { 0 };
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue