Refactor of caching & data storage part 10 #118

This commit is contained in:
Ian Renton
2026-08-02 10:31:31 +01:00
parent 2157bf114e
commit 11a236e668
15 changed files with 452 additions and 170 deletions
+72
View File
@@ -0,0 +1,72 @@
from core.config import config, create_provider_from_config
class DataProviders:
"""Global object for storing data providers."""
def __init__(self):
self.spot_providers = []
self.alert_providers = []
self.solar_condition_providers = []
self.static_data_providers = []
self.sig_ref_data_providers = []
self.callsign_data_providers = []
def setup(self):
for entry in config["spot-providers"]:
self.spot_providers.append(create_provider_from_config("providers.spot", entry))
for entry in config["alert-providers"]:
self.alert_providers.append(create_provider_from_config("providers.alert", entry))
for entry in config.get("solar-condition-providers", []):
self.solar_condition_providers.append(create_provider_from_config("providers.solarconditions", entry))
for entry in config.get("static-data-providers", []):
self.static_data_providers.append(create_provider_from_config("providers.staticdata", entry))
for entry in config.get("sig-ref-data-providers", []):
self.sig_ref_data_providers.append(create_provider_from_config("providers.sigrefdata", entry))
for entry in config.get("callsign-data-providers", []):
self.callsign_data_providers.append(create_provider_from_config("providers.callsigndata", entry))
def start(self):
for p in self.spot_providers:
if p.enabled:
p.start()
for p in self.alert_providers:
if p.enabled:
p.start()
for p in self.solar_condition_providers:
if p.enabled:
p.start()
for p in self.static_data_providers:
if p.enabled:
p.start()
for p in self.sig_ref_data_providers:
if p.enabled:
p.start()
for p in self.callsign_data_providers:
if p.enabled:
p.start()
def stop(self):
for sp in self.spot_providers:
if sp.enabled:
sp.stop()
for ap in self.alert_providers:
if ap.enabled:
ap.stop()
for scp in self.solar_condition_providers:
if scp.enabled:
scp.stop()
for srdp in self.sig_ref_data_providers:
if srdp.enabled:
srdp.stop()
for sdp in self.static_data_providers:
if sdp.enabled:
sdp.stop()
for cdp in self.callsign_data_providers:
if cdp.enabled:
cdp.stop()
# Global object
DATA_PROVIDERS = DataProviders()