@@ -110,7 +110,7 @@ bool CSession_Token::Session_Token_Destroy()
110110 In/Out:In
111111 类型:整数型
112112 可空:Y
113- 意思:单独指定超时时间,-1 不启用
113+ 意思:单独指定超时时间,-1 不启用,0 不超时,> 0 超时秒
114114返回值
115115 类型:逻辑型
116116 意思:是否允许登陆
@@ -154,7 +154,7 @@ bool CSession_Token::Session_Token_Create(XNETHANDLE *pxhToken, XENGINE_PROTOCOL
154154 In/Out:In
155155 类型:整数型
156156 可空:Y
157- 意思:单独指定超时时间,-1 不启用
157+ 意思:单独指定超时时间,-1 不启用,0 不超时,> 0 超时秒
158158返回值
159159 类型:逻辑型
160160 意思:是否允许登陆
@@ -342,17 +342,22 @@ bool CSession_Token::Session_Token_GetTimeInfo(XNETHANDLE xhToken, XENGINE_LIBTI
342342 类型:句柄
343343 可空:N
344344 意思:要操作的客户端
345- 参数.二:pInt_Timeout
345+ 参数.二:pInt_TimeLogin
346346 In/Out:Out
347347 类型:整数型指针
348348 可空:N
349- 意思:输出超时时间
349+ 意思:输出在线时间
350+ 参数.三:pInt_Timeout
351+ In/Out:Out
352+ 类型:整数型指针
353+ 可空:N
354+ 意思:输出剩余超时时间
350355返回值
351356 类型:逻辑型
352357 意思:是否成功
353358备注:
354359*********************************************************************/
355- bool CSession_Token::Session_Token_GetTimeout (XNETHANDLE xhToken, int * pInt_Timeout)
360+ bool CSession_Token::Session_Token_GetTimeout (XNETHANDLE xhToken, __int64x* pInt_TimeLogin, __int64x * pInt_Timeout)
356361{
357362 Session_IsErrorOccur = false ;
358363
@@ -367,10 +372,41 @@ bool CSession_Token::Session_Token_GetTimeout(XNETHANDLE xhToken, int* pInt_Time
367372 }
368373 XENGINE_LIBTIME st_LibTimer = {};
369374 BaseLib_Time_GetSysTime (&st_LibTimer); // 获取现在的系统时间
370- __int64x nOnlineSpan = 0 ; // 在线时间
371375 // 用户登录了多少秒
372- BaseLib_TimeSpan_GetForStu (&stl_MapIterator->second .st_OutTimer , &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND);
373- *pInt_Timeout = (int )nOnlineSpan;
376+ if (NULL != pInt_TimeLogin)
377+ {
378+ BaseLib_TimeSpan_GetForStu (&stl_MapIterator->second .st_OutTimer , &st_LibTimer, pInt_TimeLogin, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND);
379+ }
380+ // 用户超时时间
381+ time_t nTimeEnd = 0 ;
382+ time_t nTimeStart = 0 ;
383+ BaseLib_Time_StuTimeToTTime (&stl_MapIterator->second .st_OutTimer , &nTimeStart);
384+ if (NULL != pInt_Timeout)
385+ {
386+ if (-1 == stl_MapIterator->second .nTimeout )
387+ {
388+ // 全局时间
389+ if (m_nTimeout > 0 )
390+ {
391+ BaseLib_Time_StuTimeToTTime (&st_LibTimer, &nTimeEnd);
392+ nTimeEnd += m_nTimeout;
393+ }
394+ else
395+ {
396+ *pInt_Timeout = 0 ; // 不超时
397+ }
398+ }
399+ else if (0 == stl_MapIterator->second .nTimeout )
400+ {
401+ *pInt_Timeout = 0 ; // 不超时
402+ }
403+ else
404+ {
405+ BaseLib_Time_StuTimeToTTime (&st_LibTimer, &nTimeEnd);
406+ nTimeEnd += stl_MapIterator->second .nTimeout ;
407+ }
408+ BaseLib_TimeSpan_GetForTime (nTimeStart, nTimeEnd, pInt_Timeout, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND);
409+ }
374410 st_Locker.unlock_shared ();
375411 return true ;
376412}
0 commit comments