StupidBeauty
Read times:2459Posted at: - no title specified

Beefcake文档翻译:Beefcake介绍,Beefcake

这是一个纯由Ruby实现Google Protocol Buffers库。它只提供与Buf相关的功能;ProtoBuf

安装

gem install beefcake

使用

require 'beefcake'

class Variety

include Beefcake :: Message

# Required

required :x , :int32 , 1

required :y , :int32 , 2

# Optional

optional :tag , :string , 3

# Repeated

repeated :ary ,   :fixed64 , 4

repeated :pary , :fixed64 , 5 , :packed => true

# Enums - 直接使用模块 Module )就好了 (注意 :默认值是可选的 )

module Foonum

A = 1

B = 2

end

# 目前 ,默认 值只会在对消息解析的末期进行设置,

# 而不会在对象创建时就设置。

optional :foo , Foonum , 6 , :default => Foonum :: B

end

# 可使用散列表风格来创建新消息:

x = Variety.new(:x => 1, :y => 2)

# 可使用访问方法来单独设置各个字段:

x = Variety.new

x.x = 1

x.y = 2

# 妳也可以使用散列表(Hash)语法来访问字段:

x[:x] # => 1

x[:y] = 4

x # => <Variety x: 1, y: 4>

编码

可使用一个能够对 << 进行响应的对象来接收编码结果

# 参考上面的代码示例以了解Variety的定义

x = Variety.new(:x => 1, :y => 2)

# 例如,妳可以将消息编码到一个字符串(String)中:

s = ""

x.encode(s)

s # => "\b\x01\x10\x02)\0"

# 如果妳不将消息编码到任何对象中,那么,会返回一个新建的Beefcake::Buffer

x.encode # => #<Beefcake::Buffer:0x007fbfe1867ab0 @buf="\b\x01\x10\x02)\0">

# 该缓冲对象也可转换为一个字符串(String):

x.encode.to_s # => "\b\x01\x10\x02)\0"

解码

# 参考上面的代码示例以了解Variety的定义

x = Variety.new(:x => 1, :y => 2)

# 可以从一个Beefcake::Buffer中解码数据

encoded = x.encode

Variety.decode(encoded) # => <Variety x: 1, y: 2, pary: [], foo: B(2)>

# 也可以以同样的方法来从字符串(String)中解码数据:

Variety.decode(encoded.to_s) # => <Variety x: 1, y: 2, pary: [], foo: B(2)>

# 妳还可以使用新数据来更新一个Beefcake::Message 实例:

new_data = Variety.new(x: 12345, y: 2).encode

Variety.decoded(new_data, x)

x # => <Variety x: 12345, y: 2, pary: [], foo: B(2)>

利用.proto文件来生成代码

protoc --beefcake_out 输出/路径 -I 指向/proto/文件/包含目录/的路径 指向/proto/文件/的路径.proto

可以设置 BEEFCAKE_NAMESPACE 变量,以便将这些类生成在特定的命名空间下。 (例如 App::Foo::Bar)

关于

Ruby中应当有第一等的ProtoBuf支持。对于我来说,其它的那些库,并不那么"Ruby",并且难用。

这个库在开发过程中一直遵循了EventMachine的原则。并不是简单地使用了阻塞式输入输出。

源代码: https://github.com/protobuf-ruby/beefcake

支持的特性

  • •.可选Optional)字段

  • •. 必选(Required)字段

  • •.重复Repeated)字段

  • •.紧缩重复Packed Repeated)字段

  • •. 变长整数Varint)字段

  • •.32位字段

  • •.64位字段

  • •.长度定界Length-delimited)字段

  • •.嵌套消息

  • •.未知字段会被忽略(目前是这样的)

  • •.枚举Enums

  • •. 默认 (例如 optional :foo, :string, :default => "bar" )

  • •.使用变长整数编码的长度定界消息流(Varint-encoded length-delimited message streams

未来将要实现的特性

  • •.导入Imports

  • •.在代码生成中使用包

  • •. 组(Groups(在访问旧版本的protos 的过程中会有用)

进一步阅读

http://code.google.com/apis/protocolbuffers/docs/encoding.html

测试

rake test

目前 ,Beefcake 已经在以下版本的Ruby中通过测试:

  • •.Ruby 1.9.3

  • •.Ruby 2.0.0

  • •.Ruby 2.1.0

  • •.Ruby 2.1.1

  • •.Ruby 2.1.2

  • •.JRuby ,运行于1.9模式

素人加奈

素人加奈

素人加奈

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4