Added cache job scheduler

This commit is contained in:
Mark Qvist 2022-07-02 13:24:07 +02:00
parent 532f9ee665
commit fc4c7638a6
1 changed files with 17 additions and 8 deletions

View File

@ -127,6 +127,7 @@ class Reticulum:
MDU = MTU - HEADER_MAXSIZE - IFAC_MIN_SIZE MDU = MTU - HEADER_MAXSIZE - IFAC_MIN_SIZE
CACHE_TIME = 24*60*60 CACHE_TIME = 24*60*60
JOB_INTERVAL = 300
router = None router = None
config = None config = None
@ -145,12 +146,6 @@ class Reticulum:
# classes, saving necessary information to disk and carrying # classes, saving necessary information to disk and carrying
# out cleanup operations. # out cleanup operations.
if RNS.Transport.owner.share_instance:
if RNS.Transport.owner.is_shared_instance:
RNS.Transport.owner.__clean_caches()
else:
RNS.Transport.owner.__clean_caches()
RNS.Transport.exit_handler() RNS.Transport.exit_handler()
RNS.Identity.exit_handler() RNS.Identity.exit_handler()
@ -210,6 +205,7 @@ class Reticulum:
self.is_shared_instance = False self.is_shared_instance = False
self.is_connected_to_shared_instance = False self.is_connected_to_shared_instance = False
self.is_standalone_instance = False self.is_standalone_instance = False
self.jobs_thread = None
if not os.path.isdir(Reticulum.storagepath): if not os.path.isdir(Reticulum.storagepath):
os.makedirs(Reticulum.storagepath) os.makedirs(Reticulum.storagepath)
@ -257,6 +253,19 @@ class Reticulum:
signal.signal(signal.SIGINT, Reticulum.sigint_handler) signal.signal(signal.SIGINT, Reticulum.sigint_handler)
signal.signal(signal.SIGTERM, Reticulum.sigterm_handler) signal.signal(signal.SIGTERM, Reticulum.sigterm_handler)
def __start_jobs(self):
if self.jobs_thread == None:
self.jobs_thread = threading.Thread(target=self.__jobs)
self.jobs_thread.setDaemon(True)
self.jobs_thread.start()
def __jobs(self):
while True:
# Clean caches
self.__clean_caches()
time.sleep(Reticulum.JOB_INTERVAL)
def __start_local_interface(self): def __start_local_interface(self):
if self.share_instance: if self.share_instance:
try: try:
@ -269,7 +278,7 @@ class Reticulum:
self.is_shared_instance = True self.is_shared_instance = True
RNS.log("Started shared instance interface: "+str(interface), RNS.LOG_DEBUG) RNS.log("Started shared instance interface: "+str(interface), RNS.LOG_DEBUG)
self.__clean_caches() self.__start_jobs()
except Exception as e: except Exception as e:
try: try:
@ -295,7 +304,7 @@ class Reticulum:
self.is_shared_instance = False self.is_shared_instance = False
self.is_standalone_instance = True self.is_standalone_instance = True
self.is_connected_to_shared_instance = False self.is_connected_to_shared_instance = False
self.__clean_caches() self.__start_jobs()
def __apply_config(self): def __apply_config(self):
if "logging" in self.config: if "logging" in self.config: