Add mechanism to synchronize and update services status #30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a better and simpler approach than #29 . Responsibility is of the services implementations (With great power comes great responsibility) to understand the complexities of their services relationships.
How this works?
There is
tokio::sync::watch
channel handled by the service. Other services can subscribe and get updated requesting a watcher (watch::Receiver) from the calls in the overwatch_handle within services themselves.Service status do not update automatically, I think is more flexible as service may chose to mark when they are ready to work. Also when they have finished its exection.
StatusHandle
holds both parts of the sender/receiver parts of the watch channel and its clonable. That way the service can spawn tasks freely and send the handle to handle internal status as well.