📄 tmlsessmgr.cpp
字号:
// TmlSessMgr.cpp: implementation of the CTmlSessMgr class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "pimserver.h"
#include "TmlSessMgr.h"
#include "mydb.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
char* _get_nowtime();
extern CMydb workdb;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTmlSessMgr::CTmlSessMgr()
{
head = NULL;
active = NULL;
}
CTmlSessMgr::~CTmlSessMgr()
{
}
CTmlSession* CTmlSessMgr::GetActiveSession()
{
return active;
}
int CTmlSessMgr::CheckSessions()
{
return 1;
}
int CTmlSessMgr::CheckCredit(char *pUser,char*pPwd)
{
XPTDEBUG(("CheckCredit(user=%s pwd=%s)\n",pUser,pPwd));
int count = 0;
char sql [1024];
sprintf(sql,"select count(*) from pim_user where userid='%s' and password='%s'",pUser,pPwd);
CMySet set;
if(workdb.PrepareSql(sql, set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
if(workdb.FetchData())
{
count = atoi(set.GetFieldValue(0));
XPTDEBUG(("sql=%s ,count=%d\n",sql,count));
}
}
return count;
}
int CTmlSessMgr::InitSessions()
{
/*
char sql [1024];
sprintf(sql,"select serveranchor from pim_user ");
CMySet set;
if(workdb.PrepareSql(sql, set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
while(workdb.FetchData())
{
char * anchor = set.GetFieldValue(0);
XPTDEBUG(("sql=%s serveranchor=%s\n",sql,anchor));
}
}
*/
return 1;
}
int CTmlSessMgr::GetSession(char * pSession,CTmlSession**pSess)
{
CTmlSessNode* pnode = head;
//打印session
XPTDEBUG(("StartList\n"));
while(pnode!=NULL&&pnode->self!=NULL)
{
XPTDEBUG(("SessionList %s\n",pnode->pSessName));
pnode = pnode->next;
}
XPTDEBUG(("EndList\n"));
//搜索session
pnode = head;
while(pnode!=NULL&&pnode->self!=NULL)
{
if(strcmp(pnode->pSessName,pSession)==0)
{
active = pnode->self;
*pSess = pnode->self;
if(pnode->self->m_nStoreFlag==1)
XPTDEBUG(("内存中获取永久session %s\n",pnode->pSessName));
else
XPTDEBUG(("内存中获取临时session %s\n",pnode->pSessName));
return 1;//already
}
else
pnode = pnode->next;
}
XPTDEBUG(("内存中未得到session %s\n",pSession));
return 0;
}
int CTmlSessMgr::GetPimSession(char*sessionID,CTmlSession**pSess)
{
char sql [1024];
int count=0;
char userid[1024];
sprintf(sql,"select count(*) from pim_session where pimsession='%s'",sessionID);
XPTDEBUG(("sql=%s \n",sql));
CMySet set;
if(workdb.PrepareSql(sql, set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
if(workdb.FetchData())
{
count = atoi(set.GetFieldValue(0));
XPTDEBUG(("sql=%s ,count=%d\n",sql,count));
}
}
if(count!=0)
{
sprintf(sql,"select userid from pim_session where pimsession='%s'",sessionID);
XPTDEBUG(("sql=%s \n",sql));
if(workdb.PrepareSql(sql, set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
if(workdb.FetchData())
{
strcpy(userid ,set.GetFieldValue(0));
XPTDEBUG(("sql=%s ,userid=%s\n",sql,userid));
}
}
}
CTmlSessNode *psess = (CTmlSessNode *)tmlLibMalloc(sizeof(CTmlSessNode));
tmlLibMemset(psess,0,(MemSize_t)sizeof(CTmlSessNode));
psess->pSessName = (char *)tmlLibMalloc(tmlLibStrlen(sessionID));
tmlLibStrcpy(psess->pSessName,sessionID);
psess->self = new CTmlSession ();
psess->self->m_sSessID = (char *)tmlLibMalloc(tmlLibStrlen(sessionID));
tmlLibStrcpy(psess->self->m_sSessID,sessionID);
psess->next = head;
head = psess;
active = psess->self;
*pSess = psess->self;
if(count!=0)
{
psess->self->m_nStoreFlag = 1;
psess->self->m_sUser = (char*)tmlLibMalloc(tmlLibStrlen(userid));
tmlLibStrcpy(psess->self->m_sUser,userid);
XPTDEBUG(("获取永久session(%s) \n",sessionID));
}
return count ;
}
int CTmlSessMgr::CreateSession(char *pUser,char*pPwd,CTmlSession**pSess)
{
XPTDEBUG(("CreateSession(user=%s pwd=%s)\n",pUser,pPwd));
int count = 0;
char sql[1024] = "";
CTmlSessNode* pnode = head;
sprintf(sql,"select count(*) from pim_user where userid='%s' and password='%s'",pUser,pPwd);
XPTDEBUG(("SQL='%s'\n",sql));
CMySet _set;
if(workdb.PrepareSql(sql, _set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
if(workdb.FetchData())
{
count = atoi(_set.GetFieldValue(0));
XPTDEBUG(("sql=%s ,count=%d\n",sql,count));
}
}
char *session = _get_nowtime();
CTmlSessNode *psess = (CTmlSessNode *)tmlLibMalloc(sizeof(CTmlSessNode));
tmlLibMemset(psess,0,(MemSize_t)sizeof(CTmlSessNode));
psess->pSessName = (char *)tmlLibMalloc(tmlLibStrlen(session));
tmlLibStrcpy(psess->pSessName,session);
psess->self = new CTmlSession ();
psess->self->m_sSessID = (char *)tmlLibMalloc(tmlLibStrlen(session));
tmlLibStrcpy(psess->self->m_sSessID,session);
psess->next = head;
head = psess;
active = psess->self;
*pSess = psess->self;
if(count!=0)
{
psess->self->m_nStoreFlag = 1;
XPTDEBUG(("创建永久session(%s) \n",session));
sprintf(sql,"insert into pim_session(userid,pimsession) values ('%s','%s')",pUser,session);
XPTDEBUG(("sql=%s \n",sql));
if(!workdb.ExeSqlDirect(sql))
{
char log[1024];
sprintf(log,"Error : %s ",sql);
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
}
else
{
psess->self->m_nStoreFlag = 0;
XPTDEBUG(("创建临时session(%s) \n",session));
}
//打印session
XPTDEBUG(("StartList\n"));
pnode=head;
while(pnode!=NULL&&pnode->self!=NULL)
{
XPTDEBUG(("SessionList %s\n",pnode->pSessName));
pnode = pnode->next;
}
XPTDEBUG(("EndList\n"));
return count ;
}
int CTmlSessMgr::CreateSession(char *pUser,char*pPwd,char*pSession,CTmlSession**pSess)
{
XPTDEBUG(("CreateSession(user=%s pwd=%s,session=%s)\n",pUser,pPwd,pSession));
CTmlSessNode* pnode = head;
int count = 0;
char sql [1024];
sprintf(sql,"select count(*) from pim_user where userid='%s' and password='%s'",pUser,pPwd);
XPTDEBUG(("sql=%s \n",sql));
CMySet set;
if(workdb.PrepareSql(sql, set)==FALSE)
{
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
else
{
if(workdb.FetchData())
{
count = atoi(set.GetFieldValue(0));
XPTDEBUG(("sql=%s ,count=%d\n",sql,count));
}
}
CTmlSessNode *psess = (CTmlSessNode *)tmlLibMalloc(sizeof(CTmlSessNode));
tmlLibMemset(psess,0,(MemSize_t)sizeof(CTmlSessNode));
psess->pSessName = (char *)tmlLibMalloc(tmlLibStrlen(pSession));
tmlLibStrcpy(psess->pSessName,pSession);
psess->self = new CTmlSession ();
psess->self->m_sSessID = (char *)tmlLibMalloc(tmlLibStrlen(pSession));
tmlLibStrcpy(psess->self->m_sSessID,pSession);
psess->next = head;
head = psess;
active = psess->self;
*pSess = psess->self;
if(count!=0)
{
psess->self->m_nStoreFlag = 1;
XPTDEBUG(("创建永久session(%s) \n",pSession));
sprintf(sql,"insert into pim_session(userid,pimsession) values ('%s','%s')",pUser,pSession);
XPTDEBUG(("sql=%s \n",sql));
if(!workdb.ExeSqlDirect(sql))
{
char log[1024];
sprintf(log,"Error : %s ",sql);
XPTDEBUG(("sql=%s error=%s\n",sql,workdb.GetSqlError()));
}
}
else
{
psess->self->m_nStoreFlag = 0;
XPTDEBUG(("创建临时session(%s) \n",pSession));
}
//打印session
XPTDEBUG(("StartList\n"));
pnode=head;
while(pnode!=NULL&&pnode->self!=NULL)
{
XPTDEBUG(("SessionList %s\n",pnode->pSessName));
pnode = pnode->next;
}
XPTDEBUG(("EndList\n"));
return count ;
}
int CTmlSessMgr::DeleteSession(CTmlSession*pSess)
{
XPTDEBUG(("删除临时session(%s)\n",pSess->m_sSessID));
CTmlSessNode* pnode = head;
CTmlSessNode* plast = head;
while(pnode!=NULL&&pnode->self!=NULL)
{
if(pnode->self==pSess)
{
if(head==pnode)
{
head = head->next;
}
else
{
plast->next = pnode->next;
// tmlLibFree(pnode->self);
// tmlLibFree(pnode->pSessName);
// tmlLibFree(pnode);
pnode=NULL;
}
return 1;
}
else
{
plast = pnode;
pnode = pnode->next;
}
}
return 1;
}
int CTmlSessMgr::CreateSession(CTmlSession**pSess)
{
CTmlSessNode* pnode = head;
char *session = _get_nowtime();
XPTDEBUG(("创建临时session(%s) \n",session));
CTmlSessNode *psess = (CTmlSessNode *)tmlLibMalloc(sizeof(CTmlSessNode));
tmlLibMemset(psess,0,(MemSize_t)sizeof(CTmlSessNode));
psess->pSessName = (char *)tmlLibMalloc(tmlLibStrlen(session));
tmlLibStrcpy(psess->pSessName,session);
psess->self = new CTmlSession ();
psess->self->m_sSessID = (char *)tmlLibMalloc(tmlLibStrlen(session));
tmlLibStrcpy(psess->self->m_sSessID,session);
psess->self->m_nStoreFlag = 0;
psess->next = head;
head = psess;
active = psess->self;
*pSess = (psess->self);
//打印session
XPTDEBUG(("StartList\n"));
pnode=head;
while(pnode!=NULL&&pnode->self!=NULL)
{
XPTDEBUG(("SessionList %s\n",pnode->pSessName));
pnode = pnode->next;
}
XPTDEBUG(("EndList\n"));
return 1 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -