Beispiel #1
0
int main(int argc, char **argv)
{
    char *portNumber = getPortNumber(argc, argv);
    if (NULL == portNumber)
    {
        return -1;
    }
    if (checkPortNumber(portNumber) != 0)
    {
        help();
        return -1;
    }

    if (argc > 1) server(atoi(portNumber));
    else server(0);
    return 0;
}
BOOL getInitParam(int argc, char *argv[], SRVR_INIT_PARAM_Def &initParam, char* strName, char* strValue)
{
	int		count;
	char*	arg = NULL;
	int		number;
	BOOL	retcode;
	BOOL	argEmpty = FALSE;
	BOOL	argWrong = FALSE;

	initParam.debugFlag			= 0;
	initParam.eventFlag			= 0;
	initParam.asSrvrObjRef[0]	= '\0';
	initParam.srvrType			= SRVR_UNKNOWN;
	initParam.startType			= NON_INTERACTIVE;
	initParam.noOfServers		= DEFAULT_NUMBER_OF_SERVERS;
	initParam.cfgSrvrTimeout	= DEFAULT_CFGSRVR_TIMEOUT;
	initParam.DSId				= PUBLIC_DSID; 
	initParam.transport			= CEE_TRANSPORT_TCP;
	initParam.portNumber		= DEFAULT_PORT_NUMBER;
	initParam.majorVersion		= DEFAULT_MAJOR_VERSION;
	initParam.IpPortRange		= DEFAULT_PORT_RANGE;
	initParam.DSName[0]			= '\0';
	count = 1;

	strName[0] = 0;
	strValue[0] = 0;

#ifdef NSK_PLATFORM
	initTcpProcessName(initParam.TcpProcessName);
	initParam.ASProcessName[0]	= '\0';
	strcpy( initParam.EmsName, DEFAULT_EMS );

	initParam.EmsTimeout		= DEFAULT_EMS_TIMEOUT;
	initParam.initIncSrvr		= DEFAULT_INIT_SRVR;
	initParam.initIncTime		= DEFAULT_INIT_TIME;
	initParam.DSG =DEFAULT_DSG;
	initParam.srvrTrace = false;
	initParam.TraceCollector[0]	= '\0';
	initParam.RSCollector[0]	= '\0';
#else
	initParam.IpAddress[0]		= '\0';
#endif

	while ( count < argc)
	{
		if( (arg = (char*)realloc( arg, strlen( argv[count]) + 1) ) == NULL)
		{
			strcpy( strName, "realloc");
			sprintf( strValue, "%d",strlen( argv[count]) + 1);
			return FALSE;
		}

		strcpy(arg, argv[count]);
		
		strupr(arg);

		if (strcmp(arg, "-A") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.asSrvrObjRef)-1)
					strcpy(initParam.asSrvrObjRef, argv[count]);
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-D") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
					initParam.debugFlag = number;
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-E") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					if( number != 0 && number != 1 && number !=2 )
					{
						argWrong = TRUE;
						break;
					}

					initParam.eventFlag = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-DS") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.DSId = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-DSN") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.DSName)-1)
					strcpy(initParam.DSName, argv[count]);
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-PN") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE && checkPortNumber(number) == TRUE )
				{
					initParam.portNumber = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-PR") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE && number >= 3)
				{
					initParam.IpPortRange = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
#ifdef NSK_PLATFORM
		else
		if (strcmp(arg, "-TCP") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.TcpProcessName)-1)
				{
					if( checkProcess( argv[count]) != TRUE )
					{
						argWrong = TRUE;
						break;
					}
					strcpy(initParam.TcpProcessName, argv[count]);
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-AS") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.ASProcessName)-1)
				{
					if( checkProcess( argv[count]) != TRUE )
					{
						argWrong = TRUE;
						break;
					}
					strcpy(initParam.ASProcessName, argv[count]);
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-EMS") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.EmsName)-1)
				{
					strcpy(initParam.EmsName, argv[count]);
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-TMC") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.TraceCollector)-1)
				{
					strcpy(initParam.TraceCollector, argv[count]);
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-RMC") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.RSCollector)-1)
				{
					strcpy(initParam.RSCollector, argv[count]);
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-TE") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.EmsTimeout = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-ISRVR") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.initIncSrvr = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-ITIME") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.initIncTime = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-DSG") == 0)
		{
			initParam.DSG =true;
		}
		else
		if (strcmp(arg, "-STC") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < 2)
				{
					if (strcmp(argv[count], "Y") == 0)
						initParam.srvrTrace = true;
					else
						initParam.srvrTrace = false;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
#else
		else
		if (strcmp(arg, "-IP") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if (strlen(argv[count]) < sizeof(initParam.IpAddress)-1)
					strcpy(initParam.IpAddress, argv[count]);
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
#endif
		else
		if (strcmp(arg, "-T") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.transport = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-N") == 0)
		{
			if (++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.noOfServers = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-TO") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.cfgSrvrTimeout = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-V") == 0)
		{
			if(++count < argc && argv[count][0] != '-' )
			{
				if( getNumber( argv[count], number ) == TRUE )
				{
					initParam.majorVersion = number;
				}
				else
				{
					argWrong = TRUE;
					break;
				}
			}
			else
			{
				argEmpty = TRUE;
				break;
			}
		}
		else
		if (strcmp(arg, "-I") == 0)
			initParam.startType = INTERACTIVE;
		else
		if (strcmp(arg, "-FO") == 0)
			initParam.startType = FAILOVER;
		else
		{
			argWrong = TRUE;
			count = argc;
			break;
		}

		count++;
	}

#ifdef NSK_PLATFORM

	if (initParam.TraceCollector[0]	== '\0')
		strcpy(initParam.TraceCollector, initParam.EmsName);
	if (initParam.RSCollector[0] == '\0')
		strcpy(initParam.RSCollector, initParam.EmsName);
#endif

	if( argEmpty == TRUE || argWrong == TRUE )
	{
		strcpy( strName, arg);
		if(count < argc)
			strcpy( strValue, argv[count]);
		else
			strcpy( strValue, "");
		retcode = FALSE;
	}
	else
		retcode = TRUE;

	if( arg != NULL ) free(arg);

	return retcode;
}