Commit 2c2cb317e513309b6c7dbc29e6bb46e138c4d88c

Authored by Georg Hopp
1 parent 8fb77893

keep track of the anount of pending events on a subject

@@ -28,7 +28,9 @@ @@ -28,7 +28,9 @@
28 28
29 #include "trbase.h" 29 #include "trbase.h"
30 30
31 -TR_CLASS(TR_EventSubject) {}; 31 +TR_CLASS(TR_EventSubject) {
  32 + size_t emitted;
  33 +};
32 TR_INSTANCE_INIT(TR_EventSubject); 34 TR_INSTANCE_INIT(TR_EventSubject);
33 TR_CLASSVARS_DECL(TR_EventSubject) { 35 TR_CLASSVARS_DECL(TR_EventSubject) {
34 size_t nevents; 36 size_t nevents;
@@ -48,6 +50,8 @@ TR_CLASSVARS_DECL(TR_EventSubject) { @@ -48,6 +50,8 @@ TR_CLASSVARS_DECL(TR_EventSubject) {
48 #define TR_eventSubjectGetId(obj, idx) \ 50 #define TR_eventSubjectGetId(obj, idx) \
49 TR__eventSubjectId(TR_GET_CLASS(obj), idx) 51 TR__eventSubjectId(TR_GET_CLASS(obj), idx)
50 52
  53 +#define TR_eventSubjectHasUnhandledEvents(es) ((es)->emitted > 0)
  54 +
51 intptr_t TR__eventSubjectId(TR_class_ptr, size_t); 55 intptr_t TR__eventSubjectId(TR_class_ptr, size_t);
52 TR_Event TR_eventSubjectEmit(TR_EventSubject, int, void *); 56 TR_Event TR_eventSubjectEmit(TR_EventSubject, int, void *);
53 57
@@ -41,7 +41,12 @@ eventCtor(void * _this, va_list * params) @@ -41,7 +41,12 @@ eventCtor(void * _this, va_list * params)
41 return 0; 41 return 0;
42 } 42 }
43 43
44 -static void eventDtor(void * _this) {} 44 +static void eventDtor(void * _this)
  45 +{
  46 + TR_Event this = _this;
  47 +
  48 + this->subject->emitted--;
  49 +}
45 50
46 TR_INIT_IFACE(TR_Class, eventCtor, eventDtor, NULL); 51 TR_INIT_IFACE(TR_Class, eventCtor, eventDtor, NULL);
47 TR_CREATE_CLASS(TR_Event, NULL, NULL, TR_IF(TR_Class)) = { 0 }; 52 TR_CREATE_CLASS(TR_Event, NULL, NULL, TR_IF(TR_Class)) = { 0 };
@@ -38,6 +38,8 @@ TR_eventSubjectEmit(TR_EventSubject this, int idx, void * data) @@ -38,6 +38,8 @@ TR_eventSubjectEmit(TR_EventSubject this, int idx, void * data)
38 TR_eventSetData(event, data); 38 TR_eventSetData(event, data);
39 } 39 }
40 40
  41 + this->emitted++;
  42 +
41 return event; 43 return event;
42 } 44 }
43 45
Please register or login to post a comment