本文整理汇总了C++中CNode::clearPing方法的典型用法代码示例。如果您正苦于以下问题:C++ CNode::clearPing方法的具体用法?C++ CNode::clearPing怎么用?C++ CNode::clearPing使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNode
的用法示例。
在下文中一共展示了CNode::clearPing方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addNode
int CNodeMgr::addNode(char* p_addr, char* p_name, bool p_busy, bool p_needUHP)
{
/* 外で排他かけること!! */
/* 簡単に書式チェック */
char* p = p_addr;
if (strlen(p_addr) == 0) return -1;
if ((p = strchr(p+1, '.')) == NULL) return -1;
if ((p = strchr(p+1, '.')) == NULL) return -1;
if ((p = strchr(p+1, '.')) == NULL) return -1;
if ((p = strchr(p+1, ':')) == NULL) return -1;
// 自分は無視するm_ownNodeが未取得ならやはり無視
if (useLobbyServer())
{
char* pos = strchr(m_ownNode, ':');
if (m_ownNode[0] == '\0' || strncmp(m_ownNode, p_addr, (int)(pos - p_addr)) == 0) return -1;
}
int idx = -1;
// UNKNOWN_NAMEは無条件に不一致とする
if (strncmp(p_name, UNKNOWN_NAME, sizeof(UNKNOWN_NAME)) != 0)
{
sockaddr_in addr = g_netMgr->getAddrFromString(p_addr);
idx = findNodeIdx_name_ip(p_name, addr.sin_addr.S_un.S_addr);
}
if (idx == -1)
{
//DBGOUT_NET("addNode %s:%s\n", p_name, p_addr);
/* 重複していなければ追加 */
CNode node;
__strncpy(node.m_addr, p_addr, 31);
__strncpy(node.m_name, p_name, 29);
node.m_state = p_busy ? State_Busy : State_NoResponse;
node.m_ex = 0;
node.m_rank = Rank_F;
node.m_delay = 0;
node.m_win = 0;
node.m_ignoreSlow = 1;
node.m_round = 0;
node.m_deny = true;
node.m_needDetail = true;
node.m_gamecount = 0;
node.m_scriptCode = 0;
node.m_allowIntrusion = false;
node.m_watchMaxNode = -16;
node.m_galleryCount = 0;
node.m_galleryUpdateTime= timeGetTime();
/* 定期的に他のノードにポートの拡散を依頼する */
node.m_uhpNodeIdx = 0;
__strncpy(node.m_ver, "----", 9);
memcpy(node.m_id, INVALID_MID, sizeof(INVALID_MID));
memset(node.m_msg, 0, 256);
node.clearBattleInfo();
node.m_validInfo = 0x00000000;
node.clearPing();
m_nodeList.add(node);
CNode* newnode = &m_nodeList[m_nodeList.size() - 1];
newnode->m_tmpaddr.add(new char[32]);
__strncpy(newnode->m_tmpaddr[newnode->m_tmpaddr.size() - 1], p_addr, 31);
return (m_nodeList.size() - 1);
}
else
{
if (findNodeIdx_address(p_addr) == -1)
{
// ポートを追加
m_nodeList[idx].m_tmpaddr.add(new char[32]);
__strncpy(m_nodeList[idx].m_tmpaddr[m_nodeList[idx].m_tmpaddr.size() - 1], p_addr, 31);
// return idx; //新規追加ではないのでidxを返してはいけない
//DBGOUT_NET("addNode : multi port %s:%s\n", p_name, p_addr);
}
//else DBGOUT_NET("addNode : duplicate error %s:%s\n", p_name, p_addr);
}
return -1;
}