fix: Better context handling and graceful shutdown #9
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.
Use go contexts to handle shutting down go routines and closing channels. This largely makes the receiver pattern with the subscriber and firehose structs unecessary. Instead we pass the necessary arguments to the functions together with the context. The functions listen for the context to signal the process should close, so no separate shutdown function is necessary.
Fiber is handled as before.
The main.go main function now sets up a cancelable context and passes this to the urfave cli run command. A go routine listens for interrupts and if so gracefully signals to shutdown by calling cancel on the context.