void CMANETView::OnRouterForceselfishness()
{
	// TODO: Add your command handler code here
	CMANETDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	srand((unsigned)time(NULL));
	int RouterSize=pDoc->Routers.GetSize();
	if(CheckNetwork())
	{
		if(FS->DoModal()==IDOK)
		{
			int i;
			int NodeNum;
			CRouter* node;
			for(i=0;i<FS->RoutersNum;i++)
			{
				do//Skip These types of nodes
				{
					NodeNum=rand()%RouterSize;
					node=(CRouter*)(pDoc->Routers[NodeNum]);
				}while((node->Type)||(node->Traffics.GetSize())||(DestTrafficCheck(node)));
				//Choose a node which -> not selfish & not connected & not be destine traffic
				node->Type=FS->SelfishType+1;
			}
		}
	}
}
void CMANETView::OnSimulateRun() 
{
	// TODO: Add your command handler code here
	if(CheckNetwork())
	{
		CSimDlg simulation;
		simulation.Document=this->GetDocument();
		simulation.DoModal();
	}
}
void CMANETView::OnSimulationStatistics() 
{
	// TODO: Add your command handler code here
	if(CheckNetwork())
	{
		CStat statistics;
		statistics.Document=this->GetDocument();
		statistics.DoModal();
	}	
}
示例#4
0
int	main()
{
	if (ID::Init(SDL_INIT_VIDEO) == -1)
	{
		std::cout << "Fatal Error: ID::Init()" << std::endl;
		return -1;
	}
	ID::Window*		win;
	ID::Wrapper_Event*	we;
	ID::Event		event;
	Env*			env;
	Sockets_manager*	sktM;
	Protocol_Manager*	pm;

	try
	{
		win = new ID::Window(UI_WIDTH, UI_HEIGHT,
				     SDL_SWSURFACE /*| SDL_NOFRAME*/);
		if (win == NULL)
		{
			std::cerr << "Fatal Error: ID::Window()" << std::endl;
			return -1;
		}
		SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,
				SDL_DEFAULT_REPEAT_INTERVAL);
		win->SetCbKeyUp(__main_winKeyUp, NULL);
		win->SetCbKeyDown(__main_winKeyDown, NULL);
		if (ID::InitWrappers() == -1)
		{
			std::cerr << "Fatal Error: ID::InitWrappers()" << std::endl;
			delete win;
			ID::Quit();
			return -1;
		}
		if (InitInstances(win) == -1)
			throw 1;
	}
	catch (int e)
	{
		std::cerr << "Error " << e << ": Cannot init program" << std::endl;
		CleanProgram(win);
		return -1;
	}

	env = Env::GetInstance();
	we = ID::Wrapper_Event::GetInstance();
	sktM = Sockets_manager::GetInstance();
	pm = Protocol_Manager::GetInstance();
	while (env->alive == true)
	{
		CheckNetwork(sktM, pm);
		if (we->PollEvent(&event))
		{
			pthread_mutex_lock(&(env->displayMutex));
			if (propagateEvent(win, &event) == 1)
				env->alive = false;
			pthread_mutex_unlock(&(env->displayMutex));
		}
		usleep(10);
	}
	CleanProgram(win);
	return 0;
}