当前位置: 首页>>代码示例>>C++>>正文


C++ NodeData::BufferRetrieve_Host方法代码示例

本文整理汇总了C++中NodeData::BufferRetrieve_Host方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeData::BufferRetrieve_Host方法的具体用法?C++ NodeData::BufferRetrieve_Host怎么用?C++ NodeData::BufferRetrieve_Host使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在NodeData的用法示例。


在下文中一共展示了NodeData::BufferRetrieve_Host方法的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で登録済み
//.........这里部分代码省略.........
开发者ID:LXiong,项目名称:ccn,代码行数:101,代码来源:ccn.cpp


注:本文中的NodeData::BufferRetrieve_Host方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。