code_app/sdk/webservice/WebUser.cpp

76 lines
1.4 KiB
C++

#include "WebUser.h"
#include "WebServer.h"
#include "base/HGInfo.h"
#if defined(HG_CMP_MSC)
WebUser::WebUser(WebServer* server, HGUInt id, const std::string& ip, uint16_t port, SOCKET sockConn)
#else
WebUser::WebUser(WebServer* server, HGUInt id, const std::string& ip, uint16_t port, int sockConn)
#endif
{
m_server = server;
HGBase_CreateLock(&m_cs);
m_id = id;
m_ip = ip;
m_port = port;
m_sockConn = sockConn;
m_thread = NULL;
}
WebUser::~WebUser()
{
#if defined(HG_CMP_MSC)
closesocket(m_sockConn);
m_sockConn = INVALID_SOCKET;
#else
close(m_sockConn);
m_sockConn = -1;
#endif
HGBase_CloseThread(m_thread);
m_thread = NULL;
m_port = 0;
m_ip.clear();
m_id = 0;
HGBase_DestroyLock(m_cs);
m_server = NULL;
}
void WebUser::Open()
{
HGBase_OpenThread(ThreadFunc, this, &m_thread);
assert(NULL != m_thread);
}
HGUInt WebUser::GetId()
{
return m_id;
}
void WebUser::PostDisConnectMsg()
{
DisConnectParam* param = new DisConnectParam;
param->svr = m_server;
param->usrId = m_id;
HGMsg msg;
msg.id = MSGID_DISCONNECT;
msg.data = param;
if (HGBASE_ERR_OK != HGBase_PostPumpMessage(m_server->GetMsgPump(), &msg))
{
delete param;
}
}
void WebUser::ThreadFunc()
{
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "WebUser::ThreadFunc");
}
void HGAPI WebUser::ThreadFunc(HGThread thread, HGPointer param)
{
WebUser* p = (WebUser*)param;
p->ThreadFunc();
}