📄 dataproc.c~
字号:
if( TempStore( TYPE_OF_DWXX, QUERY ) == 0 ) { //try to lock the mutex printf("Enter tryLock.\n"); if( (ret=Pthread_mutex_trylock( &fLock.DW_FLOCK)) == 0 ) { //Add newly message to file_DWXX printf("Return value is %d \n",ret); printf("**********Add newly message to file_DWXX************\n"); fp = Fopen( "DWXX.data","a+"); Fwrite( &newMesg.dwxx,LEN_DWXX,1,fp ); Fclose( fp ); AddCount( INBOX, TYPE_OF_DWXX , 1); Pthread_mutex_unlock( &fLock.DW_FLOCK); } else if( ret == EBUSY ) { printf("First time bulid DWXX temp file!\n"); TempStore( TYPE_OF_DWXX, CREAT ); } } break; case TYPE_OF_TXXX: //If there is no temp file in current directory,we record it to INDEX file directly if( TempStore( TYPE_OF_TXXX, QUERY ) == 0 ) { //try to lock the mutex printf("Enter tryLock.\n"); if( (ret=Pthread_mutex_trylock( &fLock.TXINDEX_FLOCK)) == 0 ) { //Add newly message to file_TXXX printf("Return value is %d \n",ret); printf("**********Add newly message to file_TXINDEX************\n"); printf(" MainIndex is %d \n ",newMesg.txIndex.mainIndex); fp = Fopen( "TXINDEX.data","a+"); Fwrite( &newMesg.txIndex,LEN_TXINDEX,1,fp ); Fclose( fp ); AddCount( INBOX, TYPE_OF_TXXX , 1); //printf("Current mesg count is %d\n",GetCount(INBOX,TYPE_OF_TXXX)); AddCountUnRead( 1 ); Pthread_mutex_unlock( &fLock.TXINDEX_FLOCK); } else if( ret == EBUSY ) { printf("First time bulid TXXX temp file!\n"); TempStore( TYPE_OF_TXXX, CREAT ); } } break; case TYPE_OF_ICXX: if( TempStore( TYPE_OF_ICXX, QUERY ) == 0 ) { //try to lock the mutex printf("Enter tryLock.\n"); if( (ret=Pthread_mutex_trylock( &fLock.IC_FLOCK)) == 0 ) { //Add newly message to file_ICXX printf("Return value is %d \n",ret); printf("**********Add newly message to file_ICXX************\n"); fp = Fopen( "ICXX.data","w+"); Fwrite( &newMesg.icxx,LEN_ICXX,1,fp ); Fclose( fp ); Pthread_mutex_unlock( &fLock.IC_FLOCK); } else if( ret == EBUSY ) { printf("First time bulid ICXX temp file!\n"); TempStore( TYPE_OF_ICXX, CREAT ); } } break; case TYPE_OF_ZJXX: break; case TYPE_OF_SJXX: break; case TYPE_OF_BBXX: if( TempStore( TYPE_OF_BBXX, QUERY ) == 0 ) { //try to lock the mutex printf("Enter tryLock.\n"); if( (ret=Pthread_mutex_trylock( &fLock.BB_FLOCK)) == 0 ) { //Add newly message to file_BBXX printf("Return value is %d \n",ret); printf("**********Add newly message to file_BBXX************\n"); fp = Fopen( "BBXX.data","w+"); Fwrite( &newMesg.bbxx,LEN_BBXX,1,fp ); Fclose( fp ); Pthread_mutex_unlock( &fLock.BB_FLOCK); } else if( ret == EBUSY ) { printf("First time bulid BBXX temp file!\n"); TempStore( TYPE_OF_BBXX, CREAT ); } } break; case TYPE_OF_FKXX: //If there is no temp file in current directory,we can record it to main file directly if( TempStore( TYPE_OF_FKXX, QUERY ) == 0 ) { //try to lock the mutex printf("Enter tryLock.\n"); if( (ret=Pthread_mutex_trylock( &fLock.FK_FLOCK)) == 0 ) { //Add newly message to FKXX.data printf("Return value is %d \n",ret); printf("**********Add newly message to FKXX.data************\n"); fp = Fopen( "FKXX.data","a+"); Fwrite( &newMesg.fkxx,LEN_FKXX,1,fp ); Fclose( fp ); AddCount( INBOX, TYPE_OF_FKXX , 1); Pthread_mutex_unlock( &fLock.FK_FLOCK); } else if( ret == EBUSY ) { printf("First time bulid FKXX temp file!\n"); TempStore( TYPE_OF_FKXX, CREAT ); } } break; }//End of switch}void MergeRecords( MESGTYPE mesgType ){ int i; FILE *fp; struct stat buf; /* Before we load the data from main data file */ /* we shall firstly merge the temp file to it */ printf("Enter function MergeRecords!\n"); switch( mesgType ) { case TYPE_OF_DWXX: if( stat( "DWtmp1.data",&buf ) == 0 )//file DWtmp1 exist { Pthread_mutex_lock( &fLock.DWtmp1_FLOCK ); printf("Lock temp1 now.\n"); //Add all the newly messages in the temp file1 to main data file loadedMesg.tmpLocInfo = (LOCINFO *)malloc( LEN_LOCINFO * tmpDWXX1); printf("Address is %lX\n",loadedMesg.tmpLocInfo); fp = Fopen( "DWtmp1.data","r+"); //perror("Open"); for( i=0; i<tmpDWXX1; i++)
if( fread( &( (loadedMesg.tmpLocInfo)[i].dwxx), LEN_DWXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpLocInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpLocInfo)[i].index); printf("Tmp File content:Hour %d Min %d SRCID %lX\n",loadedMesg.tmpLocInfo[i].dwxx.hour,loadedMesg.tmpLocInfo[i].dwxx.minute,loadedMesg.tmpLocInfo[i].dwxx.srcID ); } Fclose( fp ); fp = Fopen( "DWXX.data","a+"); for( i= 0; i< tmpDWXX1; i++ ) Fwrite( &( (loadedMesg.tmpLocInfo)[i].dwxx),LEN_DWXX,1,fp ); Fclose( fp ); remove( "DWtmp1.data"); tmpDWXX1 = 0; free( loadedMesg.tmpLocInfo ); Pthread_mutex_unlock( &fLock.DWtmp1_FLOCK ); } else if( stat( "DWtmp2.data",&buf ) == 0 )//file DWtmp2 exist { Pthread_mutex_lock( &fLock.DWtmp2_FLOCK ); //Add all the newly messages in the temp file2 to main data file loadedMesg.tmpLocInfo = (LOCINFO *)malloc( LEN_LOCINFO * tmpDWXX1); fp = Fopen( "DWtmp2.data","r+"); for( i=0; i<tmpDWXX2; i++)
if( fread( &( (loadedMesg.tmpLocInfo)[i].dwxx), LEN_DWXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpLocInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpLocInfo)[i].index); printf("Tmp File content:Hour %d Min %d SRCID %lX\n",loadedMesg.tmpLocInfo[i].dwxx.hour,loadedMesg.tmpLocInfo[i].dwxx.minute,loadedMesg.tmpLocInfo[i].dwxx.srcID ); } Fclose( fp ); fp = Fopen( "DWXX.data","a+"); for( i= 0; i< tmpDWXX2; i++ ) Fwrite( &( (loadedMesg.tmpLocInfo)[i].dwxx),LEN_DWXX,1,fp ); Fclose( fp ); remove( "DWtmp2.data"); free( loadedMesg.tmpLocInfo ); tmpDWXX2 = 0; Pthread_mutex_unlock( &fLock.DWtmp2_FLOCK ); } break; case TYPE_OF_TXXX: if( stat( "TXtmp1.data",&buf ) == 0 )//file TXtmp1 exist { Pthread_mutex_lock( &fLock.TXtmp1_FLOCK ); printf("Lock TXtmp1 now.\n"); //Add all the newly messages in the temp file1 to main data file loadedMesg.tmpCommInfo = (COMMINFO *)malloc( LEN_COMMINFO * tmpTXXX1); printf("Address is %lX\n",loadedMesg.tmpCommInfo); fp = Fopen( "TXtmp1.data","r+"); //perror("Open"); for( i=0; i<tmpTXXX1; i++)
if( fread( &((loadedMesg.tmpCommInfo)[i].txIndex), LEN_TXINDEX, 1, fp)!= 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpCommInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpCommInfo)[i].index); printf("Tmp File content:Hour %d Min %d SRCID %lX\n",loadedMesg.tmpCommInfo[i].txIndex.hour,loadedMesg.tmpCommInfo[i].txIndex.minute,loadedMesg.tmpCommInfo[i].txIndex.srcID ); } Fclose( fp ); fp = Fopen( "TXINDEX.data","a+"); for( i= 0; i< tmpTXXX1; i++ ) Fwrite( &( (loadedMesg.tmpCommInfo)[i].txIndex),LEN_TXINDEX,1,fp ); Fclose( fp ); AddCountUnRead( tmpTXXX1 ); remove( "TXtmp1.data"); tmpTXXX1 = 0; free( loadedMesg.tmpCommInfo ); Pthread_mutex_unlock( &fLock.TXtmp1_FLOCK ); } else if( stat( "TXtmp2.data",&buf ) == 0 )//file TXtmp2 exist { Pthread_mutex_lock( &fLock.TXtmp2_FLOCK ); //Add all the newly messages in the temp file2 to main data file loadedMesg.tmpCommInfo = (COMMINFO *)malloc( LEN_COMMINFO * tmpTXXX1); fp = Fopen( "TXtmp2.data","r+"); for( i=0; i<tmpTXXX2; i++)
if( fread( &((loadedMesg.tmpCommInfo)[i].txIndex), LEN_TXINDEX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpCommInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpCommInfo)[i].index); printf("Tmp File content:Hour %d Min %d SRCID %lX\n",loadedMesg.tmpCommInfo[i].txIndex.hour,loadedMesg.tmpCommInfo[i].txIndex.minute,loadedMesg.tmpCommInfo[i].txIndex.srcID ); } Fclose( fp ); fp = Fopen( "TXINDEX.data","a+"); for( i= 0; i< tmpTXXX2; i++ ) Fwrite( &( (loadedMesg.tmpCommInfo)[i].txIndex),LEN_TXINDEX,1,fp ); Fclose( fp ); AddCountUnRead( tmpTXXX2 ); remove( "TXtmp2.data"); free( loadedMesg.tmpCommInfo ); tmpTXXX2 = 0; Pthread_mutex_unlock( &fLock.TXtmp2_FLOCK ); } break; case TYPE_OF_ICXX: if( stat( "ICtmp1.data",&buf ) == 0 )//file ICtmp1 exist { Pthread_mutex_lock( &fLock.ICtmp1_FLOCK ); printf("Lock temp1 now.\n"); loadedMesg.tmpICInfo = (ICINFO *)malloc( LEN_ICINFO * tmpICXX1); printf("Address is %lX\n",loadedMesg.tmpICInfo); fp = Fopen( "ICtmp1.data","r+"); if( fread( &( (loadedMesg.tmpICInfo)[0].icxx), LEN_ICXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { printf("Tmp File content:servFrequency %X SRCID %lX\n",loadedMesg.tmpICInfo[0].icxx.servFrequency,loadedMesg.tmpICInfo[0].icxx.srcID ); } Fclose( fp ); fp = Fopen( "ICXX.data","w+"); Fwrite( &( (loadedMesg.tmpICInfo)[i].icxx),LEN_ICXX,1,fp ); Fclose( fp ); remove( "ICtmp1.data"); tmpICXX1 = 0; free( loadedMesg.tmpICInfo ); Pthread_mutex_unlock( &fLock.ICtmp1_FLOCK ); } else if( stat( "ICtmp2.data",&buf ) == 0 )//file ICtmp2 exist { Pthread_mutex_lock( &fLock.ICtmp2_FLOCK ); //Add all the newly messages in the temp file2 to main data file loadedMesg.tmpICInfo = (ICINFO *)malloc( LEN_ICINFO * tmpICXX1); fp = Fopen( "ICtmp2.data","r+");
if( fread( &( (loadedMesg.tmpLocInfo)[i].dwxx), LEN_DWXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { printf("Tmp File content:servFrequency %X SRCID %lX\n",loadedMesg.tmpICInfo[0].icxx.servFrequency,loadedMesg.tmpICInfo[0].icxx.srcID ); } Fclose( fp ); fp = Fopen( "ICXX.data","w+"); Fwrite( &( (loadedMesg.tmpICInfo)[0].icxx),LEN_ICXX,1,fp ); Fclose( fp ); remove( "ICtmp2.data"); free( loadedMesg.tmpICInfo ); tmpICXX2 = 0; Pthread_mutex_unlock( &fLock.ICtmp2_FLOCK ); } break; case TYPE_OF_ZJXX: break; case TYPE_OF_SJXX: break; case TYPE_OF_BBXX: if( stat( "BBtmp1.data",&buf ) == 0 )//file BBtmp1 exist { Pthread_mutex_lock( &fLock.BBtmp1_FLOCK ); printf("Lock temp1 now.\n"); loadedMesg.tmpBBInfo = (BBINFO *)malloc( LEN_BBINFO * tmpBBXX1); printf("Address is %lX\n",loadedMesg.tmpBBInfo); fp = Fopen( "BBtmp1.data","r+"); if( fread( &( (loadedMesg.tmpBBInfo)[0].bbxx), LEN_BBXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { printf("Tmp File content: SRCID %lX\n",loadedMesg.tmpBBInfo[0].bbxx.srcID ); } Fclose( fp ); fp = Fopen( "BBXX.data","w+"); Fwrite( &( (loadedMesg.tmpBBInfo)[i].bbxx),LEN_BBXX,1,fp ); Fclose( fp ); remove( "BBtmp1.data"); tmpBBXX1 = 0; free( loadedMesg.tmpBBInfo ); Pthread_mutex_unlock( &fLock.BBtmp1_FLOCK ); } else if( stat( "BBtmp2.data",&buf ) == 0 )//file BBtmp2 exist { Pthread_mutex_lock( &fLock.BBtmp2_FLOCK ); //Add all the newly messages in the temp file2 to main data file loadedMesg.tmpBBInfo = (BBINFO *)malloc( LEN_BBINFO * tmpBBXX1); fp = Fopen( "BBtmp2.data","r+");
if( fread( &( (loadedMesg.tmpBBInfo)[i].bbxx), LEN_BBXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { printf("Tmp File content: SRCID %lX\n",loadedMesg.tmpBBInfo[0].bbxx.srcID ); } Fclose( fp ); fp = Fopen( "BBXX.data","w+"); Fwrite( &( (loadedMesg.tmpBBInfo)[0].bbxx),LEN_BBXX,1,fp ); Fclose( fp ); remove( "BBtmp2.data"); free( loadedMesg.tmpBBInfo ); tmpBBXX2 = 0; Pthread_mutex_unlock( &fLock.BBtmp2_FLOCK ); } break; case TYPE_OF_FKXX: if( stat( "FKtmp1.data",&buf ) == 0 )//file FKtmp1 exist { Pthread_mutex_lock( &fLock.FKtmp1_FLOCK ); printf("Lock temp1 now.\n"); //Add all the newly messages in the temp file1 to main data file loadedMesg.tmpFkInfo = (FKINFO *)malloc( LEN_FKINFO * tmpFKXX1); printf("Address is %lX\n",loadedMesg.tmpFkInfo); fp = Fopen( "FKtmp1.data","r+"); //perror("Open"); for( i=0; i<tmpFKXX1; i++)
if( fread( &( (loadedMesg.tmpFkInfo)[i].fkxx), LEN_FKXX, 1, fp) != 1)
{
if( feof(fp))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -