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 @@ ...@@ -22,8 +22,8 @@
namespace folly { namespace folly {
EventHandler::EventHandler(EventBase* eventBase, int fd) { EventHandler::EventHandler(EventBase* eventBase, NetworkSocket fd) {
folly_event_set(&event_, fd, 0, &EventHandler::libeventCallback, this); folly_event_set(&event_, fd.toFd(), 0, &EventHandler::libeventCallback, this);
if (eventBase != nullptr) { if (eventBase != nullptr) {
setEventBase(eventBase); setEventBase(eventBase);
} else { } else {
...@@ -121,17 +121,17 @@ void EventHandler::detachEventBase() { ...@@ -121,17 +121,17 @@ void EventHandler::detachEventBase() {
event_.ev_base = nullptr; event_.ev_base = nullptr;
} }
void EventHandler::changeHandlerFD(int fd) { void EventHandler::changeHandlerFD(NetworkSocket fd) {
ensureNotRegistered(__func__); ensureNotRegistered(__func__);
// event_set() resets event_base.ev_base, so manually restore it afterwards // event_set() resets event_base.ev_base, so manually restore it afterwards
struct event_base* evb = event_.ev_base; 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 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__); ensureNotRegistered(__func__);
folly_event_set(&event_, fd, 0, &EventHandler::libeventCallback, this); folly_event_set(&event_, fd.toFd(), 0, &EventHandler::libeventCallback, this);
setEventBase(eventBase); setEventBase(eventBase);
} }
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <glog/logging.h> #include <glog/logging.h>
#include <folly/io/async/EventUtil.h> #include <folly/io/async/EventUtil.h>
#include <folly/net/NetworkSocket.h>
#include <folly/portability/Event.h> #include <folly/portability/Event.h>
namespace folly { namespace folly {
...@@ -61,7 +62,11 @@ class EventHandler : private boost::noncopyable { ...@@ -61,7 +62,11 @@ class EventHandler : private boost::noncopyable {
* descriptor must be set separately using initHandler() or * descriptor must be set separately using initHandler() or
* changeHandlerFD() before the handler can be registered. * 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. * EventHandler destructor.
...@@ -135,7 +140,11 @@ class EventHandler : private boost::noncopyable { ...@@ -135,7 +140,11 @@ class EventHandler : private boost::noncopyable {
* *
* This may only be called when the handler is not currently registered. * 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. * Attach the handler to a EventBase, and change the file descriptor.
...@@ -144,7 +153,11 @@ class EventHandler : private boost::noncopyable { ...@@ -144,7 +153,11 @@ class EventHandler : private boost::noncopyable {
* a EventBase. This is primarily intended to be used to initialize * a EventBase. This is primarily intended to be used to initialize
* EventHandler objects created using the default constructor. * 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. * 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