按照乙方提供的接口,在HGVersion库中实现上报设备信息和用户行为的功能
This commit is contained in:
parent
7b71fbaaaa
commit
046643a767
|
@ -9,6 +9,18 @@ HGVersion_PostInstallInfo
|
|||
HGVersion_PostUninstallInfo
|
||||
HGVersion_PostCrashInfo
|
||||
HGVersion_PostUserFeedback
|
||||
|
||||
HGVersion_PostDeviceOpenInfo
|
||||
HGVersion_PostDeviceCloseInfo
|
||||
HGVersion_PostDeviceScanCountInfo
|
||||
HGVersion_PostDeviceClearRollerInfo
|
||||
HGVersion_PostDeviceHistroyCountInfo
|
||||
HGVersion_PostDeviceRollerCountInfo
|
||||
HGVersion_PostUserOpenInfo
|
||||
HGVersion_PostUserCloseInfo
|
||||
HGVersion_PostUserLoginInfo
|
||||
HGVersion_PostUserLogoutInfo
|
||||
|
||||
HGVersion_GetVersionList
|
||||
HGVersion_HttpDownload
|
||||
HGVersion_ReleaseVersionList
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\modules\version\HGVersion.h" />
|
||||
<ClInclude Include="..\..\..\modules\version\HGVersionImpl.hpp" />
|
||||
<ClInclude Include="..\..\..\modules\version\HGVersionMsg.h" />
|
||||
<ClInclude Include="..\..\..\third_party\json\cJSON.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -84,7 +84,7 @@ HGResult HGMsgPumpImpl::PostMessage(const HGMsg* msg)
|
|||
HGResult HGMsgPumpImpl::Exit()
|
||||
{
|
||||
HGMsg msg;
|
||||
msg.data = 0;
|
||||
msg.id = 0;
|
||||
msg.data = NULL;
|
||||
|
||||
HGResult ret = HGBASE_ERR_FAIL;
|
||||
|
|
|
@ -84,6 +84,122 @@ HGResult HGAPI HGVersion_PostUserFeedback(HGVersionMgr mgr, const HGChar* appNam
|
|||
return versionMgrImpl->PostUserFeedback(appName, desc, feedback, contact);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceOpenInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceOpenInfo(devName, devSN, devType, devFW);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceCloseInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceCloseInfo(devName, devSN, devType, devFW);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceScanCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt scanCount)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceScanCountInfo(devName, devSN, devType, devFW, scanCount);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceClearRollerInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceClearRollerInfo(devName, devSN, devType, devFW);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceHistroyCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt histroyCount)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceHistroyCountInfo(devName, devSN, devType, devFW, histroyCount);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostDeviceRollerCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt rollerCount)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostDeviceRollerCountInfo(devName, devSN, devType, devFW, rollerCount);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostUserOpenInfo(HGVersionMgr mgr, const HGChar* appName)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostUserOpenInfo(appName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostUserCloseInfo(HGVersionMgr mgr, const HGChar* appName)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostUserCloseInfo(appName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostUserLoginInfo(HGVersionMgr mgr, const HGChar* appName)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostUserLoginInfo(appName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_PostUserLogoutInfo(HGVersionMgr mgr, const HGChar* appName)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGVersionMgrImpl* versionMgrImpl = (HGVersionMgrImpl*)mgr;
|
||||
return versionMgrImpl->PostUserLogoutInfo(appName);
|
||||
}
|
||||
|
||||
HGResult HGAPI HGVersion_GetVersionList(HGVersionMgr mgr, const HGChar* appName, HGVersionInfo** info, HGUInt* count)
|
||||
{
|
||||
if (NULL == mgr)
|
||||
|
|
|
@ -12,7 +12,7 @@ HG_DECLARE_HANDLE(HGVersionMgr);
|
|||
typedef struct
|
||||
{
|
||||
HGBool postCrashInfo; /* 是否上报崩溃信息 */
|
||||
HGBool postUserBehavior; /* 是否上报用户行为 */
|
||||
HGBool postUserBehaviorInfo; /* 是否上报用户行为 */
|
||||
HGBool postDeviceInfo; /* 是否上报设备信息 */
|
||||
}HGServerConfig;
|
||||
|
||||
|
@ -44,6 +44,26 @@ HGEXPORT HGResult HGAPI HGVersion_PostCrashInfo(HGVersionMgr mgr, const HGChar*
|
|||
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostUserFeedback(HGVersionMgr mgr, const HGChar* appName, const HGChar* desc, const HGChar* feedback, const HGChar* contact);
|
||||
|
||||
// 设备信息
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceOpenInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceCloseInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceScanCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt scanCount);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceClearRollerInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceHistroyCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt histroyCount);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostDeviceRollerCountInfo(HGVersionMgr mgr, const HGChar* devName, const HGChar* devSN,
|
||||
const HGChar* devType, const HGChar* devFW, HGUInt rollerCount);
|
||||
|
||||
// 用户行为
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostUserOpenInfo(HGVersionMgr mgr, const HGChar* appName);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostUserCloseInfo(HGVersionMgr mgr, const HGChar* appName);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostUserLoginInfo(HGVersionMgr mgr, const HGChar* appName);
|
||||
HGEXPORT HGResult HGAPI HGVersion_PostUserLogoutInfo(HGVersionMgr mgr, const HGChar* appName);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGVersion_GetVersionList(HGVersionMgr mgr, const HGChar* appName, HGVersionInfo **info, HGUInt *count);
|
||||
|
||||
HGEXPORT HGResult HGAPI HGVersion_HttpDownload(HGVersionMgr mgr, const HGChar *url, const HGChar *saveFilePath, HGHttpDownloadFunc func, HGPointer param);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "../base/HGInfo.h"
|
||||
#include "../base/HGMd5.h"
|
||||
#include "../base/HGUtility.h"
|
||||
#include "HGVersionMsg.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
@ -42,7 +43,7 @@ static size_t write_data(void* ptr, size_t size, size_t nmemb, void* stream)
|
|||
static HGResult GetServerConfig(HGServerConfig& config)
|
||||
{
|
||||
config.postCrashInfo = HGFALSE;
|
||||
config.postUserBehavior = HGFALSE;
|
||||
config.postUserBehaviorInfo = HGFALSE;
|
||||
config.postDeviceInfo = HGFALSE;
|
||||
|
||||
HGResult ret = HGBASE_ERR_FAIL;
|
||||
|
@ -92,7 +93,7 @@ static HGResult GetServerConfig(HGServerConfig& config)
|
|||
while (NULL != p2)
|
||||
{
|
||||
if (0 == strcmp(p2->string, "report_switch"))
|
||||
config.postUserBehavior = (HGBool)p2->valueint;
|
||||
config.postUserBehaviorInfo = (HGBool)p2->valueint;
|
||||
else if (0 == strcmp(p2->string, "collapse_switch"))
|
||||
config.postCrashInfo = (HGBool)p2->valueint;
|
||||
else if (0 == strcmp(p2->string, "device_info_switch"))
|
||||
|
@ -532,7 +533,6 @@ static HGResult PostInfo(int type, const std::string& appName, const std::string
|
|||
}
|
||||
|
||||
std::string version = GetCurrVersion(appName);
|
||||
|
||||
std::string osName = GetOSName();
|
||||
std::string archName = GetArchName();
|
||||
std::string oemName = GetOemName();
|
||||
|
@ -639,6 +639,187 @@ static HGResult PostUserFeedback(const std::string& appName, const std::string&
|
|||
return PostInfo(4, appName, desc, "", "", feedback, contact);
|
||||
}
|
||||
|
||||
static HGResult PostDeviceInfo(const std::string& devName, const std::string& devSN, const std::string& devType,
|
||||
const std::string& devFW, HGUInt start, HGUInt close, HGUInt scan, HGUInt clean, HGUInt count, HGUInt pages)
|
||||
{
|
||||
HGResult ret = HGBASE_ERR_FAIL;
|
||||
CURL* curl = curl_easy_init();
|
||||
if (NULL != curl)
|
||||
{
|
||||
std::stringstream out;
|
||||
|
||||
std::string url = "http://cd.holdtecs.net:50080/api/bhs";
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2);
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
|
||||
std::string jsonStr;
|
||||
cJSON* json = cJSON_CreateObject();
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON_AddItemToObject(json, "name", cJSON_CreateString(devName.c_str()));
|
||||
cJSON_AddItemToObject(json, "sn", cJSON_CreateString(devSN.c_str()));
|
||||
cJSON_AddItemToObject(json, "type", cJSON_CreateString(devType.c_str()));
|
||||
cJSON_AddItemToObject(json, "fw", cJSON_CreateString(devFW.c_str()));
|
||||
|
||||
cJSON_AddItemToObject(json, "start", cJSON_CreateNumber(start));
|
||||
cJSON_AddItemToObject(json, "close", cJSON_CreateNumber(close));
|
||||
cJSON_AddItemToObject(json, "scan", cJSON_CreateNumber(scan));
|
||||
cJSON_AddItemToObject(json, "clean", cJSON_CreateNumber(clean));
|
||||
cJSON_AddItemToObject(json, "count", cJSON_CreateNumber(count));
|
||||
cJSON_AddItemToObject(json, "pages", cJSON_CreateNumber(pages));
|
||||
|
||||
jsonStr = cJSON_Print(json);
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
struct curl_slist* headers = NULL;
|
||||
headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
||||
curl_easy_setopt(curl, CURLOPT_POST, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonStr.c_str());
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
|
||||
|
||||
/* Perform the request, res will get the return code */
|
||||
CURLcode res = curl_easy_perform(curl);
|
||||
/* Check for errors */
|
||||
if (res != CURLE_OK)
|
||||
fprintf(stderr, "curl_easy_perform() failed: %s", curl_easy_strerror(res));
|
||||
else
|
||||
{
|
||||
std::string str_json = out.str(); // 返回值
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "str_json=%s", str_json.c_str());
|
||||
|
||||
cJSON* json = cJSON_Parse(str_json.c_str());
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* p = json->child;
|
||||
while (NULL != p)
|
||||
{
|
||||
if (0 == strcmp(p->string, "code") && p->type == cJSON_Number)
|
||||
{
|
||||
if (1 == p->valueint)
|
||||
ret = HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
}
|
||||
|
||||
curl_slist_free_all(headers);
|
||||
/* always cleanup */
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HGResult PostUserInfo(const std::string& appName, const std::string& action)
|
||||
{
|
||||
HGResult ret = HGBASE_ERR_FAIL;
|
||||
CURL* curl = curl_easy_init();
|
||||
if (NULL != curl)
|
||||
{
|
||||
std::stringstream out;
|
||||
|
||||
std::string url = "http://cd.holdtecs.net:50080/api/behaviors";
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2);
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
|
||||
std::vector<std::string> macList;
|
||||
GetMacAddrList(macList);
|
||||
if (macList.empty())
|
||||
macList.push_back("00-00-00-00-00-00");
|
||||
|
||||
std::sort(macList.begin(), macList.end(), Greater);
|
||||
std::string strMacAddrTotal;
|
||||
for (int i = 0; i < (int)macList.size(); ++i)
|
||||
{
|
||||
strMacAddrTotal += macList[i];
|
||||
}
|
||||
|
||||
HGByte md5[16] = { 0 };
|
||||
HGBase_MakeMd5((const HGByte*)strMacAddrTotal.c_str(), (HGUInt)strMacAddrTotal.size(), md5);
|
||||
char md5Str[64] = { 0 };
|
||||
char* pstr = md5Str;
|
||||
for (int i = 0; i < 16; ++i)
|
||||
{
|
||||
sprintf(pstr, "%02x", md5[i]);
|
||||
pstr += 2;
|
||||
}
|
||||
|
||||
std::string version = GetCurrVersion(appName);
|
||||
std::string osName = GetOSName();
|
||||
std::string archName = GetArchName();
|
||||
std::string oemName = GetOemName();
|
||||
|
||||
std::string jsonStr;
|
||||
cJSON* json = cJSON_CreateObject();
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON_AddItemToObject(json, "mac", cJSON_CreateString(macList[0].c_str()));
|
||||
cJSON_AddItemToObject(json, "localid", cJSON_CreateString(md5Str));
|
||||
cJSON_AddItemToObject(json, "v", cJSON_CreateString(version.c_str()));
|
||||
cJSON_AddItemToObject(json, "sys", cJSON_CreateString(osName.c_str()));
|
||||
cJSON_AddItemToObject(json, "cpu", cJSON_CreateString(archName.c_str()));
|
||||
cJSON_AddItemToObject(json, "oem", cJSON_CreateString(oemName.c_str()));
|
||||
cJSON_AddItemToObject(json, "app_name", cJSON_CreateString(appName.c_str()));
|
||||
cJSON_AddItemToObject(json, "act", cJSON_CreateString(action.c_str()));
|
||||
|
||||
jsonStr = cJSON_Print(json);
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
struct curl_slist* headers = NULL;
|
||||
headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
||||
curl_easy_setopt(curl, CURLOPT_POST, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonStr.c_str());
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
|
||||
|
||||
/* Perform the request, res will get the return code */
|
||||
CURLcode res = curl_easy_perform(curl);
|
||||
/* Check for errors */
|
||||
if (res != CURLE_OK)
|
||||
fprintf(stderr, "curl_easy_perform() failed: %s", curl_easy_strerror(res));
|
||||
else
|
||||
{
|
||||
std::string str_json = out.str(); // 返回值
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "str_json=%s", str_json.c_str());
|
||||
|
||||
cJSON* json = cJSON_Parse(str_json.c_str());
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* p = json->child;
|
||||
while (NULL != p)
|
||||
{
|
||||
if (0 == strcmp(p->string, "code") && p->type == cJSON_Number)
|
||||
{
|
||||
if (1 == p->valueint)
|
||||
ret = HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
}
|
||||
|
||||
curl_slist_free_all(headers);
|
||||
/* always cleanup */
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HGResult GetVersionList(const std::string& appName, std::list<VersionInfoImpl> &versionList)
|
||||
{
|
||||
versionList.clear();
|
||||
|
@ -799,16 +980,28 @@ static HGResult HttpDownload(const std::string& url, const std::string& saveFile
|
|||
HGVersionMgrImpl::HGVersionMgrImpl()
|
||||
{
|
||||
m_serverCfg.postCrashInfo = HGFALSE;
|
||||
m_serverCfg.postUserBehavior = HGFALSE;
|
||||
m_serverCfg.postUserBehaviorInfo = HGFALSE;
|
||||
m_serverCfg.postDeviceInfo = HGFALSE;
|
||||
m_msgPump = NULL;
|
||||
m_thread = NULL;
|
||||
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
::GetServerConfig(m_serverCfg);
|
||||
if (m_serverCfg.postDeviceInfo || m_serverCfg.postUserBehaviorInfo)
|
||||
{
|
||||
HGBase_CreateMsgPump(&m_msgPump);
|
||||
HGBase_OpenThread(ThreadFunc, this, &m_thread);
|
||||
}
|
||||
}
|
||||
|
||||
HGVersionMgrImpl::~HGVersionMgrImpl()
|
||||
{
|
||||
HGBase_ExitMsgPump(m_msgPump);
|
||||
HGBase_CloseThread(m_thread);
|
||||
m_thread = NULL;
|
||||
HGBase_DestroyMsgPump(m_msgPump);
|
||||
m_msgPump = NULL;
|
||||
|
||||
curl_global_cleanup();
|
||||
}
|
||||
|
||||
|
@ -846,6 +1039,203 @@ HGResult HGVersionMgrImpl::PostUserFeedback(const HGChar* appName, const HGChar*
|
|||
return ::PostUserFeedback(appName, desc, feedback, contact);
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceOpenInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceInfoParam* param = new PostDeviceInfoParam;
|
||||
param->devName = devName;
|
||||
param->devSN = devSN;
|
||||
param->devType = devType;
|
||||
param->devFW = devFW;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceOpenInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceCloseInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceInfoParam* param = new PostDeviceInfoParam;
|
||||
param->devName = devName;
|
||||
param->devSN = devSN;
|
||||
param->devType = devType;
|
||||
param->devFW = devFW;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceCloseInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceScanCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt scanCount)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceScanCountInfoParam* param = new PostDeviceScanCountInfoParam;
|
||||
param->baseInfo.devName = devName;
|
||||
param->baseInfo.devSN = devSN;
|
||||
param->baseInfo.devType = devType;
|
||||
param->baseInfo.devFW = devFW;
|
||||
param->scanCount = scanCount;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceScanCountInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceClearRollerInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceInfoParam* param = new PostDeviceInfoParam;
|
||||
param->devName = devName;
|
||||
param->devSN = devSN;
|
||||
param->devType = devType;
|
||||
param->devFW = devFW;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceClearRollerInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceHistroyCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt histroyCount)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceHistroyCountInfoParam* param = new PostDeviceHistroyCountInfoParam;
|
||||
param->baseInfo.devName = devName;
|
||||
param->baseInfo.devSN = devSN;
|
||||
param->baseInfo.devType = devType;
|
||||
param->baseInfo.devFW = devFW;
|
||||
param->histroyCount = histroyCount;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceHistroyCountInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostDeviceRollerCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt rollerCount)
|
||||
{
|
||||
if (!m_serverCfg.postDeviceInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostDeviceRollerCountInfoParam* param = new PostDeviceRollerCountInfoParam;
|
||||
param->baseInfo.devName = devName;
|
||||
param->baseInfo.devSN = devSN;
|
||||
param->baseInfo.devType = devType;
|
||||
param->baseInfo.devFW = devFW;
|
||||
param->rollerCount = rollerCount;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostDeviceRollerCountInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostUserOpenInfo(const HGChar* appName)
|
||||
{
|
||||
if (!m_serverCfg.postUserBehaviorInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostUserInfoParam* param = new PostUserInfoParam;
|
||||
param->appName = appName;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostUserOpenInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostUserCloseInfo(const HGChar* appName)
|
||||
{
|
||||
if (!m_serverCfg.postUserBehaviorInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostUserInfoParam* param = new PostUserInfoParam;
|
||||
param->appName = appName;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostUserCloseInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostUserLoginInfo(const HGChar* appName)
|
||||
{
|
||||
if (!m_serverCfg.postUserBehaviorInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostUserInfoParam* param = new PostUserInfoParam;
|
||||
param->appName = appName;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostUserLoginInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::PostUserLogoutInfo(const HGChar* appName)
|
||||
{
|
||||
if (!m_serverCfg.postUserBehaviorInfo)
|
||||
return HGBASE_ERR_FAIL;
|
||||
|
||||
PostUserInfoParam* param = new PostUserInfoParam;
|
||||
param->appName = appName;
|
||||
|
||||
HGMsg msg;
|
||||
msg.id = MsgId_PostUserLogoutInfo;
|
||||
msg.data = param;
|
||||
HGResult ret = HGBase_PostPumpMessage(m_msgPump, &msg);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
delete param;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGResult HGVersionMgrImpl::GetVersionList(const HGChar* appName, HGVersionInfo** info, HGUInt* count)
|
||||
{
|
||||
if (NULL == info || NULL == count)
|
||||
|
@ -939,3 +1329,93 @@ HGResult HGVersionMgrImpl::GetCurrVersion(const HGChar* appName, HGChar* version
|
|||
strcpy(version, ver.c_str());
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
void HGVersionMgrImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||
{
|
||||
HGVersionMgrImpl* p = (HGVersionMgrImpl*)param;
|
||||
HGBase_RunMsgPump(p->m_msgPump, MsgPumpFunc, p);
|
||||
}
|
||||
|
||||
void HGVersionMgrImpl::MsgPumpFunc(HGMsgPump msgPump, const HGMsg* msg, HGPointer param)
|
||||
{
|
||||
(void)msgPump;
|
||||
assert(NULL != msg);
|
||||
HGVersionMgrImpl* p = (HGVersionMgrImpl*)param;
|
||||
|
||||
switch (msg->id)
|
||||
{
|
||||
case MsgId_PostDeviceOpenInfo:
|
||||
{
|
||||
PostDeviceInfoParam* param = (PostDeviceInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->devName, param->devSN, param->devType, param->devFW, 1, 0, 0, 0, 0, 0);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostDeviceCloseInfo:
|
||||
{
|
||||
PostDeviceInfoParam* param = (PostDeviceInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->devName, param->devSN, param->devType, param->devFW, 0, 1, 0, 0, 0, 0);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostDeviceScanCountInfo:
|
||||
{
|
||||
PostDeviceScanCountInfoParam* param = (PostDeviceScanCountInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->baseInfo.devName, param->baseInfo.devSN, param->baseInfo.devType,
|
||||
param->baseInfo.devFW, 0, 0, param->scanCount, 0, 0, 0);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostDeviceClearRollerInfo:
|
||||
{
|
||||
PostDeviceInfoParam* param = (PostDeviceInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->devName, param->devSN, param->devType, param->devFW, 0, 0, 0, 1, 0, 0);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostDeviceHistroyCountInfo:
|
||||
{
|
||||
PostDeviceHistroyCountInfoParam* param = (PostDeviceHistroyCountInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->baseInfo.devName, param->baseInfo.devSN, param->baseInfo.devType,
|
||||
param->baseInfo.devFW, 0, 0, 0, 0, 0, param->histroyCount);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostDeviceRollerCountInfo:
|
||||
{
|
||||
PostDeviceRollerCountInfoParam* param = (PostDeviceRollerCountInfoParam*)msg->data;
|
||||
::PostDeviceInfo(param->baseInfo.devName, param->baseInfo.devSN, param->baseInfo.devType,
|
||||
param->baseInfo.devFW, 0, 0, 0, 0, param->rollerCount, 0);
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostUserOpenInfo:
|
||||
{
|
||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||
::PostUserInfo(param->appName, "power_on");
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostUserCloseInfo:
|
||||
{
|
||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||
::PostUserInfo(param->appName, "power_off");
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostUserLoginInfo:
|
||||
{
|
||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||
::PostUserInfo(param->appName, "login");
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
case MsgId_PostUserLogoutInfo:
|
||||
{
|
||||
PostUserInfoParam* param = (PostUserInfoParam*)msg->data;
|
||||
::PostUserInfo(param->appName, "logout");
|
||||
delete param;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
#define __HGVERSIONIMPL_HPP__
|
||||
|
||||
#include "HGVersion.h"
|
||||
#include "../base/HGMsgPump.h"
|
||||
#include "../base/HGThread.h"
|
||||
|
||||
class HGVersionMgrImpl
|
||||
|
@ -15,13 +16,39 @@ public:
|
|||
HGResult PostUninstallInfo(const HGChar* appName, const HGChar* desc);
|
||||
HGResult PostCrashInfo(const HGChar* appName, const HGChar* desc, const HGChar* crashFilePath, const HGChar* exceptionAddr);
|
||||
HGResult PostUserFeedback(const HGChar* appName, const HGChar* desc, const HGChar* feedback, const HGChar* contact);
|
||||
|
||||
// 设备信息
|
||||
HGResult PostDeviceOpenInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW);
|
||||
HGResult PostDeviceCloseInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW);
|
||||
HGResult PostDeviceScanCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt scanCount);
|
||||
HGResult PostDeviceClearRollerInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW);
|
||||
HGResult PostDeviceHistroyCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt histroyCount);
|
||||
HGResult PostDeviceRollerCountInfo(const HGChar* devName, const HGChar* devSN, const HGChar* devType,
|
||||
const HGChar* devFW, HGUInt rollerCount);
|
||||
|
||||
// 用户行为
|
||||
HGResult PostUserOpenInfo(const HGChar* appName);
|
||||
HGResult PostUserCloseInfo(const HGChar* appName);
|
||||
HGResult PostUserLoginInfo(const HGChar* appName);
|
||||
HGResult PostUserLogoutInfo(const HGChar* appName);
|
||||
|
||||
HGResult GetVersionList(const HGChar* appName, HGVersionInfo** info, HGUInt* count);
|
||||
HGResult HttpDownload(const HGChar* url, const HGChar* saveFilePath, HGHttpDownloadFunc func, HGPointer param);
|
||||
static HGResult ReleaseVersionList(HGVersionInfo *info, HGUInt count);
|
||||
static HGResult GetCurrVersion(const HGChar* appName, HGChar* version, HGUInt maxLen);
|
||||
|
||||
private:
|
||||
static void ThreadFunc(HGThread thread, HGPointer param);
|
||||
static void MsgPumpFunc(HGMsgPump msgPump, const HGMsg* msg, HGPointer param);
|
||||
|
||||
private:
|
||||
HGServerConfig m_serverCfg;
|
||||
HGMsgPump m_msgPump;
|
||||
HGThread m_thread;
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef __HGVERSIONMSG_H__
|
||||
#define __HGVERSIONMSG_H__
|
||||
|
||||
#include "../base/HGDef.h"
|
||||
#include <string>
|
||||
|
||||
enum
|
||||
{
|
||||
MsgId_PostDeviceOpenInfo = 1,
|
||||
MsgId_PostDeviceCloseInfo,
|
||||
MsgId_PostDeviceScanCountInfo,
|
||||
MsgId_PostDeviceClearRollerInfo,
|
||||
MsgId_PostDeviceHistroyCountInfo,
|
||||
MsgId_PostDeviceRollerCountInfo,
|
||||
|
||||
MsgId_PostUserOpenInfo,
|
||||
MsgId_PostUserCloseInfo,
|
||||
MsgId_PostUserLoginInfo,
|
||||
MsgId_PostUserLogoutInfo
|
||||
};
|
||||
|
||||
struct PostDeviceInfoParam
|
||||
{
|
||||
std::string devName;
|
||||
std::string devSN;
|
||||
std::string devType;
|
||||
std::string devFW;
|
||||
};
|
||||
|
||||
struct PostDeviceScanCountInfoParam
|
||||
{
|
||||
PostDeviceInfoParam baseInfo;
|
||||
HGUInt scanCount;
|
||||
};
|
||||
|
||||
struct PostDeviceHistroyCountInfoParam
|
||||
{
|
||||
PostDeviceInfoParam baseInfo;
|
||||
HGUInt histroyCount;
|
||||
};
|
||||
|
||||
struct PostDeviceRollerCountInfoParam
|
||||
{
|
||||
PostDeviceInfoParam baseInfo;
|
||||
HGUInt rollerCount;
|
||||
};
|
||||
|
||||
struct PostUserInfoParam
|
||||
{
|
||||
std::string appName;
|
||||
};
|
||||
|
||||
#endif /* __HGVERSIONMSG_H__ */
|
Loading…
Reference in New Issue