예제 #1
0
    def get_recving_msg(self):
        """
        get the net msg being received
        """
        #  if no recving msg pending there, create one.
        if self._recving_msg is None:
            self._recving_msg = async_msg.CNetMsg(is_postmsg=False)

        if self._recving_msg.is_recvmsg_complete():
            self._recving_msg = async_msg.CNetMsg(is_postmsg=False)

        if self._is_1st_recv_msg:
            self._recving_msg.set_need_head(True)
            self._is_1st_recv_msg = False
        else:
            self._recving_msg.set_need_head(False)

        msg = self._recving_msg
        return msg
예제 #2
0
파일: context.py 프로젝트: hustcsxg/UPL4CY
 def move2recving_msg(self):
     """
     get the net msg being received
     """
     #  if no recving msg pending there, create one.
     if self._recving_msg is None:
         self._recving_msg = async_msg.CNetMsg(is_postmsg=False)
         self._recving_msg.set_msg_context(self)
     if self._is_1st_recv_msg:
         self._recving_msg.set_need_head(True)
     else:
         self._recving_msg.set_need_head(False)
예제 #3
0
 def _post_ackok_msg(self, to_addr, from_addr, uniq_id):
     """
     create an ack msg
     """
     log.info('post ack ok msg.')
     msg = async_msg.CNetMsg(is_postmsg=True)
     msg.set_to_addr(to_addr[0], to_addr[1])
     msg.set_from_addr(from_addr[0], from_addr[1])
     msg.set_msg_type(self._type_man.getnumber_bytype('ACK_OK'))
     msg.set_flag(async_msg.MSG_FLAG2NUM['FLAG_NORMAL'])
     msg.set_uniq_id(uniq_id)
     msg.set_body('0')
     self.post_msg(msg)
예제 #4
0
파일: control.py 프로젝트: zuijiawoniu/CUP
 def _on_heartbeat(self, netmsg):
     ip_port, _ = netmsg.get_from_addr()
     log.info('receive heartbeat, msg_len:%d, msg_flag:%d, msg_src:%s, '
              'uniqid:%d' % (netmsg.get_msg_len(), netmsg.get_flag(),
                             str(ip_port), netmsg.get_uniq_id()))
     ack_msg = msg.CNetMsg(is_postmsg=True)
     ack_msg.set_from_addr(self._master_ipport, (1, 1))
     ipaddr, stub_future = netmsg.get_from_addr()
     ack_msg.set_to_addr(ipaddr, stub_future)
     ack_msg.set_flag(netmsg.get_flag())
     ack_msg.set_msg_type(self._type_man.getnumber_bytype('ACK_HEART_BEAT'))
     ack_msg.set_uniq_id(netmsg.get_uniq_id() + 1)
     ack_msg.set_body('ACK_HEART_BEAT')
     resource = hb_service.LinuxHost(name=str(self._master_ipport))
     resource.deserilize(netmsg.get_body())
     self._heartbeat_service.refresh('%s:%s' % (ip_port[0], ip_port[1]),
                                     resource)
     self.post_msg(ack_msg)
     return
예제 #5
0
파일: control.py 프로젝트: zuijiawoniu/CUP
 def test_abc(self):
     """test network speed of cup.net.async"""
     if self._status.get_status() != self._status.RUNNING:
         log.warn('control service is not running, stop heartbeat')
         return
     netmsg = None
     hostinfo = 'a' * 128 * 1024
     while self._status.get_status() == self._status.RUNNING:
         # hostinfo = cuphb.LinuxHost(
         #     str(self._agent_ipport), True,
         #     self._confdict['control']['interface']
         # )
         netmsg = msg.CNetMsg(is_postmsg=True)
         netmsg.set_from_addr(self._agent_ipport, (1, 1))
         netmsg.set_to_addr(self._master_ipport, (1, 1))
         netmsg.set_flag(self._last_heartbeat)
         netmsg.set_msg_type(self._type_man.getnumber_bytype('HEART_BEAT'))
         netmsg.set_uniq_id(1)
         netmsg.set_body(hostinfo)
         self.post_msg(netmsg)
예제 #6
0
파일: control.py 프로젝트: zuijiawoniu/CUP
 def _send_heartbeat_loop(self):
     if self._status.get_status() != self._status.RUNNING:
         log.warn('control service will stop. stop sending heartbeat')
         return
     hostinfo = cuphb.LinuxHost(str(self._agent_ipport), True,
                                self._confdict['control']['interface'])
     log.info('to create msg and send msg')
     netmsg = msg.CNetMsg(is_postmsg=True)
     netmsg.set_from_addr(self._agent_ipport, (1, 1))
     netmsg.set_to_addr(self._master_ipport, (1, 1))
     netmsg.set_flag(1)
     netmsg.set_msg_type(self._type_man.getnumber_bytype('HEART_BEAT'))
     netmsg.set_uniq_id(1)
     netmsg.set_body(hostinfo.serilize())
     self.post_msg(netmsg)
     log.info('finish queue sending heartbeat to {0}'.format(
         self._master_ipport))
     self._executor.delay_exec(
         int(self._confdict['control']['heartbeat_interval']) - 3,
         self._send_heartbeat_loop,
         urgency=executor.URGENCY_HIGH)