lithium3

Check-in [bb942f62bc]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:lithium-dispatchers: add expiration purge to prevent termination issue
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: bb942f62bc5f5088bd33975e04874ddca2b72f48
User & Date: nat 2017-06-05 20:48:27
Context
2017-06-10
21:24
lithium-log: add a periodic marker to the log when in debug mode check-in: e0251e7c05 user: nat tags: trunk
2017-06-05
20:48
lithium-dispatchers: add expiration purge to prevent termination issue check-in: bb942f62bc user: nat tags: trunk
2017-05-30
20:50
lithium-access_log: add a column for the forward protocol check-in: de8fe7bf8c user: nat tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/lithium-dispatchers.adb.

1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 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         --

|







1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 2015-2017, 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         --
20
21
22
23
24
25
26

27
28
29
30
31
32
33
with Natools.Web.Exchanges;
with Natools.Web.Filters.Pass_Through;
with Natools.Web.Filters.Text_Blocks;
with Natools.Web.Filters.Text_Replacement;
with Natools.Web.Reload_Pages;
with Natools.Web.Simple_Pages.Markdown_Pages;
with Natools.Web.Simple_Pages.Markdown_Multipages;

with Natools.Web.Tag_Pages;

with Lithium.Access_Log;
with Lithium.Legacy_Filters;
with Lithium.Markdown.Filters;

package body Lithium.Dispatchers is







>







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
with Natools.Web.Exchanges;
with Natools.Web.Filters.Pass_Through;
with Natools.Web.Filters.Text_Blocks;
with Natools.Web.Filters.Text_Replacement;
with Natools.Web.Reload_Pages;
with Natools.Web.Simple_Pages.Markdown_Pages;
with Natools.Web.Simple_Pages.Markdown_Multipages;
with Natools.Web.Sites.Updates;
with Natools.Web.Tag_Pages;

with Lithium.Access_Log;
with Lithium.Legacy_Filters;
with Lithium.Markdown.Filters;

package body Lithium.Dispatchers is
100
101
102
103
104
105
106







107
        ("text-block", Natools.Web.Filters.Text_Blocks.Create'Access);

      Holder.Load (File_Name);

      return Result;
   end Create;








end Lithium.Dispatchers;







>
>
>
>
>
>
>

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
        ("text-block", Natools.Web.Filters.Text_Blocks.Create'Access);

      Holder.Load (File_Name);

      return Result;
   end Create;


   not overriding procedure Purge (Object : in Handler) is
      Update : Natools.Web.Sites.Updates.Expiration_Purger;
   begin
      Object.Ref.Update.Queue (Update);
   end Purge;

end Lithium.Dispatchers;

Changes to src/lithium-dispatchers.ads.

1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 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         --

|







1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 2015-2017, 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         --
38
39
40
41
42
43
44


45
46
47
48
49
50
51
52

   overriding function Dispatch
     (Dispatcher : Handler;
      Request : AWS.Status.Data)
     return AWS.Response.Data;

   not overriding function Create (File_Name : String) return Handler;



private

   type Handler is new AWS.Dispatchers.Handler with record
      Ref : Holder_Refs.Reference;
   end record;

end Lithium.Dispatchers;







>
>








38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

   overriding function Dispatch
     (Dispatcher : Handler;
      Request : AWS.Status.Data)
     return AWS.Response.Data;

   not overriding function Create (File_Name : String) return Handler;

   not overriding procedure Purge (Object : in Handler);

private

   type Handler is new AWS.Dispatchers.Handler with record
      Ref : Holder_Refs.Reference;
   end record;

end Lithium.Dispatchers;

Changes to src/lithium-main.adb.

1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 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         --

|







1
2
3
4
5
6
7
8
9
------------------------------------------------------------------------------
-- Copyright (c) 2015-2017, 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         --
48
49
50
51
52
53
54

55
      end loop;
   else
      Ada.Text_IO.Put_Line ("Websever started, waiting for Q press");
      AWS.Server.Wait (AWS.Server.Q_Key_Pressed);
   end if;

   AWS.Server.Shutdown (WS);

end Lithium.Main;







>

48
49
50
51
52
53
54
55
56
      end loop;
   else
      Ada.Text_IO.Put_Line ("Websever started, waiting for Q press");
      AWS.Server.Wait (AWS.Server.Q_Key_Pressed);
   end if;

   AWS.Server.Shutdown (WS);
   Handler.Purge;
end Lithium.Main;