#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 WebUser::ThreadFunc(HGThread thread, HGPointer param) { WebUser* p = (WebUser*)param; p->ThreadFunc(); }