protobuf用Extensions定义消息方法

Protobuf 介绍与实战41:ServiceOptions 消息 选项介绍 1  go grpc-go 相关技术专栏 总入口 2  Protobuf介绍与实战 图文专栏 文章目录 1、服务级别选项,默认支持哪些服务选项? 打开description.proto文件,找到ServiceOptions即可 已经上传到百度网盘 链接: https://pan.baidu.com/s/1RNDYSmX38xFc_O7iDeGdcw 提取码: t3w6 2、Protobuf deprecated 弃用服务? ServiceOptions类型的选项,只能在service区域使用。 达到效果 阅读详情

protobuf Extensions这个东西还真蛮有用的, 这里记录一下用Extensions定义方法。

msg.proto

package ProtoCS;

enum CmdID
{
	CID_MOD = 1,
}

message MsgHead
{
    optional int32 cid = 1;
}

message Msg
{
    optional MsgHead head = 1;
    optional int32 ret = 2;
    extensions 100 to 10000; 
}

这是主文件,注意看最后一行, 留了100~10000的tag number给其他模块用。注意, 19000 though 19999是protobuf预留的。


接下来,各个模块(角色 任务等) 定义各自的文件。

mod.proto

import "msg.proto";

package ProtoCS;

message ModReq
{
	optional bool b = 1;
}

extend Msg
{
  optional int32 id = 126;
  optional ModReq mod_req = 127;
}

在这个文件里, 该模块把int32 id和ModReq mod_req嵌到主文件的Msg里,这个很关键。

我个人用过几种消息定义方法,这种方法最好,他有下面的好处:

1. 各个模块定义分离, 主文件不会太大, 导致找一个东西很困难的情况出现。

2. 编译上的分离的, 各种模块新增东西不会影响其他模块,而且用法上不会增加复杂度

    http://blog.youkuaiyun.com/herm_lib/article/details/7392222   像以前这种方法,就比现在复杂,使用上也存在一些麻烦的地方。


使用方法也比较简单

Msg msg;

msg.SetExtension(ProtoCS::id, 7);   // 设置上面的id值

ProtoCS::ModReq* modReq = msg.MutableExtension(ProtoCS::mod_req);   // 拿到这个modReq, 就可以修改mod_req field的值了。

读取的方法也类似, GetExtension() 之类的。



Matlab之App Designer 一键自动生成带有表格的报告 本文采用案例讲解的方式介绍了采用Matlab中的App Designer开发可视化GUI分析界面后,实现一键自动导出带有表格报告的方法和步骤。可以实现从报告编制等繁琐的工作中解脱出来。 阅读详情

相关推荐

COMSOL仿真避坑指南:列管反应器模拟中多孔介质与化学反应设置的5个常见错误

本文详细解析了COMSOL仿真中列管反应器模拟的5个常见错误,包括多孔介质模型选择、化学反应接口配置、对流扩散方程处理、薄层热阻设置及网格独立性验证。特别针对多孔介质与化学反应设置的误区,提供了实用的判断标准和修正方法,帮助工程师避免计算偏差,提升仿真精度。

weixin_29597551的博客 321

proto文件支持继承吗_protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展message BaseData {required int32 code = 1;e...

weixin_29213655的博客 3444

记一次在JAVA中客户端使用axis调用webservice服务端出现的异常:Unmarshalling Error: For input string: ""

在使axis调用webservice服务端,参照网上给的demo: Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint);//设置服务请求路径 QName qn = new QName(name); call.setOperationName(qn); call.addParamet

kry1201的专栏 8080

protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展 message BaseData { required int32 code =

叉叉哥的BLOG 2万+

数字孪生变电站如何制作?虚拟现实项目强荐广州华锐互动

变电站数字孪生系统可以为提高变电站设备与环境的实时感知能力、在线诊断设备健康状态、促进设备隐藏故障定位和维修效率的提高、实现设备全生命周期提供有力支撑。通过对设备状态的准确评估,可以延长设备的生命周期,实现资产增值。1、3D可视化:建立可视化平台,集中展示所有3D模型信息、数据信息、环境信息和人员信息,包括设备数字模型、建筑外形及内部、周边地形、人员动态、天气、时间等。4、智能监控:采用先进的AI摄像头,通过设备的图像识别,自动智能分析图像,准确分析设备状态、运行动态、外围控制情况。...

gzvrnew的博客 775

吉比特-笔试

1. 题一:打雷后下雨的概率是80%,而打闪电后下雨的概率是70%,那么即打雷又打闪电后下雨的概率是多少?   答:打雷后下雨和打闪电后下雨都是独立事件,P=1-又打雷又闪电但没下雨的概率= 1 - 0.2 *0.3 = 94%        题二:打雷后下雨的概率是80%,但是没打闪电后下雨的概率是20%,那么打雷了但没打闪电后下雨的概率是多少?答:P=0.8 *0.2 / ( 0.8 *0

naturism的专栏 2496

获取protobuf extensions内容的方法

获取protobuf extensions字段内容

wangruizhong88的博客 565

cartographer错误终结者 ordered_multi_queue.cc:155 Queue waiting for data

错误描述 错误提示的感应器数据可能是: Queue waiting for data:(0, points2) Queue waiting for data:(0, odom) 说明在提供给cartographter的传感器数据出现了问题,没有被成功解析。 原因分析 小编是使用自己编写的odom话题发布时,cartographer爆出了该错误。 于是设想传感器数据相关的tf或lua配置或数据本身存在错误。 于是逐个排查,最终发现了错误原因。 排查可能原因:tf错误 小编之前已处理过tf与lua配置的问题 参

人工智能机器人 4157

protobuf基本用法详解

文章目录1、包名package2、option3、消息类型3.1 message3.2 字段规则3.3 标识号3.4 数据类型3.4.1 基本数据类型3.4.2 枚举类型3.4.3 map数据类型3.4.4 message类型3.4.5 嵌套消息类型4、import导入其他proto文件4.1 import4.2 import public5、更新Message消息类型原则6、protobuf扩展...

langzi989的专栏 1万+

大专非科班拿下汇丰外包Java岗:我的TEKSystem面试全流程复盘(含IKM笔试真题)

本文详细记录了一位非科班大专生成功通过TEKSystem面试,拿下汇丰银行Java外包岗位的全过程。从IKM全英文笔试到技术面试,作者分享了7个关键转折点的实战经验,包括简历优化、技术考点、英语面试策略及薪酬谈判技巧,特别适合初级Java开发者参考。

weixin_30074763的博客 393

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

4655

java protobuf extend_protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展message BaseData {required int32 code = 1;e...

weixin_29111953的博客 513

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

Rockyoung 3322

数据交换利器 Protobuf 技术浅析

由于最近公司采用protocol buffer(以下简称protobuf)来作为不同应用之间的数据交换,故最近一段时间研究了protobuf相关技术。在这里分享下。 protobuf是什么? protobuf是google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一pro

陈守璐的专栏 604

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Protobuf语法:Required,Optional,extensions,extend

import "test_common.proto"; message Person { required Header header = 1; required string id = 2; required string name = 3; optional int32 age = 4 [default = 18]; optional string email = 5 [default = "703016035@qq.com"]; repeated int32 a

Have a nice day. 1343

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

protobuf Python API 详解:google.protobuf.symbol_database 符号注册与按名查找消息类型

`google.protobuf.symbol_database` 是 Protocol Buffers Python 运行时中负责管理"已生成符号"的模块:它把编译期生成的 `_pb2` 模块中的消息类、枚举、服务注册到一个符号数据库里,并以其内部持有的 `DescriptorPool` 为底座,提供"只凭符号全名即可反查 Python 类"的能力。本文基于 [symbol_database 模

gitblog_00958的博客 1100

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

protobuf3 自定义option_十一.Protobuf3可选项

Protobuf3 可选项.proto文件中可以声明许多选项。选项不会改变声明的整体含义,但可能会影响在特定上下文中处理声明的方式。可用选项的完整列表在google/protobuf/descriptor.proto中定义有些选项是文件级选项,这意味着它们应该写在顶级范围内,而不是任何消息、枚举或服务定义内。有些选项是消息级选项,这意味着它们应该写在消息定义中。有些选项是字段级选项,这意味着它们应...

weixin_39738755的博客 1327

如何在Burp Suite中集成Blackbox Protobuf:移动渗透测试必备工具

Blackbox Protobuf是一款强大的开源工具,专为处理没有匹配.proto定义文件的编码Protocol Buffers(protobuf)消息而设计。本文将详细介绍如何在Burp Suite中集成这款工具,让你在移动渗透测试中轻松解码和编辑protobuf消息,提升工作效率。 ## 为什么选择Blackbox Protobuf? 在移动应用渗透测试中,protobuf作为一种高效的

gitblog_00140的博客 1042

protobuf3 自定义option_ProtoBuf3语法指南(Protocol Buffers)_下

0.说明ProtoBuf3语法指南,又称为proto3,是谷歌的Protocol Buffers第3个版本。本文基于官方英文版本翻译,加上了自己的理解少量修改,一共分为上下两部分。1.AnyAny类型消息允许在没有.proto定义的情况下,将消息作为嵌入类型使用。Any以bytes的形式包含任意序列化的消息,以及充当该消息类型的全局惟一标识符的URL从而解析为该消息类型。为了使用Any类型,需要使...

weixin_39584571的博客 510

Protobuf Python API 深入解析:google.protobuf.message_factory 动态消息工厂的原理与实战

本文围绕 Protocol Buffers Python 包中的 `google.protobuf.message_factory` 模块展开,完整覆盖该模块的公开 API(`GetMessageClass`、`GetMessages`、`GetMessageClassesForFiles` 等)的用法、参数语义与返回值约定,并结合 [message_factory.py](https://lin

gitblog_00889的博客 232

构建实时消息系统:StackExchange.Redis.Extensions类型安全Pub/Sub发布订阅深度解析

**StackExchange.Redis.Extensions** 是一个增强 StackExchange.Redis 的 .NET 开源库,它的 Pub/Sub 发布订阅能力让构建实时消息系统变得前所未有的简单:订阅和发布消息时不再传递原始字节或 JSON 字符串,而是直接传递强类型 C# 对象。库会自动完成序列化与反序列化,并在订阅处理器抛出异常时记录日志而不中断订阅,帮你快速搭建订单通知、

gitblog_00283的博客 848

Protobuf语言指南

定义一个消息(message)类型 l标量值类型 lOptional 的字段及默认值 l枚举 l使用其他消息类型 l嵌套类型 l更新一个消息类型 l扩展 l包(package) l定义服务(service) l选项(option) l生成访问类 本指南描述了怎样使用protocolbuffer语言来构造你的protocol b...

TheClimb的池塘 188

Protobuf C 中的 proto2 支持:字段存在性、扩展机制与反射 API 完整解析

本文基于 Protocol Buffers 官方仓库中的 `docs/csharp/proto2.md` 文档展开,系统讲解 Google.Protobuf 3.10 引入的实验性 proto2 支持:包括字段存在性(field presence)的 `HasXxx`/`ClearXxx` 生成代码、带扩展范围的 `IExtendableMessage<T>` 接口、扩展(extensions)的

gitblog_00823的博客 297

Understand-Anything 之 Protobuf 语言剖析:让 .proto 与 gRPC 服务定义融入知识图谱

> 本文聚焦 Understand-Anything 开源仓库中面向 LLM 分析器的语言提示片段 [protobuf.md](https://link.gitcode.com/i/9385fc44be3acd654f1222b143ca09aa),讲解该系统如何把 `.proto` 这类"非代码"契约文件当作一等公民进行扫描、构图与总结。读完你将掌握:Protobuf/gRPC 工程在知识图谱中

gitblog_00189的博客 1082

Protobuf Python 运行时反射核心:google.protobuf.descriptor_pool 模块深度解析

`DescriptorPool` 是 Protocol Buffers Python 实现中用于“运行时动态构建消息类型”的核心容器。本文基于 [descriptor_pool.rst](https://link.gitcode.com/i/dfec58655b3eb0a577c3722b6d681f1c) 对应的模块文档及其源码实现 [descriptor_pool.py](https://li

gitblog_01155的博客 456
上一篇: C++运算符优先级,记录一下
下一篇: Linux iptables 设置
herm_lib
博客等级 码龄16年 173粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值