Пример #1
0
class Switch():
    def __init__(self, switchRadix, reconfig_penalty, timeline_params):

        self.switchRadix = switchRadix
        self.reconfig_penalty = reconfig_penalty
        self.switch_scheduler = Scheduler(switchRadix, reconfig_penalty)
        self.demand = Timeline(timeline_params)
        self.reconfig_delay = reconfig_penalty
        self.currConfig = None

    def update(self, clock):

        if self.switch_scheduler.readyToSchedule(self.demand, clock):
            demandMatrix = self.demand.getDemand()
            self.switch_scheduler.scheduleDemand(demandMatrix)

        if self.reconfig_delay > 0:
            self.reconfig_delay = self.reconfig_delay - 1
            return

        if self.currConfig == None:
            self.currConfig = self.switch_scheduler.getNextConfig()

        if self.currConfig != None and self.currConfig.timeDuration > 0:
            self.demand.serveDemand(self.currConfig)
            self.currConfig.service()

            if self.currConfig.timeDuration == 0:

                self.currConfig = None
                self.reconfig_delay = self.reconfig_penalty