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
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)
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)
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
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)
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)