def send(self, duration): """Sends random messages for specified duration.""" stop_time = simulator.scheduler.get_time() + duration while stop_time > simulator.scheduler.get_time(): message = ''.join(random.choice(string.letters) for _ in xrange(self.message_len)) self.host.send(Packet(self.host.ip, self.dest, message)) yield sleep(random.expovariate(self.rate))
def __transmit(self): """Transmit packet.""" packet = self.queue.pop() log('queue-end %d %d' % (self.id, packet.id)) log('transmit-start %d %d' % (self.id, packet.id)) self.busy = True yield sleep(packet.size / self.bandwidth) log('transmit-end %d %d' % (self.id, packet.id)) self.busy = False if self.queue: simulator.new_thread(self.__transmit()) log('propogate-start %d %d' % (self.id, packet.id)) yield sleep(self.prop_delay) log('propogate-end %d %d' % (self.id, packet.id)) yield self.dest.received(packet)