From 72d8b99bc069d794d2587f94ebd1c47edfa1df36 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Tue, 5 Aug 2014 18:53:08 +0100 Subject: [PATCH] code for event handling --- include/tr/event_dispatcher.h | 16 +++++++++++++++- include/tr/event_handler.h | 6 ++++++ src/Makefile.am | 4 ++++ src/event_handler.c | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/tr/event_dispatcher.h b/include/tr/event_dispatcher.h index 2a21046..afd3fa1 100644 --- a/include/tr/event_dispatcher.h +++ b/include/tr/event_dispatcher.h @@ -27,6 +27,11 @@ #include "trbase.h" #include "trdata.h" + +#include "tr/event.h" + +TR_CLASS(TR_EventDispatcher); + #include "tr/event_handler.h" typedef enum TR_e_EventDispatcherMode { @@ -46,7 +51,16 @@ TR_CLASS(TR_EventDispatcher) { TR_INSTANCE_INIT(TR_EventDispatcher); TR_CLASSVARS_DECL(TR_EventDispatcher) {}; -void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler); +void TR_eventDispatcherRegisterHandler(TR_EventDispatcher, TR_EventHandler); +void TR_eventDispatcherSetHeartbeat(TR_EventDispatcher, time_t); +time_t TR_eventDispatcherGetBeatTime(TR_EventDispatcher); +time_t TR_eventDispatcherGerDataWaitTime(TR_EventDispatcher); +//void TR_eventDispatcherEnqueueEvent(TR_EventDispatcher, TR_Event); +void TR_eventDispatcherStart(TR_EventDispatcher); +void TR_eventDispatcherStop(TR_EventDispatcher); +void TR_eventDispatcherShutdown(TR_EventDispatcher); + +#define TR_eventDispatcherEnqueueEvent(disp,ev) (TR_queuePut((disp)->events, (ev))) #endif // __TR_EVENT_DISPATCHER_H__ diff --git a/include/tr/event_handler.h b/include/tr/event_handler.h index 6613a6d..c0c1dee 100644 --- a/include/tr/event_handler.h +++ b/include/tr/event_handler.h @@ -23,8 +23,11 @@ #ifndef __TR_EVENT_HANDLER_H__ #define __TR_EVENT_HANDLER_H__ +#include + #include "trbase.h" #include "trdata.h" + #include "tr/event.h" #include "tr/event_subject.h" @@ -32,8 +35,11 @@ TR_CLASS(TR_EventHandler); #include "tr/event_dispatcher.h" +typedef int (* TR_EventMethod_fptr)(TR_Event); + TR_CLASS(TR_EventHandler) { TR_EventDispatcher dispatcher[10]; + size_t ndispatcher; TR_Hash event_methods; }; TR_INSTANCE_INIT(TR_EventHandler); diff --git a/src/Makefile.am b/src/Makefile.am index f3faffc..2a2e5da 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -5,7 +5,11 @@ AM_CFLAGS += -I../include/ TREVENT = event.c \ event_dispatcher.c \ + event_dispatcher_register_handler.c \ event_handler.c \ + event_handler_handle_event.c \ + event_handler_issue_event.c \ + event_handler_set_dispatcher.c \ event_subject.c \ event_subject_emit.c \ event_subject_id.c diff --git a/src/event_handler.c b/src/event_handler.c index 421213b..f9925d8 100644 --- a/src/event_handler.c +++ b/src/event_handler.c @@ -32,6 +32,7 @@ int eventHandlerCtor(void * _this, va_list * params) { TR_EventHandler this = _this; + this->ndispatcher = 0; this->event_methods = TR_new(TR_Hash); return 0;