Esempio n. 1
0
def loop(first_start=False):
    global _ShedulerTask
    lg.out(4, 'os_windows_update.loop mode=' + str(settings.getUpdatesMode()))

    if settings.getUpdatesMode() == settings.getUpdatesModeValues()[2]:
        lg.out(4, 'os_windows_update.loop is finishing. updates is turned off')
        return

    shed = schedule.Schedule(from_dict=read_shedule_dict())
    nexttime = shed.next_time()
    #    nexttime = next(d)
    if first_start:
        nexttime = time.time()

    if nexttime is None:
        lg.out(1, 'os_windows_update.loop ERROR calculating shedule interval')
        return

    if nexttime < 0:
        lg.out(1, 'os_windows_update.loop nexttime=%s' % str(nexttime))
        return

    # DEBUG
    # nexttime = time.time() + 60.0

    delay = nexttime - time.time()
    if delay < 0:
        lg.warn('delay=%s %s' % (str(delay), shed))
        delay = 0

    lg.out(
        6,
        'os_windows_update.loop run_sheduled_update will start after %s seconds (%s hours)'
        % (str(delay), str(delay / 3600.0)))
    _ShedulerTask = reactor.callLater(delay, run_sheduled_update)
Esempio n. 2
0
	def __init__(self):
		#config logger
		self.loglvl = LOGLVL	
		if not self.loglvl == logging.DEBUG:
			self.logfile = 'handle.log'
		else:
			self.logfile = 'server.log'
		logging.basicConfig(level=self.loglvl, filename=self.logfile, format='%(asctime)s %(name)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
		self.log = logging.getLogger('HANDLE')
		
		#create task q
		self.tasks = Queue.Queue(maxsize=0)
		

		#create database
		self.database = server.Database(self.tasks)
		self.database.loadconfig()
		self.checkin()
		self.database.create_default_events()
		
		#create sever controller
		self.server = server.Bukkit(self.database, self) 
		
		#create networking
		self.network = network.Network(self.tasks)
		
		#create schedule
		self.schedule = schedule.Schedule(self.tasks)

		#create api connection
		self.api = api.Api(self.tasks)
		
		#create backup
		self.backup = server.Backup(self.tasks)
		
		#put startup tasks
		self.network.cmd_q.put(NetworkCommand(NetworkCommand.SERVE,('',int(self.database.config['Handle']['port']))))
		
		#define task handlers
		self.handlers = {
					Task.HDL_COMMAND:self.__hdl_command,
					Task.HDL_EXIT:self.__hdl_exit,
					Task.HDL_UPDATE:self.__hdl_update,
					Task.HDL_CHECKUP:self.__hdl_checkup,
					Task.NET_JOB:self.__net_job,
					Task.NET_SCREEN:self.__net_screen,
					Task.NET_VERSION:self.__net_version,
					Task.NET_LINEUP:self.__net_lineup,
					Task.NET_UPPKG:self.__net_uppkg,
					Task.SRV_START:self.__srv_start,
					Task.SRV_STOP:self.__srv_stop,
					Task.SRV_RESTART:self.__srv_restart,
					Task.SRV_INPUT:self.__srv_input,
					Task.CLT_UPDATE:self.__clt_update,
					Task.SCH_ADD:self.__sch_add,
					Task.SCH_REMOVE:self.__sch_remove,
					Task.SCH_UPDATE:self.__sch_update,
					Task.API_REGISTER:self.__api_register,
					Task.API_REMOVE:self.__api_remove,
					Task.API_GET:self.__api_get,
					Task.API_UPDATE:self.__api_update,
					Task.API_CONNECT:self.__api_connect,
					Task.ON_CONNECT:self.__on_connect,
					Task.SRV_BACKUP:self.__srv_backup,
					}
		#set alive flag
		self.alive = threading.Event()
		self.alive.set()
		

		self.pid = os.getpid()
		open("handle.pid", "w").write(str(self.pid))

					
		threading.Thread.__init__( self )