with
lace.Observer,
lace.Subject,
lace.Response;
private
with
ada.Text_IO,
ada.Containers.indefinite_hashed_Sets;
package lace.event.Logger.text
--
-- Provides a logger which logs to a text file.
--
is
type Item is limited new Logger.item with private;
type View is access all Item'Class;
--------
-- Forge
--
function to_Logger (Name : in String) return Item;
overriding
procedure destruct (Self : in out Item);
-------------
-- Operations
--
-- Logging of event consfiguration.
--
overriding
procedure log_Connection (Self : in out Item; From : in Observer.view;
To : in Subject .view;
for_Kind : in Event.Kind);
overriding
procedure log_Disconnection (Self : in out Item; From : in Observer.view;
To : in Subject .view;
for_Kind : in Event.Kind);
overriding
procedure log_new_Response (Self : in out Item; the_Response : in Response.view;
of_Observer : in Observer.item'Class;
to_Kind : in Event.Kind;
from_Subject : in subject_Name);
overriding
procedure log_rid_Response (Self : in out Item; the_Response : in Response.view;
of_Observer : in Observer.item'Class;
to_Kind : in Event.Kind;
from_Subject : in subject_Name);
-- Logging of event transmission.
--
overriding
procedure log_Emit (Self : in out Item; From : in Subject .view;
To : in Observer.view;
the_Event : in Event.item'Class);
overriding
procedure log_Relay (Self : in out Item; From : in Observer.view;
To : in Observer.view;
the_Event : in Event.item'Class);
overriding
procedure log_Response (Self : in out Item; the_Response : in Response.view;
of_Observer : in Observer.view;
to_Event : in Event.item'Class;
from_Subject : in subject_Name);
-- Logging of miscellaneous messages.
--
overriding
procedure log (Self : in out Item; Message : in String);
-- Log filtering
--
overriding
procedure ignore (Self : in out Item; Kind : in Event.Kind);
private
package event_kind_Sets is new ada.Containers.indefinite_hashed_Sets (Event.Kind,
Event.Hash,
"=");
subtype event_kind_Set is event_kind_Sets.Set;
type Item is limited new Logger.item with
record
File : ada.Text_IO.File_type;
Ignored : event_kind_Set;
end record;
end lace.event.Logger.text;