⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmlsessmgr.cpp

📁 pimserver是syncml_vc开发包的服务器实例
💻 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 + -