redefined the API to avoid GC issues during the destruction of the AMAN and its children

This commit is contained in:
Sven Czarnian
2021-09-24 22:28:19 +02:00
parent b69c584fb4
commit 484be00e8c
4 changed files with 59 additions and 19 deletions

View File

@@ -34,6 +34,10 @@ class AMAN:
self.workers = []
self.inbounds = {}
def __del__(self):
self.release()
def aquire(self):
configPath = AMAN.findConfigPath()
# read all system relevant configuration files
@@ -48,7 +52,8 @@ class AMAN:
else:
print('Parsed PerformanceData.ini. Extracted ' + str(len(self.aircraftPerformance.aircrafts)) + ' aircrafts')
self.weather = Weather(self.systemConfig.Weather)
self.weather = Weather()
self.weather.acquire(self.systemConfig.Weather)
# find the airport configurations and create the workers
airportsPath = os.path.join(os.path.join(configPath, 'airports'), '*.ini')
@@ -59,24 +64,28 @@ class AMAN:
airportConfig = Airport(file, icao)
# initialize the worker thread
worker = Worker(icao, airportConfig)
worker.start()
worker = Worker()
worker.acquire(icao, airportConfig)
self.workers.append(worker)
print('Starter worker for ' + icao)
# create the EuroScope receiver
self.receiver = Euroscope(configPath, self.systemConfig.Server, self)
self.receiver = Euroscope()
self.receiver.acquire(configPath, self.systemConfig.Server, self)
def __del__(self):
def release(self):
if None != self.receiver:
del self.receiver
self.receiver.release()
self.receiver = None
if None != self.weather:
del self.weather
self.weather.release()
self.weather = None
for worker in self.workers:
worker.stop()
if None != self.workers:
for worker in self.workers:
worker.release()
self.workers = None
def updateAircraftReport(self, report : AircraftReport_pb2.AircraftReport):
# find the correct worker for the inbound