def handle_arrival_msg(self): # TODO: impl protocol to handle arrived packet from network layer. # call self.msg_handler() to deliver to application layer. msg = self.network_layer.recv() if util.valid_ack(msg): sequence = util.get_sequence(msg) self.logger.info("Sender received ack%d", sequence) with self.sender_lock: self.sender_ack_base = sequence if util.valid_data(msg): sequence = util.get_sequence(msg) if sequence == GoBackN.receiver_expect_sequence: self.logger.info("Receiver received expected packet pkt%d", sequence) packet = util.make_ack_packet(config.MSG_TYPE_ACK, sequence) self.network_layer.send(packet) self.logger.info("Receiver send back ack%d", sequence) payload = util.get_payload(msg) self.msg_handler(payload) with GoBackN.gbn_lock: GoBackN.receiver_expect_sequence = ( GoBackN.receiver_expect_sequence + 1) % util.HASH_SIZE else: self.logger.info("Receiver received unexpected packet pkt%d", sequence) if GoBackN.receiver_expect_sequence > 0: packet = util.make_ack_packet( config.MSG_TYPE_ACK, GoBackN.receiver_expect_sequence - 1) self.network_layer.send(packet) self.logger.info("Recevier send back ack%d", GoBackN.receiver_expect_sequence - 1)
def handle_arrival_msg(self): msg = self.network_layer.recv() # TODO: impl protocol to handle arrived packet from network layer. # call self.msg_handler() to deliver to application layer. if util.valid_ack(msg): with StopAndWait.ss_lock: StopAndWait.sender_ack_sequence = util.get_sequence(msg) if util.valid_data(msg): sequence = util.get_sequence(msg) packet = util.make_ack_packet(config.MSG_TYPE_ACK, sequence) self.network_layer.send(packet) if StopAndWait.receiver_sequence != sequence: self.logger.info('Receiver received new packet: pkt%d', sequence) with StopAndWait.ss_lock: StopAndWait.receiver_sequence = sequence payload = util.get_payload(msg) self.msg_handler(payload) else: self.logger.info( 'Receiver received duplicate packet: pkt%d, ignored', sequence)
def get_sequence_safe(self, id): if 'astral206' in self.config['ground_truth'] and self.config['ground_truth']['astral206'] and len(id) != 7: sequence = str(self.original_sequences[id[:7]].seq).upper() else: sequence = util.get_sequence(self.config, id) return sequence
def new_animation(basename, ext, num, freq, sequence, num_digits=1, offset=0): frame_names = util.name_sequence(basename, ext, num, num_digits, offset) frames = util.get_sequence(frame_names, sequence) return Animation(frames, freq)
def __init__(self, size, scale): pygame.init() self.scale = scale self.size = size if scale: self.window = pygame.display.set_mode((size[0]*2, size[1]*2)) else: self.window = pygame.display.set_mode(size) self.screen = pygame.Surface(size) self.screen.set_colorkey((0,0,0)) self.actual_screen = pygame.display.get_surface() self.camera = camera.Camera(util.vec2(30,25),size) pygame.mouse.set_visible(0) self.clock = pygame.time.Clock() self.is_running = True self.restart_level_counter = -1 self.current_stage_id = stage.STAGE_INTRO self.remove_player = False # physics #init_physics() # music: self.bg_music = util.load_sound("data/channel_panic!-theme.ogg") #self.bg_music.play(-1) #self.bg_music_playing = True self.bg_music_playing = False # billboards self.billboards = [] self.billboards.append(billboard.Billboard("data/background_stars.png",util.vec2(0,0),10,True)) self.billboards.append(billboard.Billboard("data/background_city.png",util.vec2(0,210),40,True,False,False)) self.billboards.append(billboard.Billboard("data/background_city2.png",util.vec2(0,190),30,True,False,True)) #timer self.map_timer = billboard.GuiTimerBar(util.vec2(240,0),15) # misc names = util.name_sequence("data/entity_door","png",4) # lol hack frames = util.get_sequence(names,[0,1,2,3,4,4,4,4,4,4,4,4,4,4]) self.door_anim = animation.Animation(frames,8) self.animate_door = False self.fade_in_out = False self.fade_in_out_time = 0 self.playing_intro = True # key gui thingy self.gui_key = billboard.GuiKeys(util.vec2(0,0),16) # game settings #self.player = player.Player(util.vec2(100,20), self.space) #print(self.player.object_type) #self.camera = camera.Camera(util.vec2(30,25),size) #self.current_stage = None # set color key to black #self.screen.set_colorkey(pygame.Color(0,0,0)) pygame.key.set_repeat(1, 20)