erlang protobuffer

本文介绍如何使用Erlang的ProtoBuf工具生成.erl和.beam文件,并通过实例演示了如何对自定义的消息结构进行编码和解码。

% how to use
% 方法1
% 生成相应的erl和hrl文件
%protobuffs_compile:scan_file_src("X.proto").


%方法2
% 生成相应的beam和hrl文件
%protobuffs_compile:scan_file("X.proto").


%方法2即可满足需求;
%调用X_pb:encode_tagName 来生成相应tagName的protobuff数据;decode_tagName来从protobuff数据解码出tagName的record;


1、待测试协议 ;test.proto

message Person {
  required int32 age = 1;
  required string name = 2;
}

message Family {
  repeated Person person = 1;
}

2、调用protobuffs_compile:scan_file("test.proto"). ,生成.beam和hrl


3、测试代码(调用刚生成的test_pb模块来生成proto或解为record):

-module(t).

-compile([export_all]).


-include("test_pb.hrl").


encode() ->
  Person = #person{age=25, name="John"},
  test_pb:encode_person(Person).


decode() ->
  Data = encode(),
  test_pb:decode_person(Data).


encode_repeat() ->
  RepeatData =
  [
    #person{age=25, name="John"},
    #person{age=23, name="Lucy"},
    #person{age=2, name="Tony"}
  ],
  Family = #family{person=RepeatData},
  test_pb:encode_family(Family).
  
decode_repeat() ->
  Data = encode_repeat(),
  test_pb:decode_family(Data).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值