草庐IT

Protobuf3

全部标签

c++ - CMake:当 *.proto 文件更改时有条件地生成 protobuf `*pb.{h|cpp}` 文件

我参与的项目使用protobufs在基于Python的客户端和基于C++的服务器之间进行通信。我们也在使用CMake。使用CMake,我正在寻找一种有条件地调用protoc的方法仅在*.proto时编程文件改变。我当前的目录结构(这似乎是问题的一部分)有一个目录用于*.proto文件,以及生成的*.pb.{h|cc}的单独目录和*_pb2.py文件:build/Messages/proto/(根)CMakeLists.txt文件(下方)运行protocbuild/cmake..时的程序命令被执行:project(AAA)MESSAGE("ProtobufautogenerationST

python - 如何从 python 中重复的 protobuf 字段中删除一个项目?

我有一个包含重复字段的protobuf消息。我想删除列表中的一项,但如果不将重复字段中的所有项目复制到列表中、清除重复字段并重新填充它,我似乎无法找到这样做的好方法。在C++中有一个RemoveLast()函数,但这似乎没有出现在pythonAPI中... 最佳答案 如documentation中所述,在Protobuf中包装重复字段的对象的行为类似于常规Python序列。因此,你应该能够简单地做delfoo.fields[index]例如,删除最后一个元素,delfoo.fields[-1]

python - 保留关键字在 Python 的 protobuf 中使用

一般来说,我有一个使用Python关键字“from”的protobuf定义。它适用于Java/C#/C++,但当涉及到Python时,我无法为其赋值。这是我的问题的详细信息。我有一个如下的protobuf定义:messageFoo{requiredint64from=10...}由于“from”字段是Python中的关键字,所以我生成python代码后,无法编译如下代码:foo=Foo()foo.from=1234然后,我尝试使用setattr()来设置属性:setattr(foo,'from',1234)这给了我一个Protobuf异常:AttributeError:Assignme

从流中读取多个 protobuf 消息的 python 示例

我正在处理来自spinn3r的数据,它由序列化为字节流的多个不同的protobuf消息组成:http://code.google.com/p/spinn3r-client/wiki/Protostream“原型(prototype)流是ProtocolBuffer消息流,根据GoogleProtocolBuffer规范在网络上编码为带有长度前缀的varint。流包含三个部分:header、有效负载和尾部标记。”这似乎是protobufs的一个非常标准的用例。事实上,protobuf核心发行版为C++和Java提供了CodedInputStream。但是,protobuf似乎没有为pyt

python - 导入caffe导致ImportError : "No module named google.protobuf.internal" (import enum_type_wrapper)

我在我的机器上安装了AnacondaPython。当我启动Python解释器并在Pythonshell中键入“importcaffe”时,出现以下错误:ImportError:Nomodulenamedgoogle.protobuf.internal我有以下文件:wire_format_lite_inl.hwire_format_lite.hwire_format.hunknown_field_set.htext_format.hservice.hrepeated_field.hreflection_ops.hmessage_lite.hmessage.hgenerated_messa

c# - RedisSessionStateProvider 与 ProtoBuf 序列化导致错误

我正在尝试使用RedisSessionStateProvider进行protobuf序列化。我已将redisSerializerType指定为实现Microsoft.Web.Redis.ISerializer的自定义类-这是反序列化代码:publicobjectDeserialize(byte[]data){returnDeserializeDirect(data);}privateobjectDeserializeDirect(byte[]data){using(varmemoryStream=newMemoryStream(data)){returnSerializer.Deser

.net - Windows 上的 Redis 用于 session 状态性能和 protobuf

我目前通过stackexchange.redis(1.0.4)和WindowsRedisSessionStateProvider(1.6.2)提供商成功使用Redis(2.8.19-MSOpenTech)的Windows端口来存储本地session。将此配置与session的InProcsession状态进行比较,我们注意到在高负载下性能下降了大约20%。为了减少性能差距,我想知道使用protobuf-net序列化session是否可以提供帮助-模型具有必要的proto属性,但不完全确定如何配置sessionStateProvider以使用它进行序列化。有人用过吗?性能提高了吗?此外,

redis - 我应该如何将 Booksleeve 与 protobuf-net 一起使用?

我使用RedisConnectionSet方法设置字节数组,但如何获取数据?get返回一个包装的字节数组?链接:http://code.google.com/p/booksleeve/http://code.google.com/p/protobuf-net/这行得通,但感觉不对:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingBookSleeve;usingProtoBuf;usingSystem.IO;namespaceRedisTest001{[ProtoCont

c# - protobuf-net 没有反序列化 DateTime.Kind 正确

使用protobuf-net.dll版本1.0.0.280当我反序列化DateTime(包装在一个对象中)时,日期/时间没问题,但DateTime.Kind属性为“未指定”考虑这个测试用例来序列化/反序列化DateTime。[TestMethod]publicvoidTestDateTimeSerialization(){varobj=newDateTimeWrapper{Date=DateTime.UtcNow};obj.Date=DateTime.SpecifyKind(obj.Date,DateTimeKind.Utc);varserialized=obj.SerializePr

c# - ProtoInclude 属性是什么意思(在 protobuf-net 中)

在ProtoBuf-Net实现,ProtoInclude属性是什么意思,它有什么作用?一个例子将不胜感激。我看到了inthispost而且我不确定它的作用。例子是:[Serializable,ProtoContract,ProtoInclude(50,typeof(BeginRequest))]abstractinternalclassBaseMessage{[ProtoMember(1)]abstractpublicUInt16messageType{get;}}[Serializable,ProtoContract]internalclassBeginRequest:BaseMes