コード例 #1
0
ファイル: fifo.py プロジェクト: JvanDalfsen/calvin-base
 def _set_state(self, state):
     self.fifo = [Token.decode(d) for d in state['fifo']]
     self.N = state['N']
     self.readers = set(state['readers'])
     self.write_pos = state['write_pos']
     self.read_pos = state['read_pos']
     self.tentative_read_pos = state['tentative_read_pos']
コード例 #2
0
 def _set_state(self, state):
     self.fifo = [Token.decode(d) for d in state['fifo']]
     self.N = state['N']
     self.readers = set(state['readers'])
     self.write_pos = state['write_pos']
     self.read_pos = state['read_pos']
     self.tentative_read_pos = state['tentative_read_pos']
コード例 #3
0
 def __init__(self, length):
     super(FIFO, self).__init__()
     self.fifo = [Token(0)] * length
     self.N = length
     self.readers = set()
     # NOTE: For simplicity, modulo operation is only used in fifo access,
     #       all read and write positions are monotonousy increasing
     self.write_pos = 0
     self.read_pos = {}
     self.tentative_read_pos = {}
コード例 #4
0
ファイル: fifo.py プロジェクト: PStahl/calvin-base
    def _set_state(self, state):
        for reader in state['fifo']:
            if state.get('catchup_fifo_key') in self.fifo:
                self.fifo[reader] = self.fifo[state['catchup_fifo_key']]
                self.write_pos[reader] = self.write_pos[state['catchup_fifo_key']]
            else:
                if not state['fifo'][reader]:
                    self.fifo[reader] = [Token(0)] * self.N
                else:
                    self.fifo[reader] = [Token.decode(token) for token in state['fifo'][reader]]
                self.write_pos[reader] = state['write_pos'][reader]

        self.N = state['N']
        self.readers.update(set(state['readers']))
        self.read_pos.update(state['read_pos'])
        self.tentative_read_pos.update(state['tentative_read_pos'])