@@ -38,15 +38,10 @@ defmodule Cortex.FileWatcher do
3838 { :file_event , watcher_pid , { path , _events } } ,
3939 % { watcher_pid: watcher_pid } = state
4040 ) 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 )
5045
5146 { :noreply , state }
5247 end
@@ -77,6 +72,18 @@ defmodule Cortex.FileWatcher do
7772 # Private Helpers
7873 ##########################################
7974
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+
8087 # public only because it is tested
8188 @ spec file_type ( Path . t ( ) ) :: :lib | :test | :unknown
8289 def file_type ( path ) do
0 commit comments