From 8176c9f3c1c2e3b60d7ff3cc89c9083c8d0f1826 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 15 Apr 2008 04:34:07 +0000 Subject: *** empty log message *** --- ev++.h | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) (limited to 'ev++.h') diff --git a/ev++.h b/ev++.h index d1dc21a..a5ef402 100644 --- a/ev++.h +++ b/ev++.h @@ -72,6 +72,7 @@ namespace ev { CHECK = EV_CHECK, PREPARE = EV_PREPARE, FORK = EV_FORK, + ASYNC = EV_ASYNC, EMBED = EV_EMBED, ERROR = EV_ERROR, }; @@ -563,13 +564,13 @@ namespace ev { #if EV_MULTIPLICITY #define EV_CONSTRUCT(cppstem,cstem) \ - (EV_PX = get_default_loop ()) throw () \ + (EV_PX = get_default_loop ()) throw () \ : base (EV_A) \ { \ } #else #define EV_CONSTRUCT(cppstem,cstem) \ - () throw () \ + () throw () \ { \ } #endif @@ -580,19 +581,19 @@ namespace ev { \ struct cppstem : base \ { \ - void start () throw () \ + void start () throw () \ { \ ev_ ## cstem ## _start (EV_A_ static_cast(this)); \ } \ \ - void stop () throw () \ + void stop () throw () \ { \ ev_ ## cstem ## _stop (EV_A_ static_cast(this)); \ } \ \ cppstem EV_CONSTRUCT(cppstem,cstem) \ \ - ~cppstem () throw () \ + ~cppstem () throw () \ { \ stop (); \ } \ @@ -603,7 +604,7 @@ namespace ev { \ cppstem (const cppstem &o); \ \ - cppstem & operator =(const cppstem &o); \ + cppstem &operator =(const cppstem &o); \ \ public: @@ -748,10 +749,17 @@ namespace ev { #if EV_EMBED_ENABLE EV_BEGIN_WATCHER (embed, embed) - void start (struct ev_loop *embedded_loop) throw () + void set (struct ev_loop *embedded_loop) throw () { - stop (); + int active = is_active (); + if (active) stop (); ev_embed_set (static_cast(this), embedded_loop); + if (active) start (); + } + + void start (struct ev_loop *embedded_loop) throw () + { + set (embedded_loop); start (); } @@ -768,6 +776,22 @@ namespace ev { EV_END_WATCHER (fork, fork) #endif + #if EV_ASYNC_ENABLE + EV_BEGIN_WATCHER (async, async) + void set () throw () { } + + void send () throw () + { + ev_async_send (EV_A_ static_cast(this)); + } + + bool async_pending () throw () + { + return ev_async_pending (static_cast(this)); + } + EV_END_WATCHER (async, async) + #endif + #undef EV_PX #undef EV_PX_ #undef EV_CONSTRUCT -- cgit v1.2.3