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

📄 mainserv.c

📁 这是一个linux下基于MiniGUI的手机界面设计源码
💻 C
📖 第 1 页 / 共 5 页
字号:
					(loadedMesg.locInfo)[i].index = i+1;					printf("Index is %d.\n",(loadedMesg.locInfo)[i].index);					printf("File content:Hour %d Min %d SRCID %lX\n",loadedMesg.locInfo[i].dwxx.hour,loadedMesg.locInfo[i].dwxx.minute,loadedMesg.locInfo[i].dwxx.srcID );					printf(" Address of the message %d is %lX.\n",i,&loadedMesg.locInfo[i] );									}			Fclose( fp );			if( mesgCount != 0 )				/* Alloacate the memory of address array for message */
     				p= loadedMesg.pLocInfo = malloc(  LEN_P_LOCINFO * mesgCount );			printf(" Address of the address array head is %lX.\n",loadedMesg.pLocInfo );			for( i=0; i<mesgCount; i++)			{				*p = &loadedMesg.locInfo[i];				printf(" Address of the message pointer %d is %lX.\n",i,*p );				p++;			}			loadedMesg.countOfMesg = mesgCount;				}		else	//AutoRollBack the supposed numbers of records		{						loadedMesg.locInfo = (LOCINFO  *)malloc( LEN_LOCINFO * AUTOROLLVAL_DW);			fp = Fopen( "DWXX.data","r+");			fseek( fp, ( mesgCount-AUTOROLLVAL_DW )*LEN_DWXX, SEEK_SET );			printf("Position is %d\n",mesgCount-AUTOROLLVAL_DW );			printf("LEN_DWXX is %d\n",LEN_DWXX);			printf("(mesgCount-AUTOROLLVAL_DW)*LEN_DWXX is %d\n",( mesgCount-AUTOROLLVAL_DW )*LEN_DWXX);			for( i=0; i<AUTOROLLVAL_DW; i++)				/******Problem here,can't use the wrapper function Fread()*******/
     				if( fread( &( (loadedMesg.locInfo)[i].dwxx), LEN_DWXX, 1, fp) != 1)
     				{
       				if( feof(fp))
       					{
         					Fclose(fp);
         					break;
       					}
       				perror("File read error!");
     				}				else				{					(loadedMesg.locInfo)[i].index = i+1;					printf("Index is %d.\n",(loadedMesg.locInfo)[i].index);					printf("File content:Hour %d Min %d SRCID %lX\n",loadedMesg.locInfo[i].dwxx.hour,loadedMesg.locInfo[i].dwxx.minute,loadedMesg.locInfo[i].dwxx.srcID );					printf(" Address of the message %d is %lX.\n",i,&loadedMesg.locInfo[i] );									}			Fclose( fp );			if( mesgCount != 0 )				/* Alloacate the memory of address array for message */
     				p= loadedMesg.pLocInfo = malloc(  LEN_P_LOCINFO * AUTOROLLVAL_DW );			printf(" Address of the address array head is %lX.\n",loadedMesg.pLocInfo );			for( i=0; i<AUTOROLLVAL_DW; i++)			{				*p = &loadedMesg.locInfo[i];				printf(" Address of the message pointer %d is %lX.\n",i,*p );				p++;			}			loadedMesg.countOfMesg = AUTOROLLVAL_DW;			/* Rewrite the records to file to keep the latest AUTOROLLVAL_DW numbers of records */			SaveData( INBOX, TYPE_OF_DWXX, AUTOROLLVAL_DW );				countDWXX = AUTOROLLVAL_DW;			ProcTerminate( DW, countDWXX );		}		Pthread_mutex_unlock( &countDW_Mutex );		Pthread_mutex_unlock( &fLock.DW_FLOCK );						break;	case	TYPE_OF_TXXX:		if( sType == INBOX)		{			UnloadData( INBOX, TYPE_OF_TXXX);						Pthread_mutex_lock( &fLock.TXINDEX_FLOCK );			Pthread_mutex_lock( &countTXINDEX_Mutex );			MergeRecords( TYPE_OF_TXXX );			/* Alloacate the memory of message array.*/			if( mesgCount <= AUTOROLLVAL_TX )			{				loadedMesg.commInfo = (COMMINFO  *)malloc( LEN_COMMINFO * mesgCount);				fp = Fopen( "TXINDEX.data","r+");				rewind(fp);				for( i=0; i<mesgCount; i++)					/******Problem here,can't use the wrapper function Fread()*******/
     					if( fread( &( (loadedMesg.commInfo)[i].txIndex), LEN_TXINDEX, 1, fp) != 1)
     					{
       					if( feof(fp))
       						{
         						Fclose(fp);
         						break;
       						}
       					perror("File read error!");
     					}					else					{						(loadedMesg.commInfo)[i].index = i+1;						printf("Index is %d.\n",(loadedMesg.commInfo)[i].index);						printf("File content:Hour %d Min %d SRCID %lX,MainIndex is %d LockSymbol %d \n",loadedMesg.commInfo[i].txIndex.hour,loadedMesg.commInfo[i].txIndex.minute,loadedMesg.commInfo[i].txIndex.srcID, loadedMesg.commInfo[i].txIndex.mainIndex,loadedMesg.commInfo[i].txIndex.lockSymbol );						printf(" Address of the message %d is %lX.\n",i,&loadedMesg.commInfo[i] );										}					Fclose( fp );					if( mesgCount != 0 )					/* Alloacate the memory of address array for message */
     					q= loadedMesg.pCommInfo = malloc(  LEN_P_COMMINFO * mesgCount );				printf(" Address of the address array head is %lX.\n",loadedMesg.pCommInfo );				for( i=0; i<mesgCount; i++)				{					*q = &loadedMesg.commInfo[i];					if( loadedMesg.commInfo[i].txIndex.lockSymbol == 0 )						loadedMesg.countOfUnread ++;					printf(" Address of the message pointer %d is %lX.\n",i,*q );					q++;				}							}						Pthread_mutex_unlock( &countTXINDEX_Mutex );			Pthread_mutex_unlock( &fLock.TXINDEX_FLOCK );				loadedMesg.countOfMesg = mesgCount;			printf("loadedMesg.countOfUnread is %d\n",loadedMesg.countOfUnread);				break;		}		else if( sType == OUTBOX )		{			UnloadData( OUTBOX, TYPE_OF_TXXX);						if( mesgCount <= AUTOROLLVAL_TXOUT )			{				loadedMesg.commInfoOut = (COMMINFO  *)malloc( LEN_COMMINFO * mesgCount);				fp = Fopen( "TXINDEX_OUT.data","r+");				rewind(fp);				for( i=0; i<mesgCount; i++)
     					if( fread( &( (loadedMesg.commInfoOut)[i].txIndex), LEN_TXINDEX, 1, fp) != 1)
     					{
       					if( feof(fp))
       						{
         						Fclose(fp);
         						break;
       						}
       					perror("File read error!");
     					}					else					{						(loadedMesg.commInfoOut)[i].index = i+1;						printf("Index is %d.\n",(loadedMesg.commInfoOut)[i].index);						printf("File content:Hour %d Min %d SRCID %lX,MainIndex is %d LockSymbol is %d\n",loadedMesg.commInfoOut[i].txIndex.hour,loadedMesg.commInfoOut[i].txIndex.minute,loadedMesg.commInfoOut[i].txIndex.srcID, loadedMesg.commInfoOut[i].txIndex.mainIndex,loadedMesg.commInfoOut[i].txIndex.lockSymbol );						printf(" Address of the message %d is %lX.\n",i,&loadedMesg.commInfo[i] );										}					Fclose( fp );								if( mesgCount != 0 )					/* Alloacate the memory of address array for message */
     					q= loadedMesg.pCommInfoOut = malloc(  LEN_P_COMMINFO * mesgCount );				printf(" Address of the address array head is %lX.\n",loadedMesg.pCommInfoOut );				for( i=0; i<mesgCount; i++)				{					*q = &loadedMesg.commInfoOut[i];					if( loadedMesg.commInfoOut[i].txIndex.lockSymbol == 0 )						loadedMesg.countOfUnread ++;										q++;				}							}			else	//AutoRollBack the supposed numbers of records			{								loadedMesg.commInfoOut = (COMMINFO  *)malloc( LEN_COMMINFO * AUTOROLLVAL_TXOUT);				fp = Fopen( "TXINDEX_OUT.data","r+");				fseek( fp, ( mesgCount-AUTOROLLVAL_TXOUT )*LEN_TXINDEX, SEEK_SET );				for( i=0; i<AUTOROLLVAL_TXOUT; i++)					/******Problem here,can't use the wrapper function Fread()*******/
     					if( fread( &( (loadedMesg.commInfoOut)[i].txIndex), LEN_TXINDEX, 1, fp) != 1)
     					{
       					if( feof(fp))
       						{
         						Fclose(fp);
         						break;
       						}
       					perror("File read error!");
     					}					else					{						(loadedMesg.commInfoOut)[i].index = i+1;						printf("Index is %d.\n",(loadedMesg.commInfoOut)[i].index);						printf("File content:Hour %d Min %d SRCID %lX,MainIndex is  %d\n",loadedMesg.commInfoOut[i].txIndex.hour,loadedMesg.commInfoOut[i].txIndex.minute,loadedMesg.commInfoOut[i].txIndex.srcID,loadedMesg.commInfoOut[i].txIndex.mainIndex );						printf(" Address of the message %d is %lX.\n",i,&loadedMesg.commInfoOut[i] );											}					Fclose( fp );					/* Alloacate the memory of address array for message */
     				q= loadedMesg.pCommInfoOut = malloc(  LEN_P_COMMINFO * AUTOROLLVAL_TXOUT );				printf(" Address of the address array head is %lX.\n",loadedMesg.pCommInfo );				for( i=0; i<AUTOROLLVAL_TXOUT; i++)				{					*q = &loadedMesg.commInfoOut[i];					if( loadedMesg.commInfoOut[i].txIndex.lockSymbol == 0 )						loadedMesg.countOfUnread ++;					printf(" Address of the message pointer %d is %lX.\n",i,*q );					q++;				}				mesgCount = AUTOROLLVAL_TXOUT;					/* Rewrite the records to file to keep the latest AUTOROLLVAL_DW numbers of records */					SaveData( OUTBOX, TYPE_OF_TXXX, AUTOROLLVAL_TXOUT );				ResetCount( OUTBOX, TYPE_OF_TXXX, AUTOROLLVAL_TXOUT);							}		}		loadedMesg.countOfMesg = mesgCount;				break;	}//End of switch	tidCount--;	}void UnloadData( SOURCETYPE sType, MESGTYPE mesgType ){	printf("-----------Enter func UnlaodData() now!------------\n");	//Async the updated data in the buffer to the file	//Then release the memory in the  buffer	switch( mesgType )	{	case 	TYPE_OF_DWXX:			if( sType == INBOX && loadedMesg.locInfo != NULL || loadedMesg.pLocInfo!=NULL)		{			printf("******************Start to free!**********************\n");			free( loadedMesg.locInfo );			free( loadedMesg.pLocInfo );			loadedMesg.locInfo = NULL;			loadedMesg.pLocInfo = NULL;				}				break;	case 	TYPE_OF_TXXX:				if( sType == INBOX && loadedMesg.commInfo != NULL || loadedMesg.pCommInfo!=NULL)		{			free( loadedMesg.commInfo );			free( loadedMesg.pCommInfo );			loadedMesg.commInfo = NULL;			loadedMesg.pCommInfo = NULL;		}		else if( sType==OUTBOX && loadedMesg.commInfoOut!=NULL ||loadedMesg.pCommInfoOut!= NULL)		{			printf("*****************Unload now!*************\n");			free( loadedMesg.commInfoOut );			free( loadedMesg.pCommInfoOut );			loadedMesg.commInfoOut = NULL;			loadedMesg.pCommInfoOut = NULL;		}				break;		case  TYPE_OF_ICXX:		if( loadedMesg.icInfo != NULL)		{			free( loadedMesg.icInfo );			loadedMesg.icInfo = NULL;		}				break;	case  TYPE_OF_BBXX:				if( loadedMesg.bbInfo != NULL)		{			free( loadedMesg.bbInfo );			loadedMesg.bbInfo = NULL;		}				break;	case  TYPE_OF_FKXX:				if( loadedMesg.fkInfo != NULL )		{			free( loadedMesg.fkInfo );			loadedMesg.fkInfo = NULL;		}				break;	}//End of switch 	loadedMesg.countOfMesg = 0;	loadedMesg.countOfUnread = 0;}int CompareTime( int bigger, LOCINFO **p,int year, int mon, int day,int hour, int min, int sec ){	if( bigger )	{		if( (*p)->dwxx.year > year)			return 1;		else if( (*p)->dwxx.year == year )		{			if( (*p)->dwxx.mon > mon)				return 1;			else if( (*p)->dwxx.mon == mon )			{				if( (*p)->dwxx.day > day)					return 1;				else if( (*p)->dwxx.day == day )				{					if( (*p)->dwxx.hour > hour )						return 1;					else if( (*p)->dwxx.hour == hour )					{						if( (*p)->dwxx.minute > min )							return 1;						else if( (*p)->dwxx.minute == min )						{							if( (*p)->dwxx.second >= sec )								return 1;							else								return 0;						}						else							return 0;					}					else						return 0;				}				else					return 0;			}			else				return 0;				}		else			return 0;	}	else	{		if( (*p)->dwxx.year < year)			return 1;		else if( (*p)->dwxx.year == year )		{			if( (*p)->dwxx.mon < mon)				return 1;			else if( (*p)->dwxx.mon == mon )			{				if( (*p)->dwxx.day < day)					return 1;				else if( (*p)->dwxx.day == day )				{					if( (*p)->dwxx.hour < hour )						return 1;					else if( (*p)->dwxx.hour == hour )					{						if( (*p)->dwxx.minute < min )							return 1;						else if( (*p)->dwxx.minute == min )						{							if( (*p)->dwxx.second <= sec )								return 1;							else								return 0;						}						else							return 0;					}					else						return 0;				}				else					return 0;			}			else				return 0;				}		else			return 0;	}}/* Use the method of quick sort to resort the records */void	QSort( SORTTYPE sortType, LOCINFO **head, LOCINFO **rear ){	long tmp;	int tYear,tMon,tDay,tHour,tMin,tSec;	LOCINFO **h, **r,*t;				if( head < rear )	{		h = head, r = rear,t = *head;		//printf(" t is  %X \n",(t)->dwxx.DESID);		switch( sortType )		{		case	SORT_BY_ADDRESS: 			/* Sort the records by source user ID */			tmp =  (*h)->dwxx.srcID;			while( h != r )			{				/***********************Problem here !********************************/				while( ( (*r)->dwxx.srcID >= tmp) && r != h )					r--;				*h = *r;							while( ( (*h)->dwxx.srcID <= tmp) && r != h )					h++;				*r = *h;						}			*h = t;			QSort( SORT_BY_ADDRESS, head, h-1 );			QSort( SORT_BY_ADDRESS, h+1, rear );			break;		case	SORT_BY_TIMEASC:			/* Sort the records by time in the ascend order */			tYear = (*h)->dwxx.year,			tMon  = (*h)->dwxx.mon,			tDay  = (*h)->dwxx.day,			tHour = (*h)->dwxx.hour;			tMin  = (*h)->dwxx.minute;			tSec  = (*h)->dwxx.second;			while( h != r )			{				while( CompareTime(TRUE,r,tYear,tMon,tDay,tHour,tMin,tSec) && r!=h )					r--;				*h = *r;				while( CompareTime( FALSE,h,tYear,tMon,tDay,tHour,tMin,tSec) && r!= h )					h++;				*r = *h;			}			*h = t;					QSort( SORT_BY_TIMEASC, head, h-1 );			QSort( SORT_BY_TIMEASC, h+1, rear );					break;		case	SORT_BY_TIMEDES:			/* Sort the records by time in the descend order */			tYear = (*h)->dwxx.year,			tMon  = (*h)->dwxx.mon,			tDay  = (*h)->dwxx.day,			tHour = (*h)->dwxx.hour;			tMin  = (*h)->dwxx.minute;			tSec  = (*h)->dwxx.second;			while( h != r )			{				while( CompareTime(FALSE,r,tYear,tMon,tDay,tHour,tMin,tSec) && r!=h )					r--;				*h = *r;				while( CompareTime( TRUE,h,tYear,tMon,tDay,tHour,tMin,tSec) && r!= h )					h++;				*r = *h;			}			*h = t;					QSort( SORT_BY_TIMEDES, head, h-1 );			QSort( SORT_BY_TIMEDES, h+1, rear );		break;		case	SORT_BY_SOURCE:

⌨️ 快捷键说明

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