@@ -5,25 +5,27 @@ defmodule Helix.Log.Event.Log do
55 event Created do
66 @ moduledoc """
77 LogCreatedEvent is fired when a brand new log entry is added to the server.
8+
9+ The newly created log may be either natural (automatically created by the
10+ game) or artificial (explicitly created by the player through LogForge
11+ mechanics). Either way, the receiving end of the event (Client) DOES NOT
12+ know whether the log is natural or artificial.
813 """
914
10- alias Helix.Server.Model.Server
1115 alias Helix.Log.Model.Log
1216
1317 @ type t ::
1418 % __MODULE__ {
15- log: Log . t ,
16- server_id: Server . id
19+ log: Log . t
1720 }
1821
19- event_struct [ :server_id , : log]
22+ event_struct [ :log ]
2023
2124 @ spec new ( Log . t ) ::
2225 t
2326 def new ( log = % Log { } ) do
2427 % __MODULE__ {
25- log: log ,
26- server_id: log . server_id
28+ log: log
2729 }
2830 end
2931
@@ -40,83 +42,72 @@ defmodule Helix.Log.Event.Log do
4042 end
4143
4244 def whom_to_publish ( event ) ,
43- do: % { server: event . server_id }
45+ do: % { server: event . log . server_id }
4446 end
4547 end
4648
47- # event Modified do
48- # @moduledoc """
49- # LogModifiedEvent is fired when an existing log has changed (revised) or
50- # has been recovered.
49+ event Revised do
50+ @ moduledoc """
51+ `LogRevisedEvent` is fired when an existing log had a revision added to it.
5152
52- # TODO: we'll probably want to create a LogRecovered event instead.
53- # """
53+ The revision may be stacked up on a natural or artificial log - the log
54+ origin is transparent to the Client.
55+ """
5456
55- # alias Helix.Server.Model.Server
56- # alias Helix.Log.Model.Log
57+ alias Helix.Log.Model.Log
5758
58- # @type t ::
59- # %__MODULE__{
60- # log: Log.t,
61- # server_id: Server.id
62- # }
59+ event_struct [ :log ]
6360
64- # event_struct [:server_id, :log]
61+ @ type t ::
62+ % __MODULE__ {
63+ log: Log . t
64+ }
6565
66- # @spec new(Log.t) ::
67- # t
68- # def new(log = %Log{}) do
69- # %__MODULE__{
70- # log: log,
71- # server_id: log.server_id
72- # }
73- # end
66+ @ spec new ( Log . t ) ::
67+ t
68+ def new ( log = % Log { } ) do
69+ % __MODULE__ {
70+ log: log
71+ }
72+ end
7473
75- # publish do
74+ publish do
7675
77- # alias HELL.ClientUtils
76+ alias Helix.Log.Public.Index , as: LogIndex
7877
79- # @event :log_modified
78+ @ event :log_revised
8079
81- # def generate_payload(event, _socket) do
82- # data = %{
83- # log_id: to_string(event.log.log_id),
84- # server_id: to_string(event.server_id),
85- # timestamp: ClientUtils.to_timestamp(event.log.creation_time),
86- # message: event.log.message
87- # }
80+ def generate_payload ( event , _socket ) do
81+ data = LogIndex . render_log ( event . log )
8882
89- # {:ok, data}
90- # end
83+ { :ok , data }
84+ end
9185
92- # def whom_to_publish(event),
93- # do: %{server: event.server_id}
94- # end
95- # end
86+ def whom_to_publish ( event ) ,
87+ do: % { server: event . log . server_id }
88+ end
89+ end
9690
9791 event Deleted do
9892 @ moduledoc """
9993 LogDeletedEvent is fired when a forged log is recovered beyond its original
10094 revision, leading to the log deletion.
10195 """
10296
103- alias Helix.Server.Model.Server
10497 alias Helix.Log.Model.Log
10598
10699 @ type t ::
107100 % __MODULE__ {
108- log: Log . t ,
109- server_id: Server . id
101+ log: Log . t
110102 }
111103
112- event_struct [ :server_id , : log]
104+ event_struct [ :log ]
113105
114106 @ spec new ( Log . t ) ::
115107 t
116108 def new ( log = % Log { } ) do
117109 % __MODULE__ {
118- log: log ,
119- server_id: log . server_id
110+ log: log
120111 }
121112 end
122113
@@ -126,15 +117,14 @@ defmodule Helix.Log.Event.Log do
126117
127118 def generate_payload ( event , _socket ) do
128119 data = % {
129- log_id: to_string ( event . log . log_id ) ,
130- server_id: to_string ( event . server_id )
120+ log_id: to_string ( event . log . log_id )
131121 }
132122
133123 { :ok , data }
134124 end
135125
136126 def whom_to_publish ( event ) ,
137- do: % { server: event . server_id }
127+ do: % { server: event . log . server_id }
138128 end
139129 end
140130end
0 commit comments