本文整理汇总了C++中NodeData::StatisticalInfo_recvCcnMsg方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeData::StatisticalInfo_recvCcnMsg方法的具体用法?C++ NodeData::StatisticalInfo_recvCcnMsg怎么用?C++ NodeData::StatisticalInfo_recvCcnMsg使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeData
的用法示例。
在下文中一共展示了NodeData::StatisticalInfo_recvCcnMsg方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AppLayerCCNHost
void AppLayerCCNHost(Node* node, Message* msg) {
NodeData* nodeData;
nodeData = (NodeData*)node->appData.nodeData;
switch(msg->eventType)
{
/*//fujiwara//
* 1. 移動を検知したらMR(interest)を作成してPoAとHOMEにおくる
* 2. MR(data)を受け取ったら
* さらに分岐
case hand_over_kenchi //やることを書く
{
clocktype send_delayTime;
uint32_t chunk_num;
map<uint32_t, clocktype>::iterator it;
uint32_t next_msgName = global_node_data->return_MsgName();
uint32_t end_chunk_num = next_msgName % 40 + 10;
CcnMsg* ccnMsg;
ccnMsg = new CcnMsg();
ccnMsg->resent_times = 0;
ccnMsg->ccn_method = DEFAULT;
ccnMsg->msg_type = Interest;
ccnMsg->msg_name = next_msgName; //msg_nameはよくわからない 多分解析のときにわかりやすくする狙いか?
ccnMsg->msg_chunk_num = nodeData->return_lastChunkNum(ccnMsg) + 1;
ccnMsg->EncodeFullNameMsg();
ccnMsg->sender_node_id = node->nodeId; // node->nodeid = このメッセージを送るノードのID
ccnMsg->source_node_id = source_node_id; //ここを変更 source_node_id = 送信先ノード(現状サーバが一個しかとれない仕様……)
ccnMsg->payload_length = 30; //ペイロードはヘッダを除いたデータ部分の大きさ
ccnMsg->hops_limit = 20;
ccnMsg->content_type = CommonData;
ccnMsg->end_chunk_num = end_chunk_num;
ccnMsg->interest_genTime = node->getNodeTime();
ccnMsg->data_genTime = node->getNodeTime();
nodeData->set_lastChunkNum(ccnMsg); //chunkの最後の値を記録 よくわからない 必要?
nodeData->reqMapInput(node, ccnMsg); //msg_full_nameとノードのシミュレーション時間のペアを記録する
nodeData->fibSend_DEFAULT(node, ccnMsg);//送信
nodeData->make_reTransMsg(node, ccnMsg);//再送の話 よくわからない 必要か?
}*/
case MSG_APP_FromTransDataReceived: // データ受け取り時
{
TransportToAppDataReceived *openResult;
openResult = (TransportToAppDataReceived*) MESSAGE_ReturnInfo(msg);
APP_TcpCloseConnection(node, openResult->connectionId);
// msgからccnメッセージを取得
// ccnメッセージを処理
// データ送信の場合、TCP接続要求を送る
// msgのキーからccnメッセージを取り出す
CcnMsg* ccnMsg;
ccnMsg = nodeData->BufferRetrieve_Host(node, msg);
Node* remote_node;
NodeData* remote_nodeData;
remote_node = MAPPING_GetNodePtrFromHash(GlobalNodeData::nodeHash, ccnMsg->previous_node_id);
remote_nodeData = (NodeData*)remote_node->appData.nodeData;
// パケットロストによる取得エラー
if(nodeData->node_role + remote_nodeData->node_role == CLIENT + RELAY_NODE) {
if((rand() * 100.0) < (nodeData->error_rate * RAND_MAX)) {
//printf("packet lost occured at %d->%d\n", remote_node->nodeId, node->nodeId);
//nodeData->statData->packet_lostTimes++;
if(ccnMsg->ccn_method == PROPOSAL &&
(ccnMsg->msg_type == Interest || ccnMsg->msg_type == Data)){
} else if(ccnMsg->ccn_method == PRIOR) {
nodeData->statData->packet_lostTimes++; // this is not lost but unacquired
break;
} else {
break;
}
}
}
nodeData->StatisticalInfo_recvCcnMsg(node, ccnMsg);
// ホップカウント(loop検出用)
if(!ccnMsg->checkHopCount()) {
printf("hop count is over\n");
break;
}
switch(ccnMsg->ccn_method)
{
case DEFAULT:
case DEFAULT_FAST:
{
switch(ccnMsg->msg_type) {
case Interest:
{
// ソースノードまで転送
// PITに名前を記録(msg_full_name)
// ソースノードならDataパケットを返送
// 返送する際はPITを参照
if(nodeData->pitInsert_DEFAULT(node, ccnMsg)) {
// PITで登録済み
//.........这里部分代码省略.........