Browse Source

derive EventDispatcher from EventSubject

1.0.0
Georg Hopp 12 years ago
parent
commit
59594f3145
  1. 11
      include/tr/event_dispatcher.h
  2. 16
      src/event_dispatcher.c

11
include/tr/event_dispatcher.h

@ -40,6 +40,8 @@ typedef enum TR_e_EventDispatcherMode {
} TR_EventDispatcherMode; } TR_EventDispatcherMode;
TR_CLASS(TR_EventDispatcher) { TR_CLASS(TR_EventDispatcher) {
TR_EXTENDS(TR_EventSubject);
TR_Queue events; TR_Queue events;
TR_Hash handler; TR_Hash handler;
TR_EventHandler default_handler; TR_EventHandler default_handler;
@ -49,7 +51,14 @@ TR_CLASS(TR_EventDispatcher) {
TR_EventDispatcherMode mode; TR_EventDispatcherMode mode;
}; };
TR_INSTANCE_INIT(TR_EventDispatcher); TR_INSTANCE_INIT(TR_EventDispatcher);
TR_CLASSVARS_DECL(TR_EventDispatcher) {};
TR_CLASSVARS_DECL(TR_EventDispatcher) {
TR_CV_EXTENDS(TR_EventSubject);
};
#define TR_DISPATCHER_EVENT_HEARTBEAT 0
#define TR_DISPATCHER_EVENT_USER_WAIT 1
#define TR_DISPATCHER_EVENT_DATA_WAIT 2
#define TR_DISPATCHER_EVENT_SHUTDOWN 3
void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler); void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler);
void TR_eventDispatcherSetHeartbeat(TR_EventDispatcher, time_t); void TR_eventDispatcherSetHeartbeat(TR_EventDispatcher, time_t);

16
src/event_dispatcher.c

@ -54,7 +54,21 @@ eventDispatcherDtor(void * _this) {
TR_delete(this->events); TR_delete(this->events);
} }
static
void
eventDispatcherCvInit(TR_class_ptr cls)
{
TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_HEARTBEAT);
TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_USER_WAIT);
TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_DATA_WAIT);
TR_EVENT_CREATE(cls, TR_DISPATCHER_EVENT_SHUTDOWN);
}
TR_INIT_IFACE(TR_Class, eventDispatcherCtor, eventDispatcherDtor, NULL); TR_INIT_IFACE(TR_Class, eventDispatcherCtor, eventDispatcherDtor, NULL);
TR_CREATE_CLASS(TR_EventDispatcher, NULL, NULL, TR_IF(TR_Class));
TR_CREATE_CLASS(
TR_EventDispatcher,
TR_EventSubject,
eventDispatcherCvInit,
TR_IF(TR_Class));
// vim: set ts=4 sw=4: // vim: set ts=4 sw=4:
Loading…
Cancel
Save