📄 mainendsys.cc
字号:
/* * File: mainendsys.cc * Author: Suman Banerjee <suman@cs.umd.edu> * Date: July 31, 2001 * Terms: GPL * * myns simulator */#include <stdio.h>#include <stdlib.h>#include <sys/time.h>#include "main.h"#include "parser-event.h"#include "../endsys/endsysnode.h"#include "../endsys/rp-agent.h"#include "../endsys/mc-agent.h"extern ParserReturnInfo parser_events;extern Node ** ptr_global_node_array;extern Agent** ptr_global_agent_array;int global_rp_agent_index = -1;void print_mesh_topology(Agent** agent_list, int len);void SpecificPrintSimulation (void) { print_mesh_topology(ptr_global_agent_array,parser_events.num_agents); return;}Node * SpecificNewNode (void) { return (new EndsysNode);}void SpecificAttachAgents (void) { for (void *pos = parser_events.attach_list->GetHeadPosition(); pos != NULL; parser_events.attach_list->GetNext(pos) ) { Attachment *a = parser_events.attach_list->GetAt(pos); if (a->agent >= parser_events.attach_list->GetSize() ) { printf ("[Err] Agent Ids should be alloted serially\n"); exit(-1); } if (a->atp == AGENT_APPLICATION_RP) { /* Agent 0 is the RP */ ptr_global_agent_array[a->agent] = new rpAgent; global_rp_agent_index = a->agent; } else ptr_global_agent_array[a->agent] = new mcAgent; ptr_global_agent_array[a->agent]->init(a->agent,a->agent,ptr_global_node_array[a->node]); delete a; } if (global_rp_agent_index == -1) { printf ("[Err] RP agent is not defined\n"); exit(-1); } int rp_id = ptr_global_agent_array[global_rp_agent_index]->id; int rp_node_id = ptr_global_agent_array[global_rp_agent_index]->n->id; for (int i = 0; i < parser_events.attach_list->GetSize(); i++) if (ptr_global_agent_array[i]->t == AGENT_APPLICATION_MC) ((mcAgent*)(ptr_global_agent_array[i]))->set_rp_agent(rp_id, rp_node_id); return;}void print_mesh_topology(Agent** agent_list, int len) { printf("[mesh-topology] at %8.4f begin \n",Scheduler::Clock()); for (int i = 0; i < len; i++) { Agent *ag = agent_list[i]; if (ag != NULL) { if (ag->started == false) printf("[mesh-top] at %8.4f < ag %d nd %d > Stopped\n",Scheduler::Clock(),ag->id,ag->n->id); else if (ag->t == AGENT_APPLICATION_MC) { printf("[mesh-top] at %8.4f < ag %d nd %d > begin\n",Scheduler::Clock(),ag->id,ag->n->id); for (int j = 0; j < MAXMESHMEMBERS; j++) { if (((mcAgent*)ag)->meshrt.valid[j]) { printf("[mesh-top] to < %d > pathlen < %d > cost < %8.2f > nexthop < %d >\n",j,((mcAgent*)ag)->meshrt.pathlen[j],((mcAgent*)ag)->meshrt.cost[j],(((mcAgent*)ag)->meshrt.pathlen[j] > 1) ? ((mcAgent*)ag)->meshrt.path[j][0].agent_id : -1); if (((mcAgent*)ag)->meshrt.pathlen[j] > 1) { // printf("path is :"); //for (int k = 0; k < ((mcAgent*)ag)->meshrt.pathlen[j] - 1; k++) // printf("%d ",((mcAgent*)ag)->meshrt.path[j][k].agent_id); //printf("\n"); } MeshMember *mm = ((mcAgent*)ag)->find_mesh_member_info(j); if (mm != NULL) { printf("[dests] for origin < ag %d > are... ",mm->ainfo.agent_id); for (int k = 0; k < MAXMESHMEMBERS; k++) { if (mm->source[k] == true) { printf("%d ",k); } } } printf("\n"); } } printf("[mesh-top] at %8.4f < ag %d nd %d > end\n",Scheduler::Clock(),ag->id,ag->n->id); } printf("\n"); } } printf("[mesh-topology] at %8.4f print stop \n", Scheduler::Clock());}int main (int argc, char ** argv) { simulator_main(argc,argv); return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -