protected void MonitorLogSwitch()
{
if(_running == 0) {
MonitorLogOff();
return;
}
if(ProtocolLog.Monitor.Enabled) {
IAction log_act = new LogAction(_packet_queue);
Action<DateTime> log_todo = delegate(DateTime dt) {
EnqueueAction(log_act);
};
int millisec_timeout = 5000; //log every 5 seconds.
Util.FuzzyEvent fe = Brunet.Util.FuzzyTimer.Instance.DoEvery(log_todo,
millisec_timeout, millisec_timeout/2);
if(Interlocked.CompareExchange(ref _monitor_fe, fe, null) != null) {
fe.TryCancel();
}
}
if(_running == 0 || !ProtocolLog.Monitor.Enabled) {
MonitorLogOff();
}
}