From 564e2f30408d85ac68db5b7a524d45a20adbf850 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Tue, 16 Sep 2014 21:09:02 +0100 Subject: [PATCH] trigger heartbeat with a factor of missed heartbeats instead of multiple times. Change logging a bit --- include/tr/event_dispatcher.h | 1 + src/event_dispatcher_start.c | 3 ++- src/event_handler_handle_event.c | 3 ++- src/event_handler_issue_event.c | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/tr/event_dispatcher.h b/include/tr/event_dispatcher.h index 8533e94..e36006a 100644 --- a/include/tr/event_dispatcher.h +++ b/include/tr/event_dispatcher.h @@ -53,6 +53,7 @@ TR_CLASS(TR_EventDispatcher) { int running; int heartbeat; // milliseconds int nextbeat; // milliseconds + size_t n_beats; TR_EventDispatcherMode mode; }; TR_INSTANCE_INIT(TR_EventDispatcher); diff --git a/src/event_dispatcher_start.c b/src/event_dispatcher_start.c index 7d74b0f..9974950 100644 --- a/src/event_dispatcher_start.c +++ b/src/event_dispatcher_start.c @@ -48,7 +48,8 @@ TR_eventDispatcherStart(TR_EventDispatcher this) now = tp.tv_sec * 1000 + tp.tv_nsec / 1000000; if (this->nextbeat && this->nextbeat <= now) { - this->nextbeat += this->heartbeat; + this->n_beats = ((now - this->nextbeat) / this->heartbeat) + 1; + this->nextbeat += this->n_beats * this->heartbeat; event = TR_eventSubjectEmit( (TR_EventSubject)this, TR_DISPATCHER_EVENT_HEARTBEAT, diff --git a/src/event_handler_handle_event.c b/src/event_handler_handle_event.c index 08ddd96..fa2b4ca 100644 --- a/src/event_handler_handle_event.c +++ b/src/event_handler_handle_event.c @@ -38,8 +38,9 @@ TR_eventHandlerHandleEvent(TR_EventHandler this, TR_Event event) TR_sdbm((unsigned char *)&event->id, sizeof(event->id))); TR_loggerLog(TR_logger, TR_LOGGER_DEBUG, - "%zd - HANDLE: %s event on %p with no. %d", + "%zd - HANDLE(%zd): %s event on %p with no. %d", this->dispatcher[0]->events->nmsg, + event->subject->emitted, TR_getEventString(event), event->subject, event->serial); diff --git a/src/event_handler_issue_event.c b/src/event_handler_issue_event.c index 60f540c..7e39057 100644 --- a/src/event_handler_issue_event.c +++ b/src/event_handler_issue_event.c @@ -37,8 +37,9 @@ TR_eventHandlerIssueEvent(TR_EventHandler this, TR_Event event) TR_eventDispatcherEnqueueEvent(this->dispatcher[i], event); TR_loggerLog(TR_logger, TR_LOGGER_DEBUG, - "%zd - ISSUE: %s event on %p with no. %d", + "%zd - ISSUE(%zd): %s event on %p with no. %d", this->dispatcher[i]->events->nmsg, + event->subject->emitted, TR_getEventString(event), event->subject, event->serial);