1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
|
-
+
|
------------------------------------------------------------------------------
-- Copyright (c) 2014, Natacha Porté --
-- Copyright (c) 2014-2015, Natacha Porté --
-- --
-- Permission to use, copy, modify, and distribute this software for any --
-- purpose with or without fee is hereby granted, provided that the above --
-- copyright notice and this permission notice appear in all copies. --
-- --
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES --
-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF --
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
+
-
-
-
+
+
+
+
|
Callback : in Callback_Refs.Reference)
is
use type Ada.Calendar.Time;
Now : constant Ada.Calendar.Time := Ada.Calendar.Clock;
Actual_Time : Periodic_Time := Time;
begin
if Actual_Time.Period > 0.0 then
while Actual_Time.Origin < Now loop
Actual_Time.Origin := Actual_Time.Origin + Actual_Time.Period;
end loop;
while Actual_Time.Origin < Now loop
Actual_Time.Origin := Actual_Time.Origin + Actual_Time.Period;
end loop;
end if;
if Map.Is_Empty then
if Global_Worker /= null and then Global_Worker.all'Terminated then
Unchecked_Free (Global_Worker);
end if;
if Global_Worker = null then
|
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
|
+
+
-
+
+
|
Search :
while Entry_Maps.Has_Element (Cursor) loop
if Entry_Maps.Element (Cursor) = Callback then
declare
Old_Time : constant Periodic_Time := Entry_Maps.Key (Cursor);
begin
Map.Delete (Cursor);
if Old_Time.Period > 0.0 then
Insert (Old_Time, Callback);
Insert (Old_Time, Callback);
end if;
end;
exit Search;
end if;
Entry_Maps.Next (Cursor);
end loop Search;
|