It wasn't very clear when to use short and when to use eventxx::type. Now it's
clear. Everything use eventxx::type excepto C-like callbacks, which expects a
short.
* eventxx::dispatcher& d;
* int i;
* handler(eventxx::dispatcher& d): d(d), i(0) {}
* eventxx::dispatcher& d;
* int i;
* handler(eventxx::dispatcher& d): d(d), i(0) {}
- * void operator() (int signum, short event)
+ * void operator() (int signum, eventxx::type event)
* {
* if (i < 5) std::cout << "keep going...\n";
* else
* {
* if (i < 5) std::cout << "keep going...\n";
* else
* A member function wrapper functor (eventxx::mem_cb) is also included,
* so you can use any member function (method) as an event handler.
*
* A member function wrapper functor (eventxx::mem_cb) is also included,
* so you can use any member function (method) as an event handler.
*
+ * Please note that C-like function callback take a short as the type of event,
+ * while functors (or member functions) use eventxx::type.
+ *
* All events derive from a plain class (not template) eventxx::basic_event, one
* of the main utilities of it (besides containing common code ;) is to be used
* in STL containers.
* All events derive from a plain class (not template) eventxx::basic_event, one
* of the main utilities of it (besides containing common code ;) is to be used
* in STL containers.
* @param ev Type of events to monitor (see eventxx::type).
* @param handler Callback functor.
*/
* @param ev Type of events to monitor (see eventxx::type).
* @param handler Callback functor.
*/
- event(int fd, short ev, F& handler) throw()
+ event(int fd, type ev, F& handler) throw()
- event_set(this, fd, ev, &wrapper,
+ event_set(this, fd, static_cast< short >(ev), &wrapper,
reinterpret_cast< void* >(&handler));
}
reinterpret_cast< void* >(&handler));
}
* @param handler C-style callback function.
* @param arg Arbitrary pointer to pass to the handler as argument.
*/
* @param handler C-style callback function.
* @param arg Arbitrary pointer to pass to the handler as argument.
*/
- event(int fd, short ev, ccallback_type handler, void* arg = 0) throw()
+ event(int fd, type ev, ccallback_type handler, void* arg = 0) throw()
- event_set(this, fd, ev, handler, arg);
+ event_set(this, fd, static_cast< short >(ev), handler, arg);
template < typename O, typename M >
struct mem_cb
{
template < typename O, typename M >
struct mem_cb
{
/**
* Member function callback constructor.
*
/**
* Member function callback constructor.
*
*/
mem_cb(O& object, M method) throw():
_object(object), _method(method) {}
*/
mem_cb(O& object, M method) throw():
_object(object), _method(method) {}
- void operator() (int fd, short ev) { (_object.*_method)(fd, ev); }
+
+ void operator() (int fd, type ev) { (_object.*_method)(fd, ev); }
protected:
O& _object;
M _method;
protected:
O& _object;
M _method;
template < typename F >
void add_once(int fd, type ev, F& handler)
{
template < typename F >
void add_once(int fd, type ev, F& handler)
{
- internal::event_once(fd, ev, &dispatcher::wrapper< F >,
- reinterpret_cast< void* >(&handler), 0);
+ internal::event_once(fd, static_cast< short>(ev),
+ &dispatcher::wrapper< F >,
+ reinterpret_cast< void* >(&handler), 0);
*/
void add_once(int fd, type ev, ccallback_type handler, void* arg)
{
*/
void add_once(int fd, type ev, ccallback_type handler, void* arg)
{
- internal::event_once(fd, ev, handler, arg, 0);
+ internal::event_once(fd, static_cast< short >(ev), handler,
+ arg, 0);
template < typename F >
void add_once(int fd, type ev, F& handler, const time& to)
{
template < typename F >
void add_once(int fd, type ev, F& handler, const time& to)
{
- internal::event_once(fd, ev, &dispatcher::wrapper< F >,
- reinterpret_cast< void* >(&handler),
- // XXX HACK libevent don't use const
- const_cast< time* >(&to));
+ internal::event_once(fd, static_cast< short >(ev),
+ &dispatcher::wrapper< F >,
+ reinterpret_cast< void* >(&handler),
+ // XXX HACK libevent don't use const
+ const_cast< time* >(&to));
void add_once(int fd, type ev, ccallback_type handler, void* arg,
const time& to)
{
void add_once(int fd, type ev, ccallback_type handler, void* arg,
const time& to)
{
- internal::event_once(fd, ev, handler, arg,
+ internal::event_once(fd, static_cast< short >(ev), handler, arg,
// XXX HACK libevent don't use const
const_cast< time* >(&to));
}
// XXX HACK libevent don't use const
const_cast< time* >(&to));
}
dispatcher& d;
int i;
handler(dispatcher& d): d(d), i(0) {}
dispatcher& d;
int i;
handler(dispatcher& d): d(d), i(0) {}
- void operator() (int signum, short event)
+ void operator() (int signum, eventxx::type event)
{
std::cout << ++i << " interrupts, ";
if (i < 5) std::cout << "keep going...\n";
{
std::cout << ++i << " interrupts, ";
if (i < 5) std::cout << "keep going...\n";
eventxx::dispatcher& d;
int i;
handler(eventxx::dispatcher& d): d(d), i(0) {}
eventxx::dispatcher& d;
int i;
handler(eventxx::dispatcher& d): d(d), i(0) {}
- void operator() (int signum, short event)
+ void operator() (int signum, eventxx::type event)
{
if (i < 5) std::cout << "keep going...\n";
else
{
if (i < 5) std::cout << "keep going...\n";
else
shutdown(pair[0], SHUT_WR);
/* Initalize one event */
shutdown(pair[0], SHUT_WR);
/* Initalize one event */
- ev = new eventxx::cevent(pair[1], EV_READ, read_cb, NULL);
+ ev = new eventxx::cevent(pair[1], eventxx::READ, read_cb, NULL);
return (1);
/* Initalize one event */
return (1);
/* Initalize one event */
- ev = new eventxx::event< cb_t >(pair[1], EV_WRITE, write_cb);
+ ev = new eventxx::event< cb_t >(pair[1], eventxx::WRITE, write_cb);
dispatcher& d;
int i;
handler(dispatcher& d): d(d), i(0) {}
dispatcher& d;
int i;
handler(dispatcher& d): d(d), i(0) {}
- void handle_event(int signum, short event)
+ void handle_event(int signum, eventxx::type event)
{
std::cout << ++i << " interrupts, ";
if (i < 5) std::cout << "keep going...\n";
{
std::cout << ++i << " interrupts, ";
if (i < 5) std::cout << "keep going...\n";
-typedef eventxx::mem_cb< handler, void (handler::*)(int, short) > cb_type;
+typedef eventxx::mem_cb< handler, void (handler::*)(int, eventxx::type) > cb_type;