按照乙方提供的接口,在HGVersion库中实现上报设备信息和用户行为的功能
This commit is contained in:
parent
7b71fbaaaa
commit
046643a767
|
@ -9,6 +9,18 @@ HGVersion_PostInstallInfo
|
||||||
HGVersion_PostUninstallInfo
|
HGVersion_PostUninstallInfo
|
||||||
HGVersion_PostCrashInfo
|
HGVersion_PostCrashInfo
|
||||||
HGVersion_PostUserFeedback
|
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_GetVersionList
|
||||||
HGVersion_HttpDownload
|
HGVersion_HttpDownload
|
||||||
HGVersion_ReleaseVersionList
|
HGVersion_ReleaseVersionList
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\modules\version\HGVersion.h" />
|
<ClInclude Include="..\..\..\modules\version\HGVersion.h" />
|
||||||
<ClInclude Include="..\..\..\modules\version\HGVersionImpl.hpp" />
|
<ClInclude Include="..\..\..\modules\version\HGVersionImpl.hpp" />
|
||||||
|
<ClInclude Include="..\..\..\modules\version\HGVersionMsg.h" />
|
||||||
<ClInclude Include="..\..\..\third_party\json\cJSON.h" />
|
<ClInclude Include="..\..\..\third_party\json\cJSON.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -84,7 +84,7 @@ HGResult HGMsgPumpImpl::PostMessage(const HGMsg* msg)
|
||||||
HGResult HGMsgPumpImpl::Exit()
|
HGResult HGMsgPumpImpl::Exit()
|
||||||
{
|
{
|
||||||
HGMsg msg;
|
HGMsg msg;
|
||||||
msg.data = 0;
|
msg.id = 0;
|
||||||
msg.data = NULL;
|
msg.data = NULL;
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
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);
|
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)
|
HGResult HGAPI HGVersion_GetVersionList(HGVersionMgr mgr, const HGChar* appName, HGVersionInfo** info, HGUInt* count)
|
||||||
{
|
{
|
||||||
if (NULL == mgr)
|
if (NULL == mgr)
|
||||||
|
|
|
@ -12,7 +12,7 @@ HG_DECLARE_HANDLE(HGVersionMgr);
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HGBool postCrashInfo; /* 是否上报崩溃信息 */
|
HGBool postCrashInfo; /* 是否上报崩溃信息 */
|
||||||
HGBool postUserBehavior; /* 是否上报用户行为 */
|
HGBool postUserBehaviorInfo; /* 是否上报用户行为 */
|
||||||
HGBool postDeviceInfo; /* 是否上报设备信息 */
|
HGBool postDeviceInfo; /* 是否上报设备信息 */
|
||||||
}HGServerConfig;
|
}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_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_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);
|
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/HGInfo.h"
|
||||||
#include "../base/HGMd5.h"
|
#include "../base/HGMd5.h"
|
||||||
#include "../base/HGUtility.h"
|
#include "../base/HGUtility.h"
|
||||||
|
#include "HGVersionMsg.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#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)
|
static HGResult GetServerConfig(HGServerConfig& config)
|
||||||
{
|
{
|
||||||
config.postCrashInfo = HGFALSE;
|
config.postCrashInfo = HGFALSE;
|
||||||
config.postUserBehavior = HGFALSE;
|
config.postUserBehaviorInfo = HGFALSE;
|
||||||
config.postDeviceInfo = HGFALSE;
|
config.postDeviceInfo = HGFALSE;
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
HGResult ret = HGBASE_ERR_FAIL;
|
||||||
|
@ -92,7 +93,7 @@ static HGResult GetServerConfig(HGServerConfig& config)
|
||||||
while (NULL != p2)
|
while (NULL != p2)
|
||||||
{
|
{
|
||||||
if (0 == strcmp(p2->string, "report_switch"))
|
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"))
|
else if (0 == strcmp(p2->string, "collapse_switch"))
|
||||||
config.postCrashInfo = (HGBool)p2->valueint;
|
config.postCrashInfo = (HGBool)p2->valueint;
|
||||||
else if (0 == strcmp(p2->string, "device_info_switch"))
|
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 version = GetCurrVersion(appName);
|
||||||
|
|
||||||
std::string osName = GetOSName();
|
std::string osName = GetOSName();
|
||||||
std::string archName = GetArchName();
|
std::string archName = GetArchName();
|
||||||
std::string oemName = GetOemName();
|
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);
|
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)
|
static HGResult GetVersionList(const std::string& appName, std::list<VersionInfoImpl> &versionList)
|
||||||
{
|
{
|
||||||
versionList.clear();
|
versionList.clear();
|
||||||
|
@ -799,16 +980,28 @@ static HGResult HttpDownload(const std::string& url, const std::string& saveFile
|
||||||
HGVersionMgrImpl::HGVersionMgrImpl()
|
HGVersionMgrImpl::HGVersionMgrImpl()
|
||||||
{
|
{
|
||||||
m_serverCfg.postCrashInfo = HGFALSE;
|
m_serverCfg.postCrashInfo = HGFALSE;
|
||||||
m_serverCfg.postUserBehavior = HGFALSE;
|
m_serverCfg.postUserBehaviorInfo = HGFALSE;
|
||||||
m_serverCfg.postDeviceInfo = HGFALSE;
|
m_serverCfg.postDeviceInfo = HGFALSE;
|
||||||
|
m_msgPump = NULL;
|
||||||
m_thread = NULL;
|
m_thread = NULL;
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
::GetServerConfig(m_serverCfg);
|
::GetServerConfig(m_serverCfg);
|
||||||
|
if (m_serverCfg.postDeviceInfo || m_serverCfg.postUserBehaviorInfo)
|
||||||
|
{
|
||||||
|
HGBase_CreateMsgPump(&m_msgPump);
|
||||||
|
HGBase_OpenThread(ThreadFunc, this, &m_thread);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HGVersionMgrImpl::~HGVersionMgrImpl()
|
HGVersionMgrImpl::~HGVersionMgrImpl()
|
||||||
{
|
{
|
||||||
|
HGBase_ExitMsgPump(m_msgPump);
|
||||||
|
HGBase_CloseThread(m_thread);
|
||||||
|
m_thread = NULL;
|
||||||
|
HGBase_DestroyMsgPump(m_msgPump);
|
||||||
|
m_msgPump = NULL;
|
||||||
|
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,6 +1039,203 @@ HGResult HGVersionMgrImpl::PostUserFeedback(const HGChar* appName, const HGChar*
|
||||||
return ::PostUserFeedback(appName, desc, feedback, contact);
|
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)
|
HGResult HGVersionMgrImpl::GetVersionList(const HGChar* appName, HGVersionInfo** info, HGUInt* count)
|
||||||
{
|
{
|
||||||
if (NULL == info || NULL == count)
|
if (NULL == info || NULL == count)
|
||||||
|
@ -939,3 +1329,93 @@ HGResult HGVersionMgrImpl::GetCurrVersion(const HGChar* appName, HGChar* version
|
||||||
strcpy(version, ver.c_str());
|
strcpy(version, ver.c_str());
|
||||||
return HGBASE_ERR_OK;
|
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__
|
#define __HGVERSIONIMPL_HPP__
|
||||||
|
|
||||||
#include "HGVersion.h"
|
#include "HGVersion.h"
|
||||||
|
#include "../base/HGMsgPump.h"
|
||||||
#include "../base/HGThread.h"
|
#include "../base/HGThread.h"
|
||||||
|
|
||||||
class HGVersionMgrImpl
|
class HGVersionMgrImpl
|
||||||
|
@ -15,13 +16,39 @@ public:
|
||||||
HGResult PostUninstallInfo(const HGChar* appName, const HGChar* desc);
|
HGResult PostUninstallInfo(const HGChar* appName, const HGChar* desc);
|
||||||
HGResult PostCrashInfo(const HGChar* appName, const HGChar* desc, const HGChar* crashFilePath, const HGChar* exceptionAddr);
|
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 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 GetVersionList(const HGChar* appName, HGVersionInfo** info, HGUInt* count);
|
||||||
HGResult HttpDownload(const HGChar* url, const HGChar* saveFilePath, HGHttpDownloadFunc func, HGPointer param);
|
HGResult HttpDownload(const HGChar* url, const HGChar* saveFilePath, HGHttpDownloadFunc func, HGPointer param);
|
||||||
static HGResult ReleaseVersionList(HGVersionInfo *info, HGUInt count);
|
static HGResult ReleaseVersionList(HGVersionInfo *info, HGUInt count);
|
||||||
static HGResult GetCurrVersion(const HGChar* appName, HGChar* version, HGUInt maxLen);
|
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:
|
private:
|
||||||
HGServerConfig m_serverCfg;
|
HGServerConfig m_serverCfg;
|
||||||
|
HGMsgPump m_msgPump;
|
||||||
HGThread m_thread;
|
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