Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-20 07:58:56

0001 import os
0002 import socket
0003 import threading
0004 
0005 from pandaharvester.harvestercore import core_utils
0006 from pandaharvester.harvestercore.db_interface import DBInterface
0007 
0008 
0009 # base class for agents
0010 class AgentBase(threading.Thread):
0011     # constructor
0012     def __init__(self, single_mode):
0013         threading.Thread.__init__(self)
0014         self.singleMode = single_mode
0015         self.stopEvent = None
0016         self.hostname = socket.gethostname()
0017         self.os_pid = os.getpid()
0018         self.dbInterface = DBInterface()
0019 
0020     # set stop event
0021     def set_stop_event(self, stop_event):
0022         self.stopEvent = stop_event
0023 
0024     # check if the agent is going to be terminated
0025     def terminated(self, wait_interval, randomize=True):
0026         if self.singleMode:
0027             return True
0028         return core_utils.sleep(wait_interval, self.stopEvent, randomize)
0029 
0030     # get process identifier
0031     def get_pid(self):
0032         thread_id = self.ident if self.ident else 0
0033         return f"{self.hostname}_{self.os_pid}-{format(thread_id, 'x')}"
0034 
0035     # make logger
0036     def make_logger(self, base_log, token=None, method_name=None, send_dialog=True):
0037         if send_dialog and hasattr(self, "dbInterface"):
0038             hook = self.dbInterface
0039         else:
0040             hook = None
0041         return core_utils.make_logger(base_log, token=token, method_name=method_name, hook=hook)