def handle_packet(self,packet): # drop packet due to queue overflow if self.queue_size and len(self.queue) == self.queue_size: Sim.trace("%d dropped packet due to queue overflow" % (self.address)) if self.printOut: self.myfile.write(str(Sim.scheduler.current_time()) + " x\n") Sim.print_packet_loss(packet) return # drop packet due to random loss if self.loss > 0 and random.random() < self.loss: Sim.trace("%d dropped packet due to random loss" % (self.address)) if self.printOut: self.myfile.write(str(Sim.scheduler.current_time()) + " x\n") return packet.enter_queue = Sim.scheduler.current_time() if len(self.queue) == 0 and not self.busy: # packet can be sent immediately self.busy = True self.transmit(packet) else: # add packet to queue self.queue.append(packet)