⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 barmanager.cpp

📁 openmosix viewer图形界面工具。o penmosix viewer图形界面工具。o penmosix viewer图形界面工具。o penmosix viewer图形界面工具。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		tile = new TwoDRect(0 + x*gridsize,0  ,0 + z*gridsize, gridsize, gridsize);				tile->setColor4v(Color[WHITE]);		tile->loadMaterials(moonMaterials);		AddObject(tile);		tile->draw();	    }		srand(time(NULL));	return 1;}int BarManager::AddObject(CObject *obj){	//never hurts to double check;	if (obj == NULL)	{		printf("ERROR! dont pass AddObjet NULL!\n");		//getchar();		return -1;	}	else	{				ObjectList.push_back(obj);		glNewList(static_world_list_base + static_world_list_cnt , GL_COMPILE_AND_EXECUTE);		    obj->draw();		glEndList();						return 0;	}}/* this whole thing needs an overhault so that one function hasall the data and can be more intelligent the map class will handlethe positioning to users can set it up more intelligently*/void BarManager :: SetupBarBase(int node, struct CObject_struct &b){    CRand r(1,4);    int xpos;    int zpos;    b.type = BAR;    xpos = 0;    zpos = 0;	    for (int i =1; i < node; i++)    {	xpos++;	if (xpos >= xsquares /2)	{	    zpos++;	    xpos = 0;	}    }    b.posX = xpos * 2 * gridsize;    //b.posX = 0;    //getchar();    b.posY=0;    b.posZ = zpos * gridsize * 2;    //b.posZ = (xsquares % node)*gridsize*2;//	b.obj_materials = greenMaterials;//	b.color_r = 0;//	b.color_g = 1;//	b.color_b = 0;//	b.color_a = 0.4;}int BarManager :: UpdateOrCreateBar(int node, int realnodeid, struct CBar_struct d){    struct bar_record r;    struct CObject_struct  base;     for (BarIter = BarList.begin(); BarIter != BarList.end(); BarIter++)	 {	    if ( BarIter->mosix_number == node)		{		     		    // printf("found node. BarIter->MosixNumer is %d node is %d  real node-id %d\n",BarIter->mosix_number, node, realnodeid);		    BarIter->bar->setData(d);		    return 1;		}	}	r.mosix_number = node;	SetupBarBase(node, base);	r.bar = new CBar(base, d);	AddBar(r);  }int BarManager :: AddBar(struct bar_record bar){    if (bar.bar == NULL)	{	    printf("Error. AddBar passed a null bar\n");	    return -1;	}    BarList.push_back(bar);    // printf("added bar : %d\n", bar.mosix_number);    NumBars++;    return 0;}int BarManager :: Show(){    ShowObjects();    ShowBars();    BuildFont();    nodeinfo();    KillFont();    return 0;}int BarManager::ShowObjects(){	glPushMatrix();	int i;        	for(ObjectIter = ObjectList.begin(); ObjectIter != ObjectList.end(); ObjectIter++)	    (*ObjectIter)->draw();	glPopMatrix();	glFlush();	return 0;}int BarManager :: ShowBars(){    glPushMatrix();    for (BarIter = BarList.begin(); BarIter != BarList.end(); BarIter++)    {		BarIter->bar->draw();    }    glPopMatrix();    return 0;}void BarManager :: dealloc(){	 for(ObjectIter = ObjectList.begin(); ObjectIter != ObjectList.end(); ObjectIter++)	 {		 // printf("dealloc'd n object in manager::dealloc\n");		 (*ObjectIter)->dealloc();			 }	 ObjectList.clear();	 for (BarIter = BarList.begin(); BarIter != BarList.end(); BarIter++)	 {	    // printf("deallocating a bar..\n");	    BarIter->bar->dealloc();	}    	BarList.clear();}        BarManager :: ~BarManager(){	 dealloc();}/* this is where openMosix/Mosix data gets turned into gl data. lots of     interesting things to do here for the intrepid hacker    color coded loads, etc*/void BarManager:: NodeToBar(struct node_info &node){    //printf("in NodeTobar..displaying %d LOAD is %d\n", DISPLAYMODE, LOAD);    struct CBar_struct bar_info;    int usedmem=0;    int tmem=0;    int rmem=0;    int load=0;    int util=0;    int usedmempercent=0;       if (DISPLAYMODE == LOAD)	{	load=node.mosix_info.load / 20 + 2;	if (load>0) {		bar_info.height = load;		// printf("load is %d\n", load);		} else {		bar_info.height = 0;	}    }    else if (DISPLAYMODE == MEM) {	tmem=node.mosix_info.tmem/1048576;	rmem=node.mosix_info.rmem/1048576;	usedmem=tmem-rmem;	if ((usedmem>0) && (tmem>0) && (rmem>0)) {		usedmempercent=(usedmem*100)/tmem;		// printf("usedmem is %d\n", usedmem);		// printf("mempercent is %d\n", usedmempercent);		usedmempercent=usedmempercent/10;		} else {		usedmempercent=0;	}	bar_info.height = usedmempercent;    }    else if (DISPLAYMODE == UTIL) {	util=node.mosix_info.util/10;	if(util>0) {		bar_info.height = util;		// printf("util  is %d\n", util);		} else {		bar_info.height = 0;	}    }	    bar_info.width = gridsize;    UpdateOrCreateBar(node.real_node_number,node.mosix_number, bar_info);}/* this makes us disregard a packet of data but thats OK because *//* we will just read it again the next time it gets sent        */int BarManager :: ReadNumNodes(){    if ( read(sd, &read_data, size) != size)    {	perror("error in ReadNumNodes.\n");	perror("read");	exit(-1);    }    // printf(" cluster contains %d nodes\n", read_data.num_nodes);    NumNodes = read_data.num_nodes;        fcntl(sd, F_SETFL, O_NONBLOCK);    return read_data.num_nodes;}void BarManager :: GetMosixData(int a){    int count = 0;     BytesRead = 0;        BytesRead = read(sd, &read_data, size);      while (BytesRead == size)    {	NodeToBar(read_data);	BytesRead = read(sd, &read_data, size);	// printnode(&read_data);    }   }void BarManager ::  quit(){    	// printf("BarManager :: quit\n");      // exit calls the destructor above, dont do explicitly.	//BarManager :: ~BarManager();		exit(0);}/****************/int BarManager :: ConnectToServer(char *addr, char *prt){    struct hostent *he;    struct sockaddr_in sockaddr;    char string[1024];    int port;    port = atoi(prt);    printf("connecting to server %s %d\n", addr, port);    sd = socket(AF_INET, SOCK_STREAM, 0);    if (sd < 0)	{	    perror("scoket failed: \n");	    exit(-1);	}    he = (struct hostent *) gethostbyname(addr);    if (!he)	{	    printf("couldnt resolve %s", addr);	    return -1;	}    sockaddr.sin_family = AF_INET;    sockaddr.sin_port = htons(port);    sockaddr.sin_addr = *(( struct in_addr *)he->h_addr);    memset(&(sockaddr.sin_zero), '\0', 8);    if ( connect(sd, (struct sockaddr *) &sockaddr, sizeof(struct sockaddr)) == -1)	{	    perror("connect\n");	    return -1;	}return 0;    }    void BarManager ::  printnode(struct node_info *info){    printf("openMosix/Mosix number:%5d\n", info->mosix_number);    printf("real number:%5d\n", info->real_node_number);    printf("Total nodes :%5d\n", info->num_nodes);    printf("load        :%5d\n", info->mosix_info.load);    printf("cpus        :%5d\n", info->mosix_info.ncpus);    printf("util        :%5d\n", info->mosix_info.util);    printf("status      :%5d\n", info->mosix_info.status);    printf("mem         :%5d\n", info->mosix_info.mem);    printf("rmem        :%5d\n", info->mosix_info.rmem);    printf("tmem        :%5d\n", info->mosix_info.tmem);#ifdef CONFIG_MOSIX_RESEARCH    printf("rio         :%5d\n", info->mosix_info.util);    printf("wio         :%5d\n", info->mosix_info.util);#endif      printf("\n");  }/****************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -