Esempio n. 1
0
    def send(self, flag, message):
        #print ("\nTYPE = " + self.type)

        self.send_buffer = message

        if self.remote == None:
            raise 'must call "bind()" first'

        #client initializes connection


        elif flag == None and self.type == "CLIENT" and self.STATE == "ESTABLISHED":

            buffer = []

            while len(message) > 0:
                buffer.append(message[:self.window_size])
                if len(message) < self.window_size:
                    message = ''
                else:
                    message = message[self.window_size:len(message)]

            for s in buffer:
                pack = Packet(s, self.remote)
                pack.flag = None
                pack.seq_number = self.packet_number
                top_data = pack.seq_number + pack.length
                print ("-> data " + str(pack.seq_number) + " - " + str(top_data))


                self.packet_number = top_data

                self.cache[pack.seq_number + pack.length] = pack, self.current_time()

                self.sched.add(self.current_time(), pack, self.send_data)