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
Libevent-users@monkey.org
http://lists.monkey.org:8080/listinfo/libevent-users

Reply via email to