当前位置: 首页>>代码示例>>C++>>正文


C++ NODE::CompareWith方法代码示例

本文整理汇总了C++中NODE::CompareWith方法的典型用法代码示例。如果您正苦于以下问题:C++ NODE::CompareWith方法的具体用法?C++ NODE::CompareWith怎么用?C++ NODE::CompareWith使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在NODE的用法示例。


在下文中一共展示了NODE::CompareWith方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ReadLog

void LOGDATA::ReadLog (void)
{
	const unsigned MAXSIZE = 200, MAXFIELD = 30;
	char logStr[MAXSIZE];
	char logValue[ELEMENTS][MAXFIELD];
	float logCost, logMbRec, logMbTransm;
	const char *beg, *end, *flagPtr;
	int compare, line = 1, i;
	long duration;
	bool insert, add;
	char *pos;
	NODE *TempNode;
	
	while (fgets(logStr, MAXSIZE, RADIUS_LOG_FILE))	{

		beg = logStr;
		end = logStr + strlen (logStr);

		for (i = 0; i < ELEMENTS; i++)
			if (!(flagPtr = Array.StrDisjoint (&beg, end, ';', logValue[i], MAXFIELD - 1)))
				break;

// ѕроверка на существование в строке всех требуемых полей
		if (!flagPtr)	{
			fprintf (stderr, "\nWarning: Syntax error in %s at line %d:\n",
   												OPTIONS->radius_log_file, line);
			fprintf (stderr, "%s\nString format required:\n", logStr);
			fprintf (stderr, "Session_dir;Transport;4d address;IP/telephone;"
					"Start time (DD.MM.YYYY HH:MM:SS); Stop time (DD.MM.YYYY HH:MM:SS);"
					"Mb transmitted;Mb received;Session cost\n");
			continue;
		}
// «апоминаем врем¤ начала лога
		if (line == 1)
			firstDate = Array.StrCopy (logValue[START_TIME]);
// ѕроверка на попадание в один из временных интервалов
		if (!OPTIONS->process_all_log && !CheckTimePeriod (logValue[START_TIME]))
			continue;
// ѕереводим числовые значени¤ из строк в числа (заменив ',' на '.')
		if (pos = strchr (logValue[COST], ','))	*pos = '.';
		logCost = atof (logValue[COST]);
		if (pos = strchr (logValue[MB_RECEIVED], ','))	*pos = '.';
		logMbRec = atof (logValue[MB_RECEIVED]);
		if (pos = strchr (logValue[MB_TRANSMITTED], ','))	*pos = '.';
		logMbTransm = atof (logValue[MB_TRANSMITTED]);

// «апомнили продолжительность сессии в минутах
		duration = (long) difftime (DateToSecs (logValue[STOP_TIME]), 
									DateToSecs (logValue[START_TIME])) / 60 + 1;
		i = 0;
		while (1)	{
// ¬ этом цикле ищем ноду в списке уже занесенных нод
// и либо вставл¤ем новую запись, либо обновл¤ем уже существующую
			insert = add = false;
			TempNode = new NODE (logValue[ADDRESS]);
			if (i >= nodes_number)	{
				if (OPTIONS->process_all_nodes)
    				insert = add = true;
				else
    				break;
			}
			else if (i)	{
				compare = TempNode->CompareWith (*Node[i]);
				if (OPTIONS->process_all_nodes)	{
					if (!compare)
						add = true;
					else if (compare < 0)
						insert = add = true;
				}
				else if (!compare)
					add = true;
				if (!insert)
					delete TempNode;
			}
			else
				add = true;
			
			if (insert)
// ¬ставл¤ем ноду в массив под номером i
				Node = Array.ArrayPush<NODE>
						(Node, TempNode, nodes_number++, i);
			if (add)	{
// ќбновл¤ем данные о ноде
				Node[i]->sessions.all++;
				Node[i]->time.all += duration;
				if (!stricmp (logValue[DIRECTION], "IN"))	{
					Node[i]->sessions.in++;
					Node[i]->time.in += duration;
				}
				else	{
					Node[i]->sessions.out++;
					Node[i]->time.out += duration;
				}
				Node[i]->traffic.in += logMbRec;
				Node[i]->traffic.out += logMbTransm;
				if (i)
					break;
				else
					if (stricmp (logValue[TRANSPORT], "IP"))
						cost_dial += logCost;
//.........这里部分代码省略.........
开发者ID:oldprogs,项目名称:radius,代码行数:101,代码来源:logdata.cpp


注:本文中的NODE::CompareWith方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。