Improved known destination saving
This commit is contained in:
parent
e5c0ee4153
commit
9775893840
@ -108,7 +108,24 @@ class Identity:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def save_known_destinations():
|
def save_known_destinations():
|
||||||
|
# TODO: Improve the storage method so we don't have to
|
||||||
|
# deserialize and serialize the entire table on every
|
||||||
|
# save, but the only changes.
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if hasattr(Identity, "saving_known_destinations"):
|
||||||
|
wait_interval = 0.2
|
||||||
|
wait_timeout = 5
|
||||||
|
wait_start = time.time()
|
||||||
|
while Identity.saving_known_destinations:
|
||||||
|
time.sleep(wait_interval)
|
||||||
|
if time.time() > wait_start+wait_timeout:
|
||||||
|
RNS.log("Could not save known destinations to storage, waiting for previous save operation timed out.", RNS.LOG_ERROR)
|
||||||
|
return False
|
||||||
|
|
||||||
|
Identity.saving_known_destinations = True
|
||||||
|
save_start = time.time()
|
||||||
|
|
||||||
storage_known_destinations = {}
|
storage_known_destinations = {}
|
||||||
if os.path.isfile(RNS.Reticulum.storagepath+"/known_destinations"):
|
if os.path.isfile(RNS.Reticulum.storagepath+"/known_destinations"):
|
||||||
try:
|
try:
|
||||||
@ -126,10 +143,20 @@ class Identity:
|
|||||||
file = open(RNS.Reticulum.storagepath+"/known_destinations","wb")
|
file = open(RNS.Reticulum.storagepath+"/known_destinations","wb")
|
||||||
umsgpack.dump(Identity.known_destinations, file)
|
umsgpack.dump(Identity.known_destinations, file)
|
||||||
file.close()
|
file.close()
|
||||||
RNS.log("Done saving known destinations to storage", RNS.LOG_VERBOSE)
|
|
||||||
|
save_time = time.time() - save_start
|
||||||
|
if save_time < 1:
|
||||||
|
time_str = str(round(save_time*1000,2))+"ms"
|
||||||
|
else:
|
||||||
|
time_str = str(round(save_time,2))+"s"
|
||||||
|
|
||||||
|
RNS.log("Saved known destinations to storage in "+time_str, RNS.LOG_VERBOSE)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Error while saving known destinations to disk, the contained exception was: "+str(e), RNS.LOG_ERROR)
|
RNS.log("Error while saving known destinations to disk, the contained exception was: "+str(e), RNS.LOG_ERROR)
|
||||||
|
|
||||||
|
Identity.saving_known_destinations = False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def load_known_destinations():
|
def load_known_destinations():
|
||||||
if os.path.isfile(RNS.Reticulum.storagepath+"/known_destinations"):
|
if os.path.isfile(RNS.Reticulum.storagepath+"/known_destinations"):
|
||||||
|
Loading…
Reference in New Issue
Block a user