mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 20:48:21 +00:00
Add new features to IOSource::Manager, used by DNS_Mgr
- iosource_mgr can now track write events to file descriptors as well as read events. This adds an argument to both RegisterFd() and UnregisterFd() for setting the mode, defaulting to read. - IOSources can now implement a ProcessFd() method that allows them to handle events to single file descriptors instead of of having to loop through/track sets of them at processing time.
This commit is contained in:
parent
c2bf602d94
commit
f9f37b11c6
6 changed files with 179 additions and 63 deletions
|
@ -240,7 +240,9 @@ public:
|
|||
/**
|
||||
* Used by the c-ares socket call back to register/unregister a socket file descriptor.
|
||||
*/
|
||||
void RegisterSocket(int fd, bool active);
|
||||
void RegisterSocket(int fd, bool read, bool write);
|
||||
|
||||
ares_channel& GetChannel() { return channel; }
|
||||
|
||||
protected:
|
||||
friend class LookupCallback;
|
||||
|
@ -277,7 +279,8 @@ protected:
|
|||
void IssueAsyncRequests();
|
||||
|
||||
// IOSource interface.
|
||||
void Process() override;
|
||||
void Process() override { }
|
||||
void ProcessFd(int fd, int flags) override;
|
||||
void InitSource() override;
|
||||
const char* Tag() override { return "DNS_Mgr"; }
|
||||
double GetNextTimeout() override;
|
||||
|
@ -337,6 +340,7 @@ protected:
|
|||
unsigned long failed = 0;
|
||||
|
||||
std::set<int> socket_fds;
|
||||
std::set<int> write_socket_fds;
|
||||
};
|
||||
|
||||
extern DNS_Mgr* dns_mgr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue