Commit b2208566 authored by Orvid King's avatar Orvid King Committed by Facebook Github Bot

Add NetworkSocket support to EventHandler

Summary: Add overloads to various places and forward the file descriptor versions to the NetworkSocket forms.

Reviewed By: yfeldblum

Differential Revision: D10843917

fbshipit-source-id: f1b6958eac2f23dc788e1a3a3557baeed38284f1
parent fbbbcf80
......@@ -22,8 +22,8 @@
namespace folly {
EventHandler::EventHandler(EventBase* eventBase, int fd) {
folly_event_set(&event_, fd, 0, &EventHandler::libeventCallback, this);
EventHandler::EventHandler(EventBase* eventBase, NetworkSocket fd) {
folly_event_set(&event_, fd.toFd(), 0, &EventHandler::libeventCallback, this);
if (eventBase != nullptr) {
setEventBase(eventBase);
} else {
......@@ -121,17 +121,17 @@ void EventHandler::detachEventBase() {
event_.ev_base = nullptr;
}
void EventHandler::changeHandlerFD(int fd) {
void EventHandler::changeHandlerFD(NetworkSocket fd) {
ensureNotRegistered(__func__);
// event_set() resets event_base.ev_base, so manually restore it afterwards
struct event_base* evb = event_.ev_base;
folly_event_set(&event_, fd, 0, &EventHandler::libeventCallback, this);
folly_event_set(&event_, fd.toFd(), 0, &EventHandler::libeventCallback, this);
event_.ev_base = evb; // don't use event_base_set(), since evb may be nullptr
}
void EventHandler::initHandler(EventBase* eventBase, int fd) {
void EventHandler::initHandler(EventBase* eventBase, NetworkSocket fd) {
ensureNotRegistered(__func__);
folly_event_set(&event_, fd, 0, &EventHandler::libeventCallback, this);
folly_event_set(&event_, fd.toFd(), 0, &EventHandler::libeventCallback, this);
setEventBase(eventBase);
}
......
......@@ -22,6 +22,7 @@
#include <glog/logging.h>
#include <folly/io/async/EventUtil.h>
#include <folly/net/NetworkSocket.h>
#include <folly/portability/Event.h>
namespace folly {
......@@ -61,7 +62,11 @@ class EventHandler : private boost::noncopyable {
* descriptor must be set separately using initHandler() or
* changeHandlerFD() before the handler can be registered.
*/
explicit EventHandler(EventBase* eventBase = nullptr, int fd = -1);
explicit EventHandler(EventBase* eventBase, int fd)
: EventHandler(eventBase, NetworkSocket::fromFd(fd)) {}
explicit EventHandler(
EventBase* eventBase = nullptr,
NetworkSocket fd = NetworkSocket());
/**
* EventHandler destructor.
......@@ -135,7 +140,11 @@ class EventHandler : private boost::noncopyable {
*
* This may only be called when the handler is not currently registered.
*/
void changeHandlerFD(int fd);
void changeHandlerFD(int fd) {
changeHandlerFD(NetworkSocket::fromFd(fd));
}
void changeHandlerFD(NetworkSocket fd);
/**
* Attach the handler to a EventBase, and change the file descriptor.
......@@ -144,7 +153,11 @@ class EventHandler : private boost::noncopyable {
* a EventBase. This is primarily intended to be used to initialize
* EventHandler objects created using the default constructor.
*/
void initHandler(EventBase* eventBase, int fd);
void initHandler(EventBase* eventBase, int fd) {
initHandler(eventBase, NetworkSocket::fromFd(fd));
}
void initHandler(EventBase* eventBase, NetworkSocket fd);
/**
* Return the set of events that we're currently registered for.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment