Browse Source

trigger heartbeat with a factor of missed heartbeats instead of multiple times. Change logging a bit

1.0.0
Georg Hopp 11 years ago
parent
commit
564e2f3040
  1. 1
      include/tr/event_dispatcher.h
  2. 3
      src/event_dispatcher_start.c
  3. 3
      src/event_handler_handle_event.c
  4. 3
      src/event_handler_issue_event.c

1
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);

3
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,

3
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);

3
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);

Loading…
Cancel
Save