@@ -38,15 +38,10 @@ defmodule Cortex.FileWatcher do
38
38
{ :file_event , watcher_pid , { path , _events } } ,
39
39
% { watcher_pid: watcher_pid } = state
40
40
) do
41
- % State { file_events: file_events , throttle_timer: throttle_timer } = state
42
-
43
- throttle_timer =
44
- unless throttle_timer do
45
- Process . send_after ( self ( ) , :throttle_timer_complete , @ throttle_timeout_ms )
46
- end
47
-
48
- file_events = Map . put ( file_events , path , file_type ( path ) )
49
- state = % State { state | file_events: file_events , throttle_timer: throttle_timer }
41
+ state =
42
+ state
43
+ |> maybe_update_throttle_timer ( )
44
+ |> track_file_events ( path )
50
45
51
46
{ :noreply , state }
52
47
end
@@ -77,6 +72,18 @@ defmodule Cortex.FileWatcher do
77
72
# Private Helpers
78
73
##########################################
79
74
75
+ defp maybe_update_throttle_timer ( % State { throttle_timer: nil } = state ) do
76
+ throttle_timer = Process . send_after ( self ( ) , :throttle_timer_complete , @ throttle_timeout_ms )
77
+ % State { state | throttle_timer: throttle_timer }
78
+ end
79
+
80
+ defp maybe_update_throttle_timer ( state ) , do: state
81
+
82
+ defp track_file_events ( % State { file_events: file_events } = state , path ) do
83
+ file_events = Map . put ( file_events , path , file_type ( path ) )
84
+ % State { state | file_events: file_events }
85
+ end
86
+
80
87
# public only because it is tested
81
88
@ spec file_type ( Path . t ( ) ) :: :lib | :test | :unknown
82
89
def file_type ( path ) do
0 commit comments