@@ -36,7 +36,6 @@ interface
36
36
INTVL_POLL_OFFLINE = 10 * 1000 ;
37
37
INTVL_PEER_COUNT = 20 * 1000 ;
38
38
INTVL_BALANCE = 30 * 1000 ;
39
- INTVL_ALERTS_START_DELAY = 5000 ;
40
39
41
40
type
42
41
@@ -89,7 +88,9 @@ CCollector = class(TThread)
89
88
// used to detect when hash rates change significantly (some things need recalculation)
90
89
m_hashRateReference: double;
91
90
m_lastWebAlert: string;
91
+ // when did we start, or last awake from sleep.
92
92
m_startedAt: TDateTime;
93
+ m_alertsStartDelay: integer;
93
94
94
95
end ;
95
96
@@ -118,6 +119,7 @@ constructor CCollector.Create;
118
119
m_hashRateReference := -1 ;
119
120
m_lastWebAlert := ' ' ;
120
121
m_startedAt := Now;
122
+ m_alertsStartDelay := 5000 ;
121
123
122
124
// launch the worker thread straight away
123
125
Inherited Create(false)
@@ -171,7 +173,8 @@ procedure CCollector.Execute;
171
173
// periodic check to see if any offline miners have come online recently
172
174
m_tasks.scheduleTask(@pollOfflineMiners, 0 , INTVL_POLL_OFFLINE, true, ' pollOfflineMiners' );
173
175
174
- m_tasks.scheduleTask(@updateAlerts, 1 , INTVL_ALERTS_START_DELAY + 1000 , false, ' alertsStartDelay' );
176
+ // after things have settled down, check if there are any alerts
177
+ m_tasks.scheduleTask(@updateAlerts, 0 , m_alertsStartDelay + 1000 , false, ' alertsStartDelay' );
175
178
176
179
widgetHeartBeat(0 );
177
180
m_tasks.scheduleTask(@widgetHeartBeat, 0 , 10 * 1000 , true, ' widgetHeartBeat' );
@@ -188,22 +191,6 @@ procedure CCollector.Execute;
188
191
end ;
189
192
190
193
191
- procedure CCollector.awakeFromSleep ;
192
- var
193
- i: integer;
194
- begin
195
- Log.Writeln([' Trace: CCollector.awakeFromSleep' ], true);
196
- // set everybody offline
197
- m_nodeLiaison := -1 ;
198
- for i := 0 to g_miners.count - 1 do
199
- g_miners.byRow[i].online := false;
200
-
201
- sleep(5000 );
202
- pollOfflineMiners(0 );
203
- m_tasks.scheduleTask(@delayedStartTasks, Ord(SleepAwake), INTVL_DELAYED_START, false, ' awake:delayedStartTasks' );
204
- end ;
205
-
206
-
207
194
procedure CCollector.delayedStartTasks (mode: PtrUInt);
208
195
begin
209
196
Log.Writeln([' Trace: CCollector.delayedStartTasks' ], true);
@@ -223,6 +210,17 @@ procedure CCollector.delayedStartTasks(mode: PtrUInt);
223
210
end ;
224
211
225
212
213
+ procedure CCollector.awakeFromSleep ;
214
+ begin
215
+ m_startedAt := Now;
216
+ // things take longer to settle down after a 'wake from sleep'.
217
+ m_alertsStartDelay := 20 * 1000 ;
218
+ // after things have settled down, check if there are any alerts
219
+ m_tasks.scheduleTask(@updateAlerts, 0 , m_alertsStartDelay + 1000 , false, ' alertsStartDelay' );
220
+ Log.Writeln([' Mining Visualizer has detected a wake from sleep event' ]);
221
+ end ;
222
+
223
+
226
224
procedure CCollector.onMinerConnect (connectData: TJSONObject);
227
225
var
228
226
minerID: integer;
@@ -802,11 +800,11 @@ procedure CCollector.updateAlerts(data: PtrUInt);
802
800
begin
803
801
jAlerts := CheckAlerts;
804
802
s := jAlerts.AsJSON;
805
- // at startup we want to avoid flashing alerts until all miners have reported in and things have
806
- // stabilized somewhat. there's a delayed start task scheduled at startup slightly after
807
- // INTVL_ALERTS_START_DELAY to make sure we send out the necessary alerts at that time in case there's
808
- // a lull in activity right then.
809
- if (s <> m_lastWebAlert) and (MillisecondsBetween(Now, m_startedAt) > INTVL_ALERTS_START_DELAY ) then begin
803
+ // at startup, or after we awake from sleep, we want to avoid flashing alerts until all miners
804
+ // have reported in and things have stabilized somewhat. there's a delayed start task scheduled
805
+ // at startup slightly after m_alertsStartDelay to make sure we send out the necessary
806
+ // alerts at that time in case there's a lull in activity right then.
807
+ if (s <> m_lastWebAlert) and (MillisecondsBetween(Now, m_startedAt) > m_alertsStartDelay ) then begin
810
808
if jAlerts[' MasterAlert' ].AsBoolean then
811
809
alertUser;
812
810
g_webFace.updateAlerts(jAlerts); // jAlerts is freed in the g_webFace.updateAlerts call chain
0 commit comments