按照乙方修改的文档,修改上传用户行为功能
This commit is contained in:
parent
304bb14215
commit
002e798c8f
|
@ -39,9 +39,11 @@ HGBase_WriteLog
|
||||||
HGBase_CreateNamedPipe
|
HGBase_CreateNamedPipe
|
||||||
HGBase_DestroyNamedPipe
|
HGBase_DestroyNamedPipe
|
||||||
HGBase_WriteNamedPipe
|
HGBase_WriteNamedPipe
|
||||||
|
HGBase_StopWriteNamedPipe
|
||||||
HGBase_OpenNamedPipe
|
HGBase_OpenNamedPipe
|
||||||
HGBase_CloseNamedPipe
|
HGBase_CloseNamedPipe
|
||||||
HGBase_ReadNamedPipe
|
HGBase_ReadNamedPipe
|
||||||
|
HGBase_StopReadNamedPipe
|
||||||
|
|
||||||
HGBase_OpenConsole
|
HGBase_OpenConsole
|
||||||
HGBase_CloseConsole
|
HGBase_CloseConsole
|
||||||
|
|
|
@ -19,5 +19,6 @@
|
||||||
#include "HGIni.h"
|
#include "HGIni.h"
|
||||||
#include "HGMsgPump.h"
|
#include "HGMsgPump.h"
|
||||||
#include "HGTime.h"
|
#include "HGTime.h"
|
||||||
|
#include "HGNamedPipe.h"
|
||||||
|
|
||||||
#endif /* __HGBASE_H__ */
|
#endif /* __HGBASE_H__ */
|
|
@ -6,8 +6,12 @@ struct HGNamedPipeOutImpl
|
||||||
HGNamedPipeOutImpl()
|
HGNamedPipeOutImpl()
|
||||||
{
|
{
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
m_hConnectEvent = NULL;
|
||||||
|
m_hWriteEvent = NULL;
|
||||||
m_hPipe = INVALID_HANDLE_VALUE;
|
m_hPipe = INVALID_HANDLE_VALUE;
|
||||||
|
m_pOverlapped = NULL;
|
||||||
#else
|
#else
|
||||||
|
m_filePath.empty();
|
||||||
m_fdPipe = -1;
|
m_fdPipe = -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -15,25 +19,26 @@ struct HGNamedPipeOutImpl
|
||||||
~HGNamedPipeOutImpl()
|
~HGNamedPipeOutImpl()
|
||||||
{
|
{
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
if (INVALID_HANDLE_VALUE != m_hPipe)
|
delete m_pOverlapped;
|
||||||
{
|
m_pOverlapped = NULL;
|
||||||
CloseHandle(m_hPipe);
|
CloseHandle(m_hPipe);
|
||||||
m_hPipe = INVALID_HANDLE_VALUE;
|
m_hPipe = INVALID_HANDLE_VALUE;
|
||||||
}
|
CloseHandle(m_hWriteEvent);
|
||||||
|
m_hWriteEvent = NULL;
|
||||||
|
CloseHandle(m_hConnectEvent);
|
||||||
|
m_hConnectEvent = NULL;
|
||||||
#else
|
#else
|
||||||
if (-1 != m_fdPipe)
|
|
||||||
{
|
|
||||||
close(m_fdPipe);
|
close(m_fdPipe);
|
||||||
m_fdPipe = -1;
|
m_fdPipe = -1;
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_filePath.empty())
|
|
||||||
unlink(m_filePath.c_str());
|
unlink(m_filePath.c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
HANDLE m_hConnectEvent;
|
||||||
|
HANDLE m_hWriteEvent;
|
||||||
HANDLE m_hPipe;
|
HANDLE m_hPipe;
|
||||||
|
OVERLAPPED *m_pOverlapped;
|
||||||
#else
|
#else
|
||||||
std::string m_filePath;
|
std::string m_filePath;
|
||||||
int m_fdPipe;
|
int m_fdPipe;
|
||||||
|
@ -45,6 +50,7 @@ struct HGNamedPipeInImpl
|
||||||
HGNamedPipeInImpl()
|
HGNamedPipeInImpl()
|
||||||
{
|
{
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
m_hReadEvent = NULL;
|
||||||
m_hPipe = INVALID_HANDLE_VALUE;
|
m_hPipe = INVALID_HANDLE_VALUE;
|
||||||
#else
|
#else
|
||||||
m_fdPipe = -1;
|
m_fdPipe = -1;
|
||||||
|
@ -54,21 +60,18 @@ struct HGNamedPipeInImpl
|
||||||
~HGNamedPipeInImpl()
|
~HGNamedPipeInImpl()
|
||||||
{
|
{
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
if (INVALID_HANDLE_VALUE != m_hPipe)
|
|
||||||
{
|
|
||||||
CloseHandle(m_hPipe);
|
CloseHandle(m_hPipe);
|
||||||
m_hPipe = INVALID_HANDLE_VALUE;
|
m_hPipe = INVALID_HANDLE_VALUE;
|
||||||
}
|
CloseHandle(m_hReadEvent);
|
||||||
|
m_hReadEvent = NULL;
|
||||||
#else
|
#else
|
||||||
if (-1 != m_fdPipe)
|
|
||||||
{
|
|
||||||
close(m_fdPipe);
|
close(m_fdPipe);
|
||||||
m_fdPipe = -1;
|
m_fdPipe = -1;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
HANDLE m_hReadEvent;
|
||||||
HANDLE m_hPipe;
|
HANDLE m_hPipe;
|
||||||
#else
|
#else
|
||||||
int m_fdPipe;
|
int m_fdPipe;
|
||||||
|
@ -83,21 +86,43 @@ HGResult HGAPI HGBase_CreateNamedPipe(const HGChar* pipeName, HGNamedPipeOut* pi
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
HANDLE hConnectEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
|
||||||
|
assert(NULL != hConnectEvent);
|
||||||
|
HANDLE hWriteEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
|
||||||
|
assert(NULL != hWriteEvent);
|
||||||
|
|
||||||
char name[256];
|
char name[256];
|
||||||
sprintf(name, "\\\\.\\pipe\\%s", pipeName);
|
sprintf(name, "\\\\.\\pipe\\%s", pipeName);
|
||||||
HANDLE hPipe = CreateNamedPipeA(name, PIPE_ACCESS_OUTBOUND, PIPE_READMODE_BYTE | PIPE_WAIT,
|
HANDLE hPipe = CreateNamedPipeA(name, PIPE_ACCESS_OUTBOUND | FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_OVERLAPPED,
|
||||||
PIPE_UNLIMITED_INSTANCES, 0, 0, 0, NULL);
|
0, 1, 1024, 1024, 0, NULL);
|
||||||
if (INVALID_HANDLE_VALUE == hPipe)
|
if (INVALID_HANDLE_VALUE == hPipe)
|
||||||
return HGBASE_ERR_FAIL;
|
|
||||||
|
|
||||||
if (!ConnectNamedPipe(hPipe, NULL))
|
|
||||||
{
|
{
|
||||||
CloseHandle(hPipe);
|
CloseHandle(hWriteEvent);
|
||||||
|
CloseHandle(hConnectEvent);
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OVERLAPPED* pOverlapped = new OVERLAPPED;
|
||||||
|
memset(pOverlapped, 0, sizeof(OVERLAPPED));
|
||||||
|
pOverlapped->hEvent = hConnectEvent;
|
||||||
|
if (!ConnectNamedPipe(hPipe, pOverlapped))
|
||||||
|
{
|
||||||
|
DWORD err = GetLastError();
|
||||||
|
if (ERROR_IO_PENDING != err && ERROR_PIPE_CONNECTED != err)
|
||||||
|
{
|
||||||
|
delete pOverlapped;
|
||||||
|
CloseHandle(hPipe);
|
||||||
|
CloseHandle(hWriteEvent);
|
||||||
|
CloseHandle(hConnectEvent);
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
HGNamedPipeOutImpl* pipeOutImpl = new HGNamedPipeOutImpl;
|
HGNamedPipeOutImpl* pipeOutImpl = new HGNamedPipeOutImpl;
|
||||||
|
pipeOutImpl->m_hConnectEvent = hConnectEvent;
|
||||||
|
pipeOutImpl->m_hWriteEvent = hWriteEvent;
|
||||||
pipeOutImpl->m_hPipe = hPipe;
|
pipeOutImpl->m_hPipe = hPipe;
|
||||||
|
pipeOutImpl->m_pOverlapped = pOverlapped;
|
||||||
#else
|
#else
|
||||||
char name[256];
|
char name[256];
|
||||||
sprintf(name, "/tmp/%s", pipeName);
|
sprintf(name, "/tmp/%s", pipeName);
|
||||||
|
@ -140,16 +165,43 @@ HGResult HGAPI HGBase_WriteNamedPipe(HGNamedPipeOut pipeOut, const HGByte* data,
|
||||||
}
|
}
|
||||||
|
|
||||||
HGNamedPipeOutImpl* pipeOutImpl = (HGNamedPipeOutImpl*)pipeOut;
|
HGNamedPipeOutImpl* pipeOutImpl = (HGNamedPipeOutImpl*)pipeOut;
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
DWORD dwNumerOfWriteBytes = 0;
|
// 等待连接
|
||||||
if (!WriteFile(pipeOutImpl->m_hPipe, data, size, &dwNumerOfWriteBytes, NULL))
|
WaitForSingleObject(pipeOutImpl->m_hConnectEvent, INFINITE);
|
||||||
|
DWORD dwTransferBytes = 0; // 此值无意义
|
||||||
|
if (!GetOverlappedResult(pipeOutImpl->m_hPipe, pipeOutImpl->m_pOverlapped, &dwTransferBytes, TRUE))
|
||||||
|
{
|
||||||
|
// 手动停止
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
OVERLAPPED overlapped = { 0 };
|
||||||
|
overlapped.hEvent = pipeOutImpl->m_hWriteEvent;
|
||||||
|
DWORD dwNumerOfWriteBytes = 0;
|
||||||
|
if (!WriteFile(pipeOutImpl->m_hPipe, data, size, &dwNumerOfWriteBytes, &overlapped))
|
||||||
|
{
|
||||||
|
if (ERROR_IO_PENDING != GetLastError())
|
||||||
|
{
|
||||||
|
// 写入错误
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
WaitForSingleObject(pipeOutImpl->m_hWriteEvent, INFINITE);
|
||||||
|
if (!GetOverlappedResult(pipeOutImpl->m_hPipe, &overlapped, &dwNumerOfWriteBytes, TRUE))
|
||||||
|
{
|
||||||
|
// 手动停止
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL != writeSize)
|
if (NULL != writeSize)
|
||||||
*writeSize = dwNumerOfWriteBytes;
|
*writeSize = dwNumerOfWriteBytes;
|
||||||
#else
|
#else
|
||||||
int res = write(pipeOutImpl->m_fdPipe, data, size);
|
int res = write(pipeOutImpl->m_fdPipe, data, size);
|
||||||
if (-1 == res)
|
if (-1 == res)
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
|
|
||||||
if (NULL != writeSize)
|
if (NULL != writeSize)
|
||||||
*writeSize = res;
|
*writeSize = res;
|
||||||
#endif
|
#endif
|
||||||
|
@ -157,6 +209,22 @@ HGResult HGAPI HGBase_WriteNamedPipe(HGNamedPipeOut pipeOut, const HGByte* data,
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGResult HGAPI HGBase_StopWriteNamedPipe(HGNamedPipeOut pipeOut)
|
||||||
|
{
|
||||||
|
if (NULL == pipeOut)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGNamedPipeOutImpl* pipeOutImpl = (HGNamedPipeOutImpl*)pipeOut;
|
||||||
|
#if defined(HG_CMP_MSC)
|
||||||
|
SetEvent(pipeOutImpl->m_hConnectEvent);
|
||||||
|
SetEvent(pipeOutImpl->m_hWriteEvent);
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
return HGBASE_ERR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGBase_OpenNamedPipe(const HGChar* pipeName, HGNamedPipeIn* pipeIn)
|
HGResult HGAPI HGBase_OpenNamedPipe(const HGChar* pipeName, HGNamedPipeIn* pipeIn)
|
||||||
{
|
{
|
||||||
if (NULL == pipeName || NULL == pipeIn)
|
if (NULL == pipeName || NULL == pipeIn)
|
||||||
|
@ -165,15 +233,26 @@ HGResult HGAPI HGBase_OpenNamedPipe(const HGChar* pipeName, HGNamedPipeIn* pipeI
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
HANDLE hReadEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
|
||||||
|
assert(NULL != hReadEvent);
|
||||||
|
|
||||||
char name[256];
|
char name[256];
|
||||||
sprintf(name, "\\\\.\\pipe\\%s", pipeName);
|
sprintf(name, "\\\\.\\pipe\\%s", pipeName);
|
||||||
if (!WaitNamedPipeA(pipeName, NMPWAIT_USE_DEFAULT_WAIT))
|
if (!WaitNamedPipeA(name, NMPWAIT_USE_DEFAULT_WAIT))
|
||||||
|
{
|
||||||
|
DWORD dw = GetLastError();
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
HANDLE hPipe = CreateFileA(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
}
|
||||||
|
|
||||||
|
HANDLE hPipe = CreateFileA(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
|
||||||
if (INVALID_HANDLE_VALUE == hPipe)
|
if (INVALID_HANDLE_VALUE == hPipe)
|
||||||
|
{
|
||||||
|
CloseHandle(hReadEvent);
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
HGNamedPipeInImpl* pipeInImpl = new HGNamedPipeInImpl;
|
HGNamedPipeInImpl* pipeInImpl = new HGNamedPipeInImpl;
|
||||||
|
pipeInImpl->m_hReadEvent = hReadEvent;
|
||||||
pipeInImpl->m_hPipe = hPipe;
|
pipeInImpl->m_hPipe = hPipe;
|
||||||
#else
|
#else
|
||||||
char name[256];
|
char name[256];
|
||||||
|
@ -211,9 +290,25 @@ HGResult HGAPI HGBase_ReadNamedPipe(HGNamedPipeIn pipeIn, HGByte* data, HGUInt s
|
||||||
|
|
||||||
HGNamedPipeInImpl* pipeInImpl = (HGNamedPipeInImpl*)pipeIn;
|
HGNamedPipeInImpl* pipeInImpl = (HGNamedPipeInImpl*)pipeIn;
|
||||||
#if defined(HG_CMP_MSC)
|
#if defined(HG_CMP_MSC)
|
||||||
|
OVERLAPPED overlapped = { 0 };
|
||||||
|
overlapped.hEvent = pipeInImpl->m_hReadEvent;
|
||||||
DWORD dwNumerOfReadBytes = 0;
|
DWORD dwNumerOfReadBytes = 0;
|
||||||
if (!ReadFile(pipeInImpl->m_hPipe, data, size, &dwNumerOfReadBytes, NULL))
|
if (!ReadFile(pipeInImpl->m_hPipe, data, size, &dwNumerOfReadBytes, &overlapped))
|
||||||
|
{
|
||||||
|
if (ERROR_IO_PENDING != GetLastError())
|
||||||
|
{
|
||||||
|
// 读取错误
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
WaitForSingleObject(pipeInImpl->m_hReadEvent, INFINITE);
|
||||||
|
if (!GetOverlappedResult(pipeInImpl->m_hPipe, &overlapped, &dwNumerOfReadBytes, TRUE))
|
||||||
|
{
|
||||||
|
// 手动停止
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL != readSize)
|
if (NULL != readSize)
|
||||||
*readSize = dwNumerOfReadBytes;
|
*readSize = dwNumerOfReadBytes;
|
||||||
#else
|
#else
|
||||||
|
@ -226,3 +321,18 @@ HGResult HGAPI HGBase_ReadNamedPipe(HGNamedPipeIn pipeIn, HGByte* data, HGUInt s
|
||||||
|
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGResult HGAPI HGBase_StopReadNamedPipe(HGNamedPipeIn pipeIn)
|
||||||
|
{
|
||||||
|
if (NULL == pipeIn)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGNamedPipeInImpl* pipeInImpl = (HGNamedPipeInImpl*)pipeIn;
|
||||||
|
#if defined(HG_CMP_MSC)
|
||||||
|
SetEvent(pipeInImpl->m_hReadEvent);
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
return HGBASE_ERR_OK;
|
||||||
|
}
|
|
@ -13,10 +13,14 @@ HGEXPORT HGResult HGAPI HGBase_DestroyNamedPipe(HGNamedPipeOut pipeOut);
|
||||||
|
|
||||||
HGEXPORT HGResult HGAPI HGBase_WriteNamedPipe(HGNamedPipeOut pipeOut, const HGByte *data, HGUInt size, HGUInt *writeSize);
|
HGEXPORT HGResult HGAPI HGBase_WriteNamedPipe(HGNamedPipeOut pipeOut, const HGByte *data, HGUInt size, HGUInt *writeSize);
|
||||||
|
|
||||||
|
HGEXPORT HGResult HGAPI HGBase_StopWriteNamedPipe(HGNamedPipeOut pipeOut);
|
||||||
|
|
||||||
HGEXPORT HGResult HGAPI HGBase_OpenNamedPipe(const HGChar *pipeName, HGNamedPipeIn *pipeIn);
|
HGEXPORT HGResult HGAPI HGBase_OpenNamedPipe(const HGChar *pipeName, HGNamedPipeIn *pipeIn);
|
||||||
|
|
||||||
HGEXPORT HGResult HGAPI HGBase_CloseNamedPipe(HGNamedPipeIn pipeIn);
|
HGEXPORT HGResult HGAPI HGBase_CloseNamedPipe(HGNamedPipeIn pipeIn);
|
||||||
|
|
||||||
HGEXPORT HGResult HGAPI HGBase_ReadNamedPipe(HGNamedPipeIn pipeIn, HGByte *data, HGUInt size, HGUInt *readSize);
|
HGEXPORT HGResult HGAPI HGBase_ReadNamedPipe(HGNamedPipeIn pipeIn, HGByte *data, HGUInt size, HGUInt *readSize);
|
||||||
|
|
||||||
|
HGEXPORT HGResult HGAPI HGBase_StopReadNamedPipe(HGNamedPipeIn pipeIn);
|
||||||
|
|
||||||
#endif /* __HGNAMEDPIPE_H__ */
|
#endif /* __HGNAMEDPIPE_H__ */
|
|
@ -718,7 +718,7 @@ static HGResult PostDeviceInfo(const std::string& devName, const std::string& de
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HGResult PostUserInfo(const std::string& appName, const std::string& action)
|
static HGResult PostUserInfo(const std::string& appName, HGUInt powerOn, HGUInt powerOff, HGUInt login, HGUInt logout)
|
||||||
{
|
{
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
HGResult ret = HGBASE_ERR_FAIL;
|
||||||
CURL* curl = curl_easy_init();
|
CURL* curl = curl_easy_init();
|
||||||
|
@ -768,7 +768,11 @@ static HGResult PostUserInfo(const std::string& appName, const std::string& acti
|
||||||
cJSON_AddItemToObject(json, "cpu", cJSON_CreateString(archName.c_str()));
|
cJSON_AddItemToObject(json, "cpu", cJSON_CreateString(archName.c_str()));
|
||||||
cJSON_AddItemToObject(json, "oem", cJSON_CreateString(oemName.c_str()));
|
cJSON_AddItemToObject(json, "oem", cJSON_CreateString(oemName.c_str()));
|
||||||
cJSON_AddItemToObject(json, "app_name", cJSON_CreateString(appName.c_str()));
|
cJSON_AddItemToObject(json, "app_name", cJSON_CreateString(appName.c_str()));
|
||||||
cJSON_AddItemToObject(json, "act", cJSON_CreateString(action.c_str()));
|
|
||||||
|
cJSON_AddItemToObject(json, "power_on", cJSON_CreateNumber(powerOn));
|
||||||
|
cJSON_AddItemToObject(json, "power_off", cJSON_CreateNumber(powerOff));
|
||||||
|
cJSON_AddItemToObject(json, "login", cJSON_CreateNumber(login));
|
||||||
|
cJSON_AddItemToObject(json, "logout", cJSON_CreateNumber(logout));
|
||||||
|
|
||||||
jsonStr = cJSON_Print(json);
|
jsonStr = cJSON_Print(json);
|
||||||
cJSON_Delete(json);
|
cJSON_Delete(json);
|
||||||
|
@ -1392,28 +1396,28 @@ void HGVersionMgrImpl::MsgPumpFunc(HGMsgPump msgPump, const HGMsg* msg, HGPointe
|
||||||
case MsgId_PostUserOpenInfo:
|
case MsgId_PostUserOpenInfo:
|
||||||
{
|
{
|
||||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||||
::PostUserInfo(param->appName, "power_on");
|
::PostUserInfo(param->appName, 1, 0, 0, 0);
|
||||||
delete param;
|
delete param;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MsgId_PostUserCloseInfo:
|
case MsgId_PostUserCloseInfo:
|
||||||
{
|
{
|
||||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||||
::PostUserInfo(param->appName, "power_off");
|
::PostUserInfo(param->appName, 0, 1, 0, 0);
|
||||||
delete param;
|
delete param;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MsgId_PostUserLoginInfo:
|
case MsgId_PostUserLoginInfo:
|
||||||
{
|
{
|
||||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||||
::PostUserInfo(param->appName, "login");
|
::PostUserInfo(param->appName, 0, 0, 1, 0);
|
||||||
delete param;
|
delete param;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MsgId_PostUserLogoutInfo:
|
case MsgId_PostUserLogoutInfo:
|
||||||
{
|
{
|
||||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||||
::PostUserInfo(param->appName, "logout");
|
::PostUserInfo(param->appName, 0, 0, 0, 1);
|
||||||
delete param;
|
delete param;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue