code_app/sdk/webservice/WebUser.cpp

72 lines
1.3 KiB
C++

#include "WebUser.h"
#include "WebServer.h"
#include "MsgLoop.h"
#include "base/HGInfo.h"
#if defined(HG_CMP_MSC)
WebUser::WebUser(class WebServer* server, HGUInt id, const char* ip, uint16_t port, SOCKET sockConn)
#else
WebUser::WebUser(class WebServer* server, HGUInt id, const char* ip, uint16_t port, int sockConn)
#endif
{
m_server = server;
HGBase_CreateLock(&m_cs);
m_id = id;
strcpy(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;
memset(m_ip, 0, sizeof(m_ip));
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;
}
class MsgLoop* WebUser::GetLoop()
{
return m_server->GetLoop();
}
class Manager* WebUser::GetManager()
{
return m_server->GetLoop()->GetManager();
}
void WebUser::ThreadFunc()
{
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "WebUser::ThreadFunc");
}
void WebUser::ThreadFunc(HGThread thread, HGPointer param)
{
WebUser* p = (WebUser*)param;
p->ThreadFunc();
}