Have a read through the following topic and the related article: To spawn, or not to spawn?
So, to summarize, in that post “thought concerns” refer to “I want to somehow organize a larger chunk of code, so it’s easier to work with”, while “runtime concerns” refer to “I want to get some observable runtime benefits, such as fault-tolerance, scalability, or potential for parallelism”.
Roughly (i.e. nothing is black and white):
- thought concerns → modules
- runtime concerns → processes
Also possibly:
I like this idea, but would it still work if the Lobby process is restarted for some reason?
The server
argument for cast
can be a name
- so require that as an argument for new_timer
.
The bigger issue is, how would a restarted Lobby
process re-aquire the previous state (which may have been responsible for the last process crashing in the first place)? If the state is lost then the timer is meaningless.
I’m also not sure how it’s different
Coupling is significantly reduced.
CountdownTimer.new_timer(completed_msg, time)
lets the client choose the exact format of the message to be handled by its own handle_cast/2
callback. And CountdownTimer
isn’t coupled to the client module - not even at runtime.