Beispiel #1
0
    def run(self):
        while True:
            if is_stopped:
                break

            try:
                data, addr, received_time = tasks_queue.get(timeout=1)
                received_packet = Packet(data=data)
                answer_packet = Packet(version=3, mode=4)

                # we think that we take from first level server
                answer_packet.stratum = 2
                answer_packet.poll = 10

                # emulate that we have taken time before receiving
                answer_packet.reference_time = received_time - 3

                # copy time to originate field
                answer_packet.originate_time_high = received_packet.transmit_time_high
                answer_packet.originate_time_low = received_packet.transmit_time_low

                # fill receive and transmit times
                answer_packet.received_time = received_time
                answer_packet.transmit_time = time.time() + ZERO_TIME_DELTA

                # send packet to client
                socket.sendto(answer_packet.bytes(), addr)
                print("Answered to {0}:{1}".format(addr[0], addr[1]))
            except Empty:
                continue