Skip to content

Commit 90feb49

Browse files
committed
session module:delete Session_UPStroage_GetComplete and add Session_UPStroage_Close function
1 parent cfa3b32 commit 90feb49

File tree

5 files changed

+76
-89
lines changed

5 files changed

+76
-89
lines changed

XEngine_Source/StorageModule_Session/Session_Define.h

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ typedef struct
2020
__int64x ullCount; //总大小
2121
__int64x ullRWCount; //读取(写入)总大小
2222
__int64x ullRWLen; //已经读取(写入)的大小
23+
__int64x ullFSize; //文件真实大小
2324
__int64x ullPosStart; //开始位置
2425
__int64x ullPosEnd; //结束位置
2526
int nErrorTime; //错误次数
@@ -315,25 +316,6 @@ extern "C" BOOL Session_UPStroage_Destory();
315316
*********************************************************************/
316317
extern "C" BOOL Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszFileDir, __int64x nFileSize, __int64x nLeftCount, int nPosStart = 0, int nPostEnd = 0);
317318
/********************************************************************
318-
函数名称:Session_UPStroage_GetComplete
319-
函数功能:接受的数据是否完毕
320-
参数.一:lpszClientAddr
321-
In/Out:In
322-
类型:常量字符指针
323-
可空:N
324-
意思:输入要操作的客户端
325-
参数.二:pbComplete
326-
In/Out:Out
327-
类型:逻辑型指针
328-
可空:N
329-
意思:输出是否完成
330-
返回值
331-
类型:逻辑型
332-
意思:是否成功
333-
备注:
334-
*********************************************************************/
335-
extern "C" BOOL Session_UPStroage_GetComplete(LPCTSTR lpszClientAddr, BOOL* pbComplete);
336-
/********************************************************************
337319
函数名称:Session_UPStroage_GetInfo
338320
函数功能:获取上传客户端信息
339321
参数.一:lpszClientAddr
@@ -422,4 +404,18 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInf
422404
意思:是否成功
423405
备注:
424406
*********************************************************************/
425-
extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr);
407+
extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr);
408+
/********************************************************************
409+
函数名称:Session_UPStroage_Close
410+
函数功能:关闭读写文件句柄
411+
参数.一:lpszClientAddr
412+
In/Out:In
413+
类型:常量字符指针
414+
可空:N
415+
意思:要关闭的客户端会话
416+
返回值
417+
类型:逻辑型
418+
意思:是否成功
419+
备注:
420+
*********************************************************************/
421+
extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr);

XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp

Lines changed: 53 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,14 @@ BOOL CSession_UPStroage::Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTST
128128
_tcscpy(st_Client.st_StorageInfo.tszFileDir, lpszFileDir);
129129
_tcscpy(st_Client.st_StorageInfo.tszClientAddr, lpszClientAddr);
130130
//填充下载信息
131-
st_Client.st_StorageInfo.pSt_File = _tfopen(lpszFileDir, _T("ab+"));
131+
if (m_bResume)
132+
{
133+
st_Client.st_StorageInfo.pSt_File = _tfopen(lpszFileDir, _T("ab+"));
134+
}
135+
else
136+
{
137+
st_Client.st_StorageInfo.pSt_File = _tfopen(lpszFileDir, _T("wb"));
138+
}
132139
if (NULL == st_Client.st_StorageInfo.pSt_File)
133140
{
134141
Session_IsErrorOccur = TRUE;
@@ -145,61 +152,6 @@ BOOL CSession_UPStroage::Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTST
145152
return TRUE;
146153
}
147154
/********************************************************************
148-
函数名称:Session_UPStroage_GetComplete
149-
函数功能:接受的数据是否完毕
150-
参数.一:lpszClientAddr
151-
In/Out:In
152-
类型:常量字符指针
153-
可空:N
154-
意思:输入要操作的客户端
155-
参数.二:pbUPComplete
156-
In/Out:Out
157-
类型:逻辑型指针
158-
可空:N
159-
意思:上传是否完成
160-
参数.三:pbFileComplete
161-
In/Out:Out
162-
类型:逻辑型指针
163-
可空:N
164-
意思:文件是否完成,某些断点续传的文件可能需要此参数
165-
返回值
166-
类型:逻辑型
167-
意思:是否成功
168-
备注:
169-
*********************************************************************/
170-
BOOL CSession_UPStroage::Session_UPStroage_GetComplete(LPCTSTR lpszClientAddr, BOOL* pbUPComplete, BOOL* pbFileComplete)
171-
{
172-
Session_IsErrorOccur = FALSE;
173-
174-
if ((NULL == lpszClientAddr) || (NULL == pbUPComplete))
175-
{
176-
Session_IsErrorOccur = TRUE;
177-
Session_dwErrorCode = ERROR_STORAGE_MODULE_SESSION_PARAMENT;
178-
return FALSE;
179-
}
180-
181-
st_Locker.lock_shared();
182-
unordered_map<tstring, SESSION_STORAGEUPLOADER>::iterator stl_MapIterator = stl_MapStroage.find(lpszClientAddr);
183-
if (stl_MapIterator == stl_MapStroage.end())
184-
{
185-
Session_IsErrorOccur = TRUE;
186-
Session_dwErrorCode = ERROR_STORAGE_MODULE_SESSION_NOTFOUND;
187-
st_Locker.unlock_shared();
188-
return FALSE;
189-
}
190-
if (stl_MapIterator->second.st_StorageInfo.ullRWLen >= stl_MapIterator->second.st_StorageInfo.ullRWCount)
191-
{
192-
*pbUPComplete = TRUE;
193-
}
194-
else
195-
{
196-
*pbUPComplete = FALSE;
197-
}
198-
199-
st_Locker.unlock_shared();
200-
return TRUE;
201-
}
202-
/********************************************************************
203155
函数名称:Session_UPStroage_GetInfo
204156
函数功能:获取上传客户端信息
205157
参数.一:lpszClientAddr
@@ -405,18 +357,57 @@ BOOL CSession_UPStroage::Session_UPStroage_Delete(LPCTSTR lpszClientAddr)
405357
unordered_map<tstring, SESSION_STORAGEUPLOADER>::iterator stl_MapIterator = stl_MapStroage.find(lpszClientAddr);
406358
if (stl_MapIterator != stl_MapStroage.end())
407359
{
408-
fclose(stl_MapIterator->second.st_StorageInfo.pSt_File);
409-
410-
struct __stat64 st_FStat;
411-
memset(&st_FStat, '\0', sizeof(struct __stat64));
412-
_stat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat);
360+
if (NULL != stl_MapIterator->second.st_StorageInfo.pSt_File)
361+
{
362+
fclose(stl_MapIterator->second.st_StorageInfo.pSt_File);
363+
}
364+
if (0 == stl_MapIterator->second.st_StorageInfo.ullFSize)
365+
{
366+
struct __stat64 st_FStat;
367+
memset(&st_FStat, '\0', sizeof(struct __stat64));
368+
_stat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat);
369+
stl_MapIterator->second.st_StorageInfo.ullFSize = st_FStat.st_size;
370+
}
413371
//大小是否足够
414-
if ((stl_MapIterator->second.st_StorageInfo.ullCount != st_FStat.st_size) && !m_bResume)
372+
if ((stl_MapIterator->second.st_StorageInfo.ullCount != stl_MapIterator->second.st_StorageInfo.ullFSize) && !m_bResume)
415373
{
416374
_tremove(stl_MapIterator->second.st_StorageInfo.tszFileDir);
417375
}
418376
stl_MapStroage.erase(stl_MapIterator);
419377
}
420378
st_Locker.unlock();
421379
return TRUE;
380+
}
381+
/********************************************************************
382+
函数名称:Session_UPStroage_Close
383+
函数功能:关闭读写文件句柄
384+
参数.一:lpszClientAddr
385+
In/Out:In
386+
类型:常量字符指针
387+
可空:N
388+
意思:要关闭的客户端会话
389+
返回值
390+
类型:逻辑型
391+
意思:是否成功
392+
备注:
393+
*********************************************************************/
394+
BOOL CSession_UPStroage::Session_UPStroage_Close(LPCTSTR lpszClientAddr)
395+
{
396+
Session_IsErrorOccur = FALSE;
397+
398+
st_Locker.lock();
399+
unordered_map<tstring, SESSION_STORAGEUPLOADER>::iterator stl_MapIterator = stl_MapStroage.find(lpszClientAddr);
400+
if (stl_MapIterator != stl_MapStroage.end())
401+
{
402+
if (NULL != stl_MapIterator->second.st_StorageInfo.pSt_File)
403+
{
404+
fclose(stl_MapIterator->second.st_StorageInfo.pSt_File);
405+
}
406+
struct __stat64 st_FStat;
407+
memset(&st_FStat, '\0', sizeof(struct __stat64));
408+
_stat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat);
409+
stl_MapIterator->second.st_StorageInfo.ullFSize = st_FStat.st_size;
410+
}
411+
st_Locker.unlock();
412+
return TRUE;
422413
}

XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ class CSession_UPStroage
2525
BOOL Session_UPStroage_Init(BOOL bUPResume = FALSE);
2626
BOOL Session_UPStroage_Destory();
2727
BOOL Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszFileDir, __int64x nFileSize, __int64x nLeftCount, int nPosStart = 0, int nPostEnd = 0);
28-
BOOL Session_UPStroage_GetComplete(LPCTSTR lpszClientAddr, BOOL* pbUPComplete, BOOL* pbFileComplete = NULL);
2928
BOOL Session_UPStroage_GetInfo(LPCTSTR lpszClientAddr, SESSION_STORAGEINFO* pSt_StorageInfo);
3029
BOOL Session_UPStroage_Write(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen);
3130
BOOL Session_UPStroage_Exist(LPCTSTR lpszClientAddr);
3231
BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInfo, int* pInt_ListCount);
3332
BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr);
33+
BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr);
3434
private:
3535
BOOL m_bResume;
3636
private:

XEngine_Source/StorageModule_Session/StorageModule_Session.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ EXPORTS
2020
Session_UPStroage_Init
2121
Session_UPStroage_Destory
2222
Session_UPStroage_Insert
23-
Session_UPStroage_GetComplete
2423
Session_UPStroage_GetInfo
2524
Session_UPStroage_Write
2625
Session_UPStroage_Exist
2726
Session_UPStorage_GetAll
28-
Session_UPStroage_Delete
27+
Session_UPStroage_Delete
28+
Session_UPStroage_Close

XEngine_Source/StorageModule_Session/pch.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,6 @@ extern "C" BOOL Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszFil
9696
{
9797
return m_UPStorage.Session_UPStroage_Insert(lpszClientAddr, lpszFileDir, nFileSize, nLeftCount, nPosStart, nPostEnd);
9898
}
99-
extern "C" BOOL Session_UPStroage_GetComplete(LPCTSTR lpszClientAddr, BOOL * pbComplete)
100-
{
101-
return m_UPStorage.Session_UPStroage_GetComplete(lpszClientAddr, pbComplete);
102-
}
10399
extern "C" BOOL Session_UPStroage_GetInfo(LPCTSTR lpszClientAddr, SESSION_STORAGEINFO * pSt_StorageInfo)
104100
{
105101
return m_UPStorage.Session_UPStroage_GetInfo(lpszClientAddr, pSt_StorageInfo);
@@ -119,4 +115,8 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO * **pppSt_StorageIn
119115
extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr)
120116
{
121117
return m_UPStorage.Session_UPStroage_Delete(lpszClientAddr);
118+
}
119+
extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr)
120+
{
121+
return m_UPStorage.Session_UPStroage_Close(lpszClientAddr);
122122
}

0 commit comments

Comments
 (0)