On Sun, 2009-08-16 at 10:39 -0700, Nick Mathewson wrote:
> > but I am willing to submit another patch (the one with
> > accessor to base->event_gotterm/event_break) if you think that's the
> > better way to do it.
>
> Probably.
Sorry for taking so long. Attached is the promised patch which adds
accessors to base->event_gotterm/event_break, as well as modifying when
they are reset in event_base_loop().
-khc
Index: include/event2/event.h
===================================================================
--- include/event2/event.h (revision 1437)
+++ include/event2/event.h (working copy)
@@ -300,6 +300,28 @@
*/
int event_base_loopbreak(struct event_base *);
+/**
+ Checks if the event loop was told to exit
+
+ @param eb the event_base structure returned by event_init()
+ @return true if event_base_loopexit() was called on this event base,
+ or 0 otherwise
+ @see event_base_loopexit
+ @see event_base_got_break
+ */
+int event_base_got_exit(struct event_base *);
+
+/**
+ Checks if the event loop was told to abort immediately.
+
+ @param eb the event_base structure returned by event_init()
+ @return true if event_base_loopbreak() was called on this event base,
+ or 0 otherwise
+ @see event_base_loopbreak
+ @see event_base_got_exit
+ */
+int event_base_got_break(struct event_base *);
+
/* Flags to pass to event_set(), event_new(), event_assign(),
* event_pending(), and anything else with an argument of the form
* "short events" */
Index: event.c
===================================================================
--- event.c (revision 1437)
+++ event.c (working copy)
@@ -830,8 +830,20 @@
}
}
+int
+event_base_got_break(struct event_base *event_base)
+{
+ return event_base->event_break;
+}
+int
+event_base_got_exit(struct event_base *event_base)
+{
+ return event_base->event_gotterm;
+}
+
+
/* not thread safe */
int
@@ -859,15 +871,15 @@
base->th_owner_id = EVTHREAD_GET_ID();
#endif
+ base->event_gotterm = base->event_break = 0;
+
while (!done) {
/* Terminate the loop if we have been asked to */
if (base->event_gotterm) {
- base->event_gotterm = 0;
break;
}
if (base->event_break) {
- base->event_break = 0;
break;
}
_______________________________________________
Libevent-users mailing list
[email protected]
http://lists.monkey.org:8080/listinfo/libevent-users