📄 dce_hinfo.c
字号:
/***************************************Ho Chi Minh City University of Technology Computer Science Department Distributed Computing Environment (DCE)Written by Nguyen Van Noi -59406114File dce_hinfo.c on Tue Dec 22 13:30:40 1998****************************************/#include <values.h>#include "dce_server.h"PHINFONewHinfo (int order, u_long addr){ PHINFO p = (PHINFO) malloc (sizeof (HINFO)); if (!p) return NULL; p->order = order; p->addr = addr; p->status = 1; p->time = 2 * TIMEOUT_IAMALIVE + 1; return p;}voidDecTime (void *pt){ PHINFO p = (PHINFO) pt; if (p->time >= 0) p->time -= TIMEOUT_IAMALIVE; else p->status = 0;}voiddce_server_dcetime (){ TravelList (Server.pList, DecTime);}int _MinOrder;voidMinOrder (void *pt){ PHINFO p = (PHINFO) pt; if ((p->status == 1) && (_MinOrder > p->order)) _MinOrder = p->order;}intdce_server_minorder (){ _MinOrder = MAXINT; TravelList (Server.pList, MinOrder); return _MinOrder;}intcmpsinfo (void *p1, void *p2){ PHINFO p = (PHINFO) p1; u_long *pu = (u_long *) p2; if (*pu == p->addr) { p->status = 1; p->time = 2 * TIMEOUT_IAMALIVE + 1; return 1; } return 0;}voiddce_agent_update_newmsg (){ PHINFO p; void **pr = ItemLookup (Server.pList, (void *) &msg.saddr, cmpsinfo); if (pr) { free (pr); return; } p = NewHinfo (msg.order, msg.saddr); if (!p) return; InsertList (Server.pList, (void *) p);}intcmppp (void *p1, void *p2){ PHINFO p = (PHINFO) p1; u_long *pu = (u_long *) p2; if (*pu == p->addr) return 1; return 0;}voiddce_server_delete_server (u_long u){ DeleteItem (Server.pList, (void *) &u, cmppp, NULL);}voiduserbroadcast (void *p){ long *pl = (long *) p; Server.Msg.lextra = *pl; dce_server_mcastsend ((char *) &Server.Msg, sizeof (MSG));}voiddce_server_userbroadcast (){ TravelList (Server.pUserList, userbroadcast);}voidservicebroadcast (void *pt){ PSERVICEINFO p = (PSERVICEINFO) pt; Server.Msg.nextra = p->param; strcpy (Server.Msg.sername, p->sername); dce_server_mcastsend ((char *) &Server.Msg, sizeof (MSG));}voiddce_server_servicebroadcast (){ TravelList (Server.pService, servicebroadcast);}voiduserservicebroadcast (void *pt){ PUSERSERVICE p = (PUSERSERVICE) pt; msg.type = DCE_MSG_ALL_REPLY_ALL_USERSERVICE; msg.who = UNKNOWN; msg.pid = p->pid; msg.saddr = p->serveraddr; msg.uid = p->uid; msg.nextra = p->sernum; msg.aaddr = p->clientaddr; msg.lextra = p->tStart; msg.lextra1 = p->tEnd; msg.sport = p->time; dce_server_mcastsend ((char *) &msg, sizeof (MSG));}voiddce_server_userservicebroadcast (){ TravelList (Server.pCurUserService, userservicebroadcast);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -