make heart beat interval for threading configureable from scripting layer

This commit is contained in:
Bernhard Amann 2012-03-29 09:03:33 -07:00
parent 4558195dab
commit 6a60f484f9
4 changed files with 15 additions and 2 deletions

View file

@ -1484,6 +1484,14 @@ export {
}; };
} # end export } # end export
module Threading;
export {
## The heart beat interval used by the threading framework.
## Changing this should usually not be neccessary and will break several tests.
const heart_beat_interval = 1.0 &redef;
}
module GLOBAL; module GLOBAL;
## An NTP message. ## An NTP message.

View file

@ -12,3 +12,4 @@ const NFS3::return_data: bool;
const NFS3::return_data_max: count; const NFS3::return_data_max: count;
const NFS3::return_data_first_only: bool; const NFS3::return_data_first_only: bool;
const Threading::heart_beat_interval: double;

View file

@ -1,5 +1,6 @@
#include "Manager.h" #include "Manager.h"
#include "NetVar.h"
using namespace threading; using namespace threading;
@ -11,6 +12,9 @@ Manager::Manager()
next_beat = 0; next_beat = 0;
terminating = false; terminating = false;
idle = false; idle = false;
heart_beat_interval = double(BifConst::Threading::heart_beat_interval);
DBG_LOG(DBG_THREADING, "Heart beat interval set to %f", heart_beat_interval);
} }
Manager::~Manager() Manager::~Manager()
@ -73,7 +77,7 @@ void Manager::GetFds(int* read, int* write, int* except)
double Manager::NextTimestamp(double* network_time) double Manager::NextTimestamp(double* network_time)
{ {
if ( ::network_time && ! next_beat ) if ( ::network_time && ! next_beat )
next_beat = ::network_time + HEART_BEAT_INTERVAL; next_beat = ::network_time + heart_beat_interval;
// fprintf(stderr, "N %.6f %.6f did_process=%d next_next=%.6f\n", ::network_time, timer_mgr->Time(), (int)did_process, next_beat); // fprintf(stderr, "N %.6f %.6f did_process=%d next_next=%.6f\n", ::network_time, timer_mgr->Time(), (int)did_process, next_beat);

View file

@ -120,7 +120,7 @@ protected:
virtual const char* Tag() { return "threading::Manager"; } virtual const char* Tag() { return "threading::Manager"; }
private: private:
static const int HEART_BEAT_INTERVAL = 1; int heart_beat_interval;
typedef std::list<BasicThread*> all_thread_list; typedef std::list<BasicThread*> all_thread_list;
all_thread_list all_threads; all_thread_list all_threads;