This commit is contained in:
2025-09-11 17:11:55 +02:00
parent 4f889e2b97
commit 0b9961cf18
2 changed files with 23 additions and 21 deletions
+5 -4
View File
@@ -63,13 +63,14 @@ class AndStatus(StatusBase):
with self._lock: with self._lock:
if self._externally_initiated_completion: if self._externally_initiated_completion:
return return
if self.done: # Return if status is already done.. It must be resolved already
return
for st in self.all_statuses: for st in self.all_statuses:
with st._lock: with st._lock:
if not self.done: if st.done and not st.success:
if st.done and not st.success: self.set_exception(st.exception())
self.set_exception(st.exception()) return
return
if all(st.done for st in self.all_statuses) and all( if all(st.done for st in self.all_statuses) and all(
st.success for st in self.all_statuses st.success for st in self.all_statuses
@@ -261,24 +261,25 @@ class TimepixFlyClient:
callback_ids = list(self._status_callbacks.keys()) callback_ids = list(self._status_callbacks.keys())
for cb_id in callback_ids: for cb_id in callback_ids:
dev_status, success, error = self._status_callbacks[cb_id] dev_status, success, error = self._status_callbacks[cb_id]
if dev_status.done: with dev_status._lock:
self._status_callbacks.pop(cb_id) if dev_status.done:
continue self._status_callbacks.pop(cb_id)
if status in success: continue
dev_status.set_finished() if status in success:
logger.info(f"Status callback finished in succes: {status.value}") dev_status.set_finished()
self._status_callbacks.pop(cb_id) logger.info(f"Status callback finished in succes: {status.value}")
elif status in error: self._status_callbacks.pop(cb_id)
last_error = self.last_error() elif status in error:
logger.error( last_error = self.last_error()
f"Timepix status in error is {status.value}, with last error: {last_error.message}" logger.error(
) f"Timepix status in error is {status.value}, with last error: {last_error.message}"
dev_status.set_exception(
TimePixStatusError(
f"TimePixStatus status is '{status.value},' last error message: {last_error.message}"
) )
) dev_status.set_exception(
self._status_callbacks.pop(cb_id) TimePixStatusError(
f"TimePixStatus status is '{status.value},' last error message: {last_error.message}"
)
)
self._status_callbacks.pop(cb_id)
# Reset the _started flag if the status is in CONFIG. # Reset the _started flag if the status is in CONFIG.
if status == TimePixFlyStatus.CONFIG: if status == TimePixFlyStatus.CONFIG:
self._started = False # Should this be made thread-safe? self._started = False # Should this be made thread-safe?