It is possible (likely) that a manage call is in progress when
`stop` is called. When that happens, _manage will continue to
run, and schedule another call - and the manager won't actually stop,
and will likely cause an error as other components have been torn down.
This fix adds a deferred that gets created when a manage call starts
and is fired when its done. At this points its safe to start the
stopping process. Also add a check to not schedule another manage
call if we're stopped
This fixes https://app.asana.com/0/142330900434470/239832897034382
In the next commit I change conf.settings to be initialized
at runtime instead of load time and so any import of
`from lbrynet.conf import settings` will be and stay None if
it happens before the initialization.
Each blob requests has three parts
- A request to see what blobs are available
- A request to download and pay for one of those blobs
- A request to negotiate data costs
Before the refactoring all of the code to accomplish this was mixed into
one class. They are now three seperate classes.
There is still a lot of room for improvement, but it is at least better than
it was.
Put stream downloader options into its own class, and make stream
downloader options global to the stream type rather than specific
to each factory.
Show downloader options in the lbrynet-downloader-gui.
Make a class for downloader option choices, so that the descriptions
can be displayed.
In the console, if there are multiple choices for the download
option, make it a list selected by its index.
Make sure that the ConnectionManager closes properly when some of
the connections fail to open (e.g. due to a host being down)