/** * xerxes - mysql proxying * ``Why do you persist in your loneliness?'' --Xerxes * (c) 2008 * Jan Losinski * Maximilian Marx */ #ifndef XERXES_EPOLL_HXX #define XERXES_EPOLL_HXX #include #include #include #include #include #include #include #include "socket.hxx" namespace xerxes { struct EPoll { EPoll(); virtual ~EPoll(); typedef boost::shared_ptr event_t; void add(Socket const& source, Socket const& target); void add(Socket const& socket); void del(Socket const& socket); int fd; std::map events; }; enum epoll_add_err_type { EPOLL_ADD_ERR_SINGLE, EPOLL_ADD_ERR_SOURCE, EPOLL_ADD_ERR_TARGET }; class EpollErr { public: EpollErr(); EpollErr(std::string err); }; class EpollAddErr : public EpollErr { public: EpollAddErr(); EpollAddErr(epoll_add_err_type t); epoll_add_err_type type; }; class EpollDelErr : public EpollErr { public: EpollDelErr() : EpollErr("could not delete fd from epoll"){}; }; class EpollCreateErr : public EpollErr { public: EpollCreateErr() : EpollErr("could not create Epoll"){}; }; } #endif