示例#1
0
 def write(self, data, metadata):
     if not self.slots_available(1, metadata):
         raise QueueFull()
     write_pos = self.write_pos
     self.fifo[write_pos % self.N] = data
     self.write_pos = write_pos + 1
     return True
示例#2
0
 def write(self, data, metadata):
     if not self.slots_available(1, metadata):
         raise QueueFull()
     # Write token in peer's FIFO
     write_pos = self.write_pos[metadata]
     self.fifo[metadata][write_pos % self.N] = data
     self.write_pos[metadata] = write_pos + 1
     return True
示例#3
0
 def write(self, data):
     if not self.slots_available(1):
         raise QueueFull()
     _log.debug("WRITING pos %s" % str(self.write_pos))
     # Write token in peer's FIFO
     peer = self.readers[self._update_turn()]
     write_pos = self.write_pos[peer]
     self.fifo[peer][write_pos % self.N] = data
     self.write_pos[peer] = write_pos + 1
     return True
示例#4
0
 def write(self, data, metadata):
     #_log.debug("WRITE1 %s" % metadata)
     if not self.slots_available(1, metadata):
         raise QueueFull()
     # Write token in peer's FIFO
     peer = self.readers[self._update_turn()]
     write_pos = self.write_pos[peer]
     #_log.debug("WRITE2 %s %s %d\n%s" % (metadata, peer, write_pos, str(map(str, self.fifo[peer]))))
     self.fifo[peer][write_pos % self.N] = data
     self.write_pos[peer] = write_pos + 1
     return True
示例#5
0
 def write(self, data, metadata):
     # print data, metadata
     # metadata is port_id of containing port
     data, peer = self._unwrap_data(data)
     if not self.slots_available(1, peer):
         # if not slots_available:
         raise QueueFull()
     # Write token in peer's FIFO
     write_pos = self.write_pos[peer]
     #_log.debug("WRITE2 %s %s %d\n%s" % (metadata, peer, write_pos, str(map(str, self.fifo[peer]))))
     self.fifo[peer][write_pos % self.N] = data
     self.write_pos[peer] = write_pos + 1
     return True
示例#6
0
 def write(self, data, metadata):
     slots = []
     full = True
     for reader in self.readers:
         s = self.N - (self.write_pos[reader] - self.read_pos[reader]) - 1
         slots.append((s, reader))
         if s > 0:
             full = False
     if full:
         raise QueueFull()
     # Write token in peer with most slots FIFO
     peer = max(slots)[1]
     write_pos = self.write_pos[peer]
     self.fifo[peer][write_pos % self.N] = data
     self.write_pos[peer] = write_pos + 1
     return True