서버프로그래밍만 하고살고싶다..
마호로(59.14)
2020-02-22 17:23
추천 0
![viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73ded83fa11d0283177940c12fe472eea84be02aa9a6212b171fda134d7183ac4e063c2c6701cbb7b2d54a226f56bbf6a7bbc88879c1e2f8fd1cbdcfd6c5d]()
void FileSetupUpdate(void)
{
SaveDataIndex
*UpdateCurrentIndex
;
BOOL IsFileChange
;
if(GetTickCount()-LastFileChangTick
<= 100)
return;
EnterCriticalSection(&CS_ReadFile
);
EnterCriticalSection(&CS_SaveFile
);
IsFileChange
=FALSE
;
if(IndexFileItemCnt
== 0)IsFileChange
=TRUE
;
else if(IndexFileBase
)
{
UpdateCurrentIndex
=(SaveDataIndex
*)IndexFileBase
;
if(UpdateCurrentIndex
->Offset
.QuadPart
>= IndexFileItemCnt
)
{
IsFileChange
=TRUE
;
}
}
if(IsFileChange
)
{
LastFileChangTick
=GetTickCount();
if(IndexFileMapping
)
{
if(IndexFileBase
)UnmapViewOfFile(IndexFileBase
);
CloseHandle(IndexFileMapping
);
SetFilePointer(hIndexFile
[!SaveFileNo
],0,0,FILE_BEGIN
);
SetEndOfFile(hIndexFile
[!SaveFileNo
]);
SetFilePointer(hSaveFile
[!SaveFileNo
],0,0,FILE_BEGIN
);
SetEndOfFile(hSaveFile
[!SaveFileNo
]);
FlushFileBuffers(hIndexFile
[!SaveFileNo
]);
FlushFileBuffers(hSaveFile
[!SaveFileNo
]);
}
SavedFileSize
.QuadPart
=0;
IndexFileMapping
=NULL;
IndexFileBase
=NULL;
IndexFileSize
.QuadPart
=0;
IndexFileItemSendCnt
=0;
IF_Cnt
=0;
AMF
=0;
SumDataCnt
=0;
SaveFileNo
=!SaveFileNo
;
LARGE_INTEGER FileSize
;
GetFileSizeEx(hIndexFile
[SaveFileNo
],&FileSize
);
if(FileSize
.QuadPart
== 0)
{
DWORD Written
;
SaveDataIndex Info
;
Info
.Offset
.QuadPart
=0;
Info
.SendFlag
='_';
WriteFile(hIndexFile
[SaveFileNo
],&Info
,sizeof(SaveDataIndex
),&Written
,NULL);
}
GetFileSizeEx(hSaveFile
[!SaveFileNo
],&SavedFileSize
);
GetFileSizeEx(hIndexFile
[!SaveFileNo
],&IndexFileSize
);
IndexFileItemCnt
=(IndexFileSize
.QuadPart
-sizeof(SaveDataIndex
))/sizeof(SaveDataIndex
);
if(IndexFileItemCnt
< 0)IndexFileItemCnt
=0;
if(IndexFileItemCnt
> 0)
{
IndexFileMapping
=CreateFileMapping(
hIndexFile
[!SaveFileNo
],
NULL,
PAGE_READWRITE
,
0,
0,
NULL);
if(IndexFileMapping
)
{
IndexFileBase
=(BYTE
*)MapViewOfFile(
IndexFileMapping
,
FILE_MAP_READ
|FILE_MAP_WRITE
,
0,0,
0);
if(!IndexFileBase
)
CloseHandle(IndexFileMapping
);
}
}
if(!IndexFileBase
)
IndexFileItemCnt
=0;
SetFilePointer(hSaveFile
[SaveFileNo
],0,0,FILE_END
);
SetFilePointer(hIndexFile
[SaveFileNo
],0,0,FILE_END
);
if(IndexFileItemCnt
> 0)
FileChangPerSec
++;
}
LeaveCriticalSection(&CS_SaveFile
);
LeaveCriticalSection(&CS_ReadFile
);
}
위에껀 오토바이사고로 두다리 부러졌을대 마약성 진통재 먹으면서
만든코드인데 지금보니 신기함
소스가 긴대 DC 업로드 한계때문에 잘라내다보니 얼마 표시못함
서버 안되면 ㅈ된다는 압박감과 만드는재미 크...
재미나고 좋음
댓글 0