📄 adm.cc
字号:
gv_DiskInfo[lv_iCurrentDisk].AvailSize = atol(Buffer);
}
}
}
/****************************************************************
**
** Function: StartOne
** Purpose: 启动一个进程
** Input Parammeters:
Type -- 进程所属类型
** Return:
** datetime:
**
*****************************************************************/
void StartOne(const char *Type)
{
C_BaseSock Socket;
struct sockaddr_in Address;
char CommandLine[STRING_LEN];
char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
int lv_iCurrentHost,lv_iCurrentProc,Lv_iCurrentRow;
for(lv_iCurrentProc = 1,Lv_iCurrentRow = 0;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
{
if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
{
continue;
}
Lv_iCurrentRow ++;
if (Lv_iCurrentRow == gv_iSelectedRow)
{
break;
}
}
if (Lv_iCurrentRow = gv_iSelectedRow)
{
sprintf(CommandLine,"Command@Start@%d",gv_ProcInfo[lv_iCurrentProc].Index);
lv_iCurrentHost = gv_ProcInfo[lv_iCurrentProc].SocketId;
if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
{
gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);
memset(&Address,0,sizeof(Address));
Address.sin_family = AF_INET;
Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
strcpy(SendBuffer,"Linkage Billing User");
RecvBuffer[0] = 0;
if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
if (strcmp(RecvBuffer,"Yes") != 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
}
if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
}
}
/****************************************************************
**
** Function: StartAll
** Purpose: 启动全部进程
** Input Parammeters:
Type -- 进程所属类型
** Return:
** datetime:
**
*****************************************************************/
void StartAll(const char *Type)
{
C_BaseSock Socket;
struct sockaddr_in Address;
char CommandLine[STRING_LEN];
char Buffer[STRING_LEN];
char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
int lv_iCurrentHost,lv_iCurrentProc;
for(lv_iCurrentHost = 1;lv_iCurrentHost <= gv_iHostCount;lv_iCurrentHost++)
{
strcpy(CommandLine,"Command@Start");
for(lv_iCurrentProc = 1;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
{
if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
{
continue;
}
if (gv_ProcInfo[lv_iCurrentProc].SocketId != lv_iCurrentHost)
{
continue;
}
strcpy(Buffer,CommandLine);
sprintf(CommandLine,"%s@%d",Buffer,gv_ProcInfo[lv_iCurrentProc].Index);
}
if (strcmp(CommandLine,"Command@Start") == 0)
{
continue;
}
if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
{
gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);
memset(&Address,0,sizeof(Address));
Address.sin_family = AF_INET;
Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
strcpy(SendBuffer,"Linkage Billing User");
RecvBuffer[0] = 0;
if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
if (strcmp(RecvBuffer,"Yes") != 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
}
if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
}
}
/****************************************************************
**
** Function: StopOne
** Purpose: 停止一个进程
** Input Parammeters:
Type -- 进程所属类型
** Return:
** datetime:
**
*****************************************************************/
void StopOne(const char *Type)
{
C_BaseSock Socket;
struct sockaddr_in Address;
char CommandLine[STRING_LEN];
char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
int lv_iCurrentHost,lv_iCurrentProc,Lv_iCurrentRow;
for(lv_iCurrentProc = 1,Lv_iCurrentRow = 0;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
{
if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
{
continue;
}
Lv_iCurrentRow ++;
if (Lv_iCurrentRow == gv_iSelectedRow)
{
break;
}
}
if (Lv_iCurrentRow = gv_iSelectedRow)
{
sprintf(CommandLine,"Command@Stop@%d",gv_ProcInfo[lv_iCurrentProc].Index);
lv_iCurrentHost = gv_ProcInfo[lv_iCurrentProc].SocketId;
if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
{
gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);
memset(&Address,0,sizeof(Address));
Address.sin_family = AF_INET;
Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
strcpy(SendBuffer,"Linkage Billing User");
RecvBuffer[0] = 0;
if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
if (strcmp(RecvBuffer,"Yes") != 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
}
if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
return;
}
}
}
/****************************************************************
**
** Function: StopAll
** Purpose: 停止全部进程
** Input Parammeters:
Type -- 进程所属类型
** Return:
** datetime:
**
*****************************************************************/
void StopAll(const char *Type)
{
C_BaseSock Socket;
struct sockaddr_in Address;
char CommandLine[STRING_LEN];
char Buffer[STRING_LEN];
char SendBuffer[STRING_LEN],RecvBuffer[STRING_LEN];
int lv_iCurrentHost,lv_iCurrentProc;
for(lv_iCurrentHost = 1;lv_iCurrentHost <= gv_iHostCount;lv_iCurrentHost++)
{
strcpy(CommandLine,"Command@Stop");
for(lv_iCurrentProc = 1;lv_iCurrentProc <= gv_iProcCount;lv_iCurrentProc++)
{
if (strcmp(gv_ProcInfo[lv_iCurrentProc].Type,Type) != 0)
{
continue;
}
if (gv_ProcInfo[lv_iCurrentProc].SocketId != lv_iCurrentHost)
{
continue;
}
strcpy(Buffer,CommandLine);
sprintf(CommandLine,"%s@%d",Buffer,gv_ProcInfo[lv_iCurrentProc].Index);
}
if (strcmp(CommandLine,"Command@Stop") == 0)
{
continue;
}
if (gv_HostInfo[lv_iCurrentHost].HostSocket <= 0)
{
gv_HostInfo[lv_iCurrentHost].HostSocket = Socket.Socket(AF_INET,SOCK_STREAM,0);
memset(&Address,0,sizeof(Address));
Address.sin_family = AF_INET;
Address.sin_port = htons(gv_HostInfo[lv_iCurrentHost].HostPort);
Address.sin_addr.s_addr = inet_addr(gv_HostInfo[lv_iCurrentHost].HostIP);
if (Socket.Connect(gv_HostInfo[lv_iCurrentHost].HostSocket,(struct sockaddr *)(void *)&Address,sizeof(Address)) < 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
strcpy(SendBuffer,"Linkage Billing User");
RecvBuffer[0] = 0;
if(Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,SendBuffer,sizeof(SendBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
if(Socket.ReadLine(gv_HostInfo[lv_iCurrentHost].HostSocket,RecvBuffer,sizeof(RecvBuffer))<=0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
if (strcmp(RecvBuffer,"Yes") != 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
}
if (Socket.WriteLine(gv_HostInfo[lv_iCurrentHost].HostSocket,CommandLine,sizeof(CommandLine)) <= 0)
{
Socket.Close(gv_HostInfo[lv_iCurrentHost].HostSocket);
gv_HostInfo[lv_iCurrentHost].HostSocket = -1;
continue;
}
}
}
/****************************************************************
**
** Function: AdminProc
** Purpose: 进程操作
** Input Parammeters:
Type -- 进程所属类型
** Return:
** datetime:
**
*****************************************************************/
void AdminProc(const char *Type)
{
int Key;
C_BaseSock Socket;
for(;;)
{
RebuildProc(Type);
g_Type = (char *)Type;
signal(SIGALRM, ProcTimeBreak);
alarm(INTERVAL);
Key = getch();
alarm(0);
if (Key == 27)
{
for(int i = 1;i <= gv_iHostCount;i++)
{
if (gv_HostInfo[i].HostSocket > 0)
{
Socket.Close(gv_HostInfo[i].HostSocket);
gv_HostInfo[i].HostSocket = 0;
}
}
break;
}
switch(Key)
{
case KEY_UP:
gv_iSelectedRow--;
break;
case KEY_DOWN:
gv_iSelectedRow++;
break;
case KEY_LEFT:
gv_iStartRow -= 13;
gv_iSelectedRow -= 13;
break;
case KEY_RIGHT:
gv_iStartRow += 13;
gv_iSelectedRow += 13;
break;
case 'R' :
case 'r' :
StartOne(Type);
break;
case 'X' :
case 'x' :
StopOne(Type);
break;
case 'A' :
case 'a' :
StartAll(Type);
break;
case 'S' :
case 's' :
StopAll(Type);
break;
default :
break;
}
}
}
/****************************************************************
**
** Function: AdminDisk
** Purpose: 磁盘操作
** Input Parammeters:
Type -- 磁盘所属类型
** Return:
** datetime:
**
*****************************************************************/
void AdminDisk(const char *Type)
{
int Key;
C_BaseSock Socket;
for(;;)
{
RebuildDisk(Type);
g_Type = (char *)Type;
signal(SIGALRM,DiskTimeBreak);
alarm(INTERVAL);
Key = getch();
alarm(0);
if (Key == 27)
{
for(int i = 1;i <= gv_iHostCount;i++)
{
if (gv_HostInfo[i].HostSocket > 0)
{
Socket.Close(gv_HostInfo[i].HostSocket);
gv_HostInfo[i].HostSocket = 0;
}
}
break;
}
switch(Key)
{
case -1:
LoadDiskData(Type);
break;
case KEY_UP:
gv_iSelectedRow--;
break;
case KEY_DOWN:
gv_iSelectedRow++;
break;
case KEY_LEFT:
gv_iStartRow -= 13;
gv_iSelectedRow -= 13;
break;
case KEY_RIGHT:
gv_iSelectedRow += 13;
gv_iSelectedRow += 13;
break;
default :
break;
}
}
return;
}
//-------------------------------------The End------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -