Esempio n. 1
0
    def run(self):
        sending_to_queue = glb_queue.g_to_main_exchange()
        sending_to_queue.next()

        while self.is_connect:
            # инициализируем и чистим значения при последующих циклах
            pack = []  # сборка цепочки сообщений
            size_next_mess = 0
            current_message = cnf.init_ntuple_data_message()
            try:
                print ("waiting message...")
                recvd_msg = self.sock.recv(cnf.SIZE_HEADER)
            except:
                print ("reset connect")
                self.is_connect = False
                continue

            if not recvd_msg:
                print("reset connect")
                self.is_connect = False
                continue

            current_message = cnf.to_data_message_from_bytes_(bytes(recvd_msg))

            if not current_message:
                print("reset connect")
                self.is_connect = False
                continue
            self.add_to_packet_from_main_header(current_message)
            while current_message.size_next > 0 and self.is_connect:
                current_message = cnf.to_data_message_from_bytes_(bytes(self.sock.recv(size_next_mess)))
                if not current_message or self._check_mess(current_message):
                    print("dont have data or is not good. Close session...\n -->> ")
                    self.is_connect = False
                    continue
                else:
                    pack.append(current_message.data)

            # прием закончен, добавить в CacheClient

            self._add_datas_in_packet(pack)

            sending_to_queue.send(self.packet)
            print("Message is receiving ad add to queue....")
        if not self.is_connect:
            self._close_session_()
        else: return
        pass
Esempio n. 2
0
    def _callback_(self, ch, method, properties, body):
        """
        анализ сообщения
        :param message: сообщение в кодировке
        :return:

        """
        print("Global queue callback")
        # добавить в базы данных
        self.DB.add_to_databases(
            body
        )  # добавление в БД, скрыта вся логика добавления и фиксирования ответа в БД
        message = cnf.to_data_message_from_bytes_(body)
        cmd, rout_key, who_type_receiver = self._get_cmd_(
            message), self._get_rout_key_(message), self.get_type_receiver(
                message)
        if who_type_receiver == cnf.type_receivers['client']:
            print("add to queue client")
            self._add_to_queue_clients(body, rout_key)
            self._basic_ask()
            return

        elif who_type_receiver == cnf.type_receivers['pp']:
            print("add to queue pp")
            self._add_to_queue_pp_(body, rout_key)
            self._basic_ask()
            return

        elif who_type_receiver == cnf.type_receivers['server']:
            print("for server")
            self._basic_ask()
Esempio n. 3
0
def main():
    TCP_IP = cnf.server_address
    TCP_PORT = cnf.PORT
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((TCP_IP, TCP_PORT))
    cmd = CMD.NEW_PP
    sender = 0
    receiver = 100  # id сервера
    data = 0
    size_next = 0

    msg = cnf.ntuple_data_message(0, cmd, sender, receiver, size_next, data)
    mess = cnf.to_bytes_from_data_message(msg)

    if not sock.send(mess):
        return
    answer = sock.recv(cnf.SIZE_HEADER)

    if not answer:
        print("нет ответа")
        return
    message = cnf.to_data_message_from_bytes_(answer)
    self_id = message.data

    while 1:
        receiver = input("Продолжить, получатель?\n")
        id_ = msg.id + 1
        msg = cnf.ntuple_data_message(id_, CMD.ON_LIGHT, self_id, receiver,
                                      msg.size_next, msg.data)
        mess = cnf.to_bytes_from_data_message(msg)

        sock.send(mess)
        tmp = sock.recv(cnf.SIZE_HEADER) or None
        if not tmp:
            sock.close()
            return

        answer = sock.recv(24)
        if not answer:
            sock.close()
            return
        answer_ = cnf.to_data_message_from_bytes_(answer)
        print("received ->" + str(answer_))