Skip to content

Commit 11b9d19

Browse files
committed
added:get time info and time out for token module
1 parent 3dc810a commit 11b9d19

File tree

5 files changed

+142
-0
lines changed

5 files changed

+142
-0
lines changed

XEngine_Module/XEngine_Token/Session_Define.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,49 @@ extern "C" bool Session_Token_UPDate(XNETHANDLE xhToken);
127127
*********************************************************************/
128128
extern "C" bool Session_Token_Get(XNETHANDLE xhToken, XENGINE_PROTOCOL_USERINFO* pSt_UserInfo = NULL);
129129
/********************************************************************
130+
函数名称:Session_Token_GetTimeInfo
131+
函数功能:获取客户端时间信息
132+
参数.一:xhToken
133+
In/Out:In
134+
类型:句柄
135+
可空:N
136+
意思:要操作的客户端
137+
参数.二:pSt_LoginTime
138+
In/Out:Out
139+
类型:数据结构指针
140+
可空:Y
141+
意思:输出客户端登录时间
142+
参数.二:pSt_UPTime
143+
In/Out:Out
144+
类型:数据结构指针
145+
可空:Y
146+
意思:输出客户端更新时间
147+
返回值
148+
类型:逻辑型
149+
意思:是否成功
150+
备注:
151+
*********************************************************************/
152+
extern "C" bool Session_Token_GetTimeInfo(XNETHANDLE xhToken, XENGINE_LIBTIME* pSt_LoginTime = NULL, XENGINE_LIBTIME* pSt_UPTime = NULL);
153+
/********************************************************************
154+
函数名称:Session_Token_GetTimeout
155+
函数功能:获取客户端剩余时间
156+
参数.一:xhToken
157+
In/Out:In
158+
类型:句柄
159+
可空:N
160+
意思:要操作的客户端
161+
参数.二:pInt_Timeout
162+
In/Out:Out
163+
类型:整数型指针
164+
可空:N
165+
意思:输出超时时间
166+
返回值
167+
类型:逻辑型
168+
意思:是否成功
169+
备注:
170+
*********************************************************************/
171+
extern "C" bool Session_Token_GetTimeout(XNETHANDLE xhToken, int* pInt_Timeout);
172+
/********************************************************************
130173
函数名称:Session_Token_GetUser
131174
函数功能:获取用户是否存在
132175
参数.一:lpszUser

XEngine_Module/XEngine_Token/Session_Token/Session_Token.cpp

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,93 @@ bool CSession_Token::Session_Token_Get(XNETHANDLE xhToken, XENGINE_PROTOCOL_USER
233233
return true;
234234
}
235235
/********************************************************************
236+
函数名称:Session_Token_GetTimeInfo
237+
函数功能:获取客户端时间信息
238+
参数.一:xhToken
239+
In/Out:In
240+
类型:句柄
241+
可空:N
242+
意思:要操作的客户端
243+
参数.二:pSt_LoginTime
244+
In/Out:Out
245+
类型:数据结构指针
246+
可空:Y
247+
意思:输出客户端登录时间
248+
参数.二:pSt_UPTime
249+
In/Out:Out
250+
类型:数据结构指针
251+
可空:Y
252+
意思:输出客户端更新时间
253+
返回值
254+
类型:逻辑型
255+
意思:是否成功
256+
备注:
257+
*********************************************************************/
258+
bool CSession_Token::Session_Token_GetTimeInfo(XNETHANDLE xhToken, XENGINE_LIBTIME* pSt_LoginTime /* = NULL */, XENGINE_LIBTIME* pSt_UPTime /* = NULL */)
259+
{
260+
Session_IsErrorOccur = false;
261+
262+
st_Locker.lock_shared();
263+
std::unordered_map<XNETHANDLE, TOKENSESSION_INFOCLIENT>::iterator stl_MapIterator = stl_MapToken.find(xhToken);
264+
if (stl_MapIterator == stl_MapToken.end())
265+
{
266+
Session_IsErrorOccur = true;
267+
Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_NOTFOUND;
268+
st_Locker.unlock_shared();
269+
return false;
270+
}
271+
if (NULL != pSt_LoginTime)
272+
{
273+
*pSt_LoginTime = stl_MapIterator->second.st_LibTimer;
274+
}
275+
if (NULL != pSt_UPTime)
276+
{
277+
*pSt_UPTime = stl_MapIterator->second.st_OutTimer;
278+
}
279+
st_Locker.unlock_shared();
280+
return true;
281+
}
282+
/********************************************************************
283+
函数名称:Session_Token_GetTimeout
284+
函数功能:获取客户端剩余时间
285+
参数.一:xhToken
286+
In/Out:In
287+
类型:句柄
288+
可空:N
289+
意思:要操作的客户端
290+
参数.二:pInt_Timeout
291+
In/Out:Out
292+
类型:整数型指针
293+
可空:N
294+
意思:输出超时时间
295+
返回值
296+
类型:逻辑型
297+
意思:是否成功
298+
备注:
299+
*********************************************************************/
300+
bool CSession_Token::Session_Token_GetTimeout(XNETHANDLE xhToken, int* pInt_Timeout)
301+
{
302+
Session_IsErrorOccur = false;
303+
304+
st_Locker.lock_shared();
305+
std::unordered_map<XNETHANDLE, TOKENSESSION_INFOCLIENT>::iterator stl_MapIterator = stl_MapToken.find(xhToken);
306+
if (stl_MapIterator == stl_MapToken.end())
307+
{
308+
Session_IsErrorOccur = true;
309+
Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_NOTFOUND;
310+
st_Locker.unlock_shared();
311+
return false;
312+
}
313+
XENGINE_LIBTIME st_LibTimer = {};
314+
BaseLib_Time_GetSysTime(&st_LibTimer); //获取现在的系统时间
315+
__int64x nOnlineSpan = 0; //在线时间
316+
//用户登录了多少秒
317+
BaseLib_TimeSpan_GetForStu(&stl_MapIterator->second.st_OutTimer, &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND);
318+
*pInt_Timeout = (int)nOnlineSpan;
319+
st_Locker.unlock_shared();
320+
return true;
321+
}
322+
/********************************************************************
236323
函数名称:Session_Token_GetUser
237324
函数功能:获取用户的TOKEN
238325
参数.一:lpszUser

XEngine_Module/XEngine_Token/Session_Token/Session_Token.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ class CSession_Token
3232
bool Session_Token_Delete(XNETHANDLE xhToken);
3333
bool Session_Token_UPDate(XNETHANDLE xhToken);
3434
bool Session_Token_Get(XNETHANDLE xhToken, XENGINE_PROTOCOL_USERINFO* pSt_UserInfo = NULL);
35+
bool Session_Token_GetTimeInfo(XNETHANDLE xhToken, XENGINE_LIBTIME* pSt_LoginTime = NULL, XENGINE_LIBTIME* pSt_UPTime = NULL);
36+
bool Session_Token_GetTimeout(XNETHANDLE xhToken, int* pInt_Timeout);
3537
bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE* pxhToken);
3638
bool Session_Token_RenewalTime(XNETHANDLE xhToken, int* pInt_RenewalTime);
3739
protected:

XEngine_Module/XEngine_Token/XEngine_Token.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ EXPORTS
99
Session_Token_Delete
1010
Session_Token_UPDate
1111
Session_Token_Get
12+
Session_Token_GetTimeInfo
13+
Session_Token_GetTimeout
1214
Session_Token_GetUser
1315
Session_Token_RenewalTime
1416

XEngine_Module/XEngine_Token/pch.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ extern "C" bool Session_Token_Get(XNETHANDLE xhToken, XENGINE_PROTOCOL_USERINFO*
5555
{
5656
return m_SessionToken.Session_Token_Get(xhToken, pSt_UserInfo);
5757
}
58+
extern "C" bool Session_Token_GetTimeInfo(XNETHANDLE xhToken, XENGINE_LIBTIME* pSt_LoginTime, XENGINE_LIBTIME* pSt_UPTime)
59+
{
60+
return m_SessionToken.Session_Token_GetTimeInfo(xhToken, pSt_LoginTime, pSt_UPTime);
61+
}
62+
extern "C" bool Session_Token_GetTimeout(XNETHANDLE xhToken, int* pInt_Timeout)
63+
{
64+
return m_SessionToken.Session_Token_GetTimeout(xhToken, pInt_Timeout);
65+
}
5866
extern "C" bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE* pxhToken)
5967
{
6068
return m_SessionToken.Session_Token_GetUser(lpszUser, lpszPass, pxhToken);

0 commit comments

Comments
 (0)