diff options
Diffstat (limited to 'ev++.h')
-rw-r--r-- | ev++.h | 40 |
1 files changed, 32 insertions, 8 deletions
@@ -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_ ## cstem, cppstem> (EV_A) \ { \ } #else #define EV_CONSTRUCT(cppstem,cstem) \ - () throw () \ + () throw () \ { \ } #endif @@ -580,19 +581,19 @@ namespace ev { \ struct cppstem : base<ev_ ## cstem, cppstem> \ { \ - void start () throw () \ + void start () throw () \ { \ ev_ ## cstem ## _start (EV_A_ static_cast<ev_ ## cstem *>(this)); \ } \ \ - void stop () throw () \ + void stop () throw () \ { \ ev_ ## cstem ## _stop (EV_A_ static_cast<ev_ ## cstem *>(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<ev_embed *>(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<ev_async *>(this)); + } + + bool async_pending () throw () + { + return ev_async_pending (static_cast<ev_async *>(this)); + } + EV_END_WATCHER (async, async) + #endif + #undef EV_PX #undef EV_PX_ #undef EV_CONSTRUCT |