📄 endsysnode.cc
字号:
/************************************************** * File: endsysnode.cc Author: Suman Banerjee <suman@cs.umd.edu> Date: 15th March, 2001 Terms: GPL Narada implementation in myns This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ***************************************************/#include <constants.h>#include <scheduler.h>#include "endsysnode.h"#include "app-packet.h"#include "misc.h"#define MAX_DATA_PACKETS (max_data_packets.getval().u.i)NamedConstant max_data_packets("max_data_packets",1000);EndsysNode::EndsysNode (void) : Node () { m_data_packet_count = 0; m_control_packet_count = 0; if (MAX_DATA_PACKETS > 0) m_per_node_data_pkt_count = (int *) safe_malloc (sizeof(int) * MAX_DATA_PACKETS); else m_per_node_data_pkt_count = NULL; for (int i = 0; i < MAX_DATA_PACKETS; i++) m_per_node_data_pkt_count[i] = 0;}EndsysNode::~EndsysNode (void) { if (m_per_node_data_pkt_count != NULL) free(m_per_node_data_pkt_count);}void EndsysNode::specific_tx_pkt (Packet *p, int dst) { AppPacket *ap = (AppPacket *)p; printf ("[link-data-send] [ %d %d ] at %f seq %d\n", id, dst, Scheduler::Clock(), (int)(ap->u.data_p.seq_no)); return;}void EndsysNode::specific_rx_pkt_handler (Packet *p, bool is_src) { AppPacket *ap = (AppPacket *)p; switch (ap->st) { case DATA: m_data_packet_count ++; assert (ap->u.data_p.seq_no >= 0); if (ap->u.data_p.seq_no < MAX_DATA_PACKETS) { m_per_node_data_pkt_count[ap->u.data_p.seq_no] ++; //if (is_src == false) // printf ("[link-data-rcv] [ %d %d ] at %f seq %d\n", ap->src, id, Scheduler::Clock(), ap->u.data_p.seq_no); } break; case PING_RP: case PING_RP_RESPONSE: case MESH_NEIGHBOR_SETUP_REQUEST: case MESH_NEIGHBOR_SETUP_RESPONSE: case MESH_NEIGHBOR_REFRESH: case MESH_LINK_ADD: case MESH_LINK_ADD_RESPONSE: case MESH_LINK_DROP: case MESH_RT_EXCHANGE: m_control_packet_count ++; break; default: printf ("[Err] Illegal App packet type\n"); } return;}void EndsysNode::display_on_stop_simulation (void) { printf ("[StopSim Node %d ] data-pkts %d : control-pkts %d\n", id, m_data_packet_count, m_control_packet_count); for (int i = 0; i < MAX_DATA_PACKETS; i++) if (m_per_node_data_pkt_count[i] > 0) printf ("[StopSimData Node %d ] seq-no %d : count %d\n", id, i, m_per_node_data_pkt_count[i]); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -