예제 #1
0
파일: link.py 프로젝트: mkeagar/cs460
 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)