sdc
来源:互联网 发布:洛奇英雄传优化设置 编辑:程序博客网 时间:2024/05/16 12:27
#ifndef __ServerClietMessage__XXBasePackageDataUtil__
#define __ServerClietMessage__XXBasePackageDataUtil__
#include <iostream>
#include "XXPBBase.pb.h"
class XXBasePackageDataUtil
{
public:
XXBasePackageDataUtil* sharedUtil();
public:
XXPBBase::RequestBase* PackageRequestBase();
XXPBBase::UserInfo* PackageUserInfo();
/*
*
*reserve:保留字段,无用时填""
*
*/
XXPBBase::RequestUpdate* PackageRequestUpdate(XXPBBase::RequestBase* requestBase,
XXPBBase::UserInfo* userInfo,
XXPBBase::RequestType requestType,
const std::string& reserve);
private:
};
#endif /* defined(__ServerClietMessage__XXBasePackageDataUtil__) */
//
// XXBasePackageDataUtil.cpp
// ServerClietMessage
//
#include "XXBasePackageDataUtil.h"
XXPBBase::RequestUpdate* XXBasePackageDataUtil::PackageRequestUpdate(XXPBBase::RequestBase *requestBase,XXPBBase::UserInfo *userInfo,XXPBBase::RequestType requestType,const std::string& reserve)
{
XXPBBase::RequestUpdate* requestUpdate =newXXPBBase::RequestUpdate();
requestUpdate->set_allocated_requestbase(requestBase);
requestUpdate->set_allocated_userinfo(userInfo);
requestUpdate->set_request_type(requestType);
requestUpdate->set_reserve(reserve);
return requestUpdate;
}
option optimize_for=LITE_RUNTIME;
package XXPBBase;
enum PlatformType
{
PT_None = 0;
PT_iOS = 101;
PT_Android = 102;
}
enum SubPlatform
{
SPT_None = 0;
SPT_iPhone = 1001;
SPT_iPad = 1002;
SPT_iPod = 1003;
SPT_Android_General = 1004;
SPT_Android_Pad = 1005;
SPT_Android_HD = 1006;
}
enum ProductID
{
PI_None = 0;
PI_MT = 101; //MT
PI_LDT = 102; //乱斗堂
}
message UserInfo
{
required string uuid = 1; //通用唯一识别码,这是一个软件建构的标准
required ProductID product = 2 [ default = PI_None ]; //产品编号
required string version = 3 [ default = "0.0" ]; //软件版本号
optional string buildno = 4 [ default = "0" ]; //序列号
optional int32 channelID = 5; //渠道
optional PlatformType platformtype = 6 [ default = PT_None ]; //平台类型
optional SubPlatform subplatform = 7 [ default = SPT_None ]; //子平台
optional string sys_version = 8; //系统版本号
optional string imei = 9; //国际移动装备辨识码
optional string mac_address = 10; //mac 地址
optional string imsi = 11; //国际移动用户识别码
optional bool isroot = 12; //是否
}
message RequestBase
{
required int32 request_id = 1; //客户端请求ID
required int32 server_id = 2; //服务器ID
required string request_function = 3; // 请求方式
}
enum RequestType
{
RT_None = 0;
RT_User = 1; //用户请求更新
RT_Auto = 2; //自动请求更新
RT_Tips = 3;
}
message RequestUpdate
{
required RequestBase requestbase = 1;
required UserInfo userinfo = 2;
required RequestType request_type = 3;
optional string reserve = 4;
}
enum UpdateControl
{
UPCTL_None = 0;
UPCTL_SlientUpdate = 101; //静默更新
UPCTL_UserOpt = 102; //用户选择更新
UPCTL_UserForce = 103; //用户强制更新
}
enum FileType
{
FT_None = 0;
FT_IPA = 101;
FT_DEB = 102;
FT_APK = 103;
FT_ZIP = 104;
FT_PNG = 105;
FT_JPG = 106;
}
message UpdateInfo
{
required UpdateControl update_control = 1 [ default = UPCTL_None ];
optional string package_address = 2;
optional string package_md5 = 3;
optional FileType package_type = 4;
}
enum TipsControl
{
TIPSCTRL_None = 0;
TIPSCTRL_Text = 1;
TIPSCTRL_Image = 2;
}
message TipsInfo
{
required TipsControl tips_control = 1 [ default = TIPSCTRL_None];
optional string title = 2;
optional string detail = 3;
optional string image_addr = 4;
optional string image_md5 = 5;
optional FileType image_type = 6;
}
enum ResponseResultType
{
RRT_None = 0;
RRT_Update = 101; //有更新没提示
RRT_Tips = 102; //有提示没更新
BRT_UpdateTips = 103; //更新并且提示tips, 如果是静默更新,则更新后弹tips, 如果是用户更新则更新前弹tips
}
message TimeControl
{
required string start_time = 1; //"0"表示永久有效,"1"表示即时开始有效,其他表示有效的起始时间(unix s)
optional string end_time = 2; // (unix s)
optional string last_time = 3; //持续时间(s)
}
message ResponseUpdate
{
required ResponseResultType check_result = 1;
repeated UpdateInfo updateinfo = 2;
repeated TipsInfo tipsinfo = 3;
optional TimeControl time_control = 4;
}
程序设计文档
1.设计目的
2.程序结构图
3.针对结构图,对程序设计的各个细节进行说明,包括接口设计说明,和必要的实现逻辑说明
4.程序使用说明,比如有一些需要注意的地方
5.附录 ,比如协议的结构阐述等
这个更新模块,需要给外界调用,并且模块内部执行完逻辑之后,要返回结果给外部。
一、设计目的: 通过客户端(client)和服务器(server)之间的交互协议来实现软件的更新。
二、程序结构图
三、程序结构接口设计以及实现逻辑
数据打包
发送
数据返回
解析
1.客户端通过post方法传递软件消息给服务器
ClientPost(const std::string& aUrl,conststd::string& aPostData,std::string &aResponseData)
通过返回check_result字段的数据来匹配相应的更新
若:check_result = 0 ; //不作处理
check_result = 101 ; //有更新但没提示
check_result = 102 ; //有提示但没更新
check_result = 103 ; //更新并且提示tips,如果是静默更新,则更新后弹tips, 如果是用户更新则更新前弹tips
- sdc
- 折腾之SDC文件
- FPGA SDC file
- Win32 SDC 编程
- SDC沙盒防泄密
- 沙盒防泄密(SDC)
- SDC沙盒技术
- 源代码防泄密-SDC
- How to Use MMC/SDC
- How to Use MMC/SDC
- .lef .tlf .sdc & .conf introduction
- SDC时序约束(1)- create_clock
- SDC中添加一个对话框到主视图
- 由QSF生成SDC约束文件
- 关于SDC沙盒源代码加密
- Secure Delivery Center (SDC)功能概述
- 【转】[技巧] 解读微软MSDNAA神秘的*.sdc文件+sdc解压工具(使用说明)
- SDC 座子定义 保存于此以备查阅
- 矩阵键盘
- 集成测试-意义和方法
- UVA 11021 Tribbles 概率问题+递推
- POJ-1730-Perfect Pth Powers
- HDU-1800 - Flying to the Mars
- sdc
- hdu 4648 Magic Pen 6
- linux系统管理员基础
- 字符串压缩
- Java 操作XML文件
- python核心编程第九章习题答案(3)
- 并行和并发、同步和异步的区别
- spring aop
- ARM-Linux开机自启动设置ARM9开发板