Commit 59594f31458628e2666ad4ce0dae2e4b80b1beaa

Authored by Georg Hopp
1 parent 72d8b99b

derive EventDispatcher from EventSubject

@@ -40,6 +40,8 @@ typedef enum TR_e_EventDispatcherMode { @@ -40,6 +40,8 @@ typedef enum TR_e_EventDispatcherMode {
40 } TR_EventDispatcherMode; 40 } TR_EventDispatcherMode;
41 41
42 TR_CLASS(TR_EventDispatcher) { 42 TR_CLASS(TR_EventDispatcher) {
  43 + TR_EXTENDS(TR_EventSubject);
  44 +
43 TR_Queue events; 45 TR_Queue events;
44 TR_Hash handler; 46 TR_Hash handler;
45 TR_EventHandler default_handler; 47 TR_EventHandler default_handler;
@@ -49,7 +51,14 @@ TR_CLASS(TR_EventDispatcher) { @@ -49,7 +51,14 @@ TR_CLASS(TR_EventDispatcher) {
49 TR_EventDispatcherMode mode; 51 TR_EventDispatcherMode mode;
50 }; 52 };
51 TR_INSTANCE_INIT(TR_EventDispatcher); 53 TR_INSTANCE_INIT(TR_EventDispatcher);
52 -TR_CLASSVARS_DECL(TR_EventDispatcher) {}; 54 +TR_CLASSVARS_DECL(TR_EventDispatcher) {
  55 + TR_CV_EXTENDS(TR_EventSubject);
  56 +};
  57 +
  58 +#define TR_DISPATCHER_EVENT_HEARTBEAT 0
  59 +#define TR_DISPATCHER_EVENT_USER_WAIT 1
  60 +#define TR_DISPATCHER_EVENT_DATA_WAIT 2
  61 +#define TR_DISPATCHER_EVENT_SHUTDOWN 3
53 62
54 void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler); 63 void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler);
55 void TR_eventDispatcherSetHeartbeat(TR_EventDispatcher, time_t); 64 void TR_eventDispatcherSetHeartbeat(TR_EventDispatcher, time_t);
@@ -54,7 +54,21 @@ eventDispatcherDtor(void * _this) { @@ -54,7 +54,21 @@ eventDispatcherDtor(void * _this) {
54 TR_delete(this->events); 54 TR_delete(this->events);
55 } 55 }
56 56
  57 +static
  58 +void
  59 +eventDispatcherCvInit(TR_class_ptr cls)
  60 +{
  61 + TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_HEARTBEAT);
  62 + TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_USER_WAIT);
  63 + TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_DATA_WAIT);
  64 + TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_SHUTDOWN);
  65 +}
  66 +
57 TR_INIT_IFACE(TR_Class, eventDispatcherCtor, eventDispatcherDtor, NULL); 67 TR_INIT_IFACE(TR_Class, eventDispatcherCtor, eventDispatcherDtor, NULL);
58 -TR_CREATE_CLASS(TR_EventDispatcher, NULL, NULL, TR_IF(TR_Class)); 68 +TR_CREATE_CLASS(
  69 + TR_EventDispatcher,
  70 + TR_EventSubject,
  71 + eventDispatcherCvInit,
  72 + TR_IF(TR_Class));
59 73
60 // vim: set ts=4 sw=4: 74 // vim: set ts=4 sw=4:
Please register or login to post a comment