• Grpc 的Proto语法记录


    需要安装Clangprotobuf

    syntax ="proto3"; //protobuf的版本
    //C#命名空间option csharp_namespace ="namespace"; 其他语言命名空间package package.name;
    /*
    定义服务
    grpc的四种服务类型
    */
    service DemoGrpc {
    
            //一个请求消息对应一个返回消息结果,标准版
    	rpc GetDemo1(demoNomsg) returns (demomsg);
            //一个请求消息,服务端可以传回多个消息结果,简称服务流
    	rpc GetDemo2(demoNomsg) returns (stream demomsg);
            //反之也可以接收多个消息返回一个消息结果,简称客户流
    	rpc GetDemo3(stream demoNomsg) returns (demomsg);
           //上面既然可以对调当然也可以传入多个消息,返回多个消息结果,简称双向流
            rpc GetDemo4(stream demoNomsg) returns (stream  demomsg);
    }
    
    /*
    不想写在一个文件里可以使用import "文件路径";引用消息文件
    定义消息
    */
    message demoNomsg{    
        int32 no=1; 
    }
    message demomsg{    
        int32 no=1;    //默认值 0
        string name=2; //默认值空字符串
        bytes image=3; //默认值空byte数组 
        //bool flag=4;   //默认值 false
        //float num=5;   //默认值 0
        double sum=6;  //默认值 0
        EnumName enumName=7; //枚举默认值是0 tag必须从0开始
        /*repeated用于标明这个字段有多少个,这样发送方发送的时候,
        同时发送了count计数变量和这个字段的起始地址,接收方在接受到数据之后,
        按照count来解析对应的数据即可。*/
        repeated int32 no1=8;
        /*required就是必须的意思proto3不支持,数据发送方和接收方都必须处理这个字段,不然还怎么通讯呢*/
        //required string no2=9;
    
        reserved "flag","num";//保留字段
        reserved 10 , 12 ,100 to max; //保留字段
        
    }
    enum EnumName {
        option  allow_alias=true;//加上这句可以取别名
        A_1=0;
        A_2=1;        
        B_1=0;//别名1
        B_2=1;//别名2    
        //B_3=2;//枚举里保留字段
        reserved "B_3";
    };
    
    
    
  • 相关阅读:
    看门狗定时器
    fork 和 exec
    openwrt procd分析
    减肥经验总结
    gcc
    laravel5验证码
    laravel5通过auth.attempt事件加入登陆验证码
    双向链表
    mysql5.6源码安装
    laravel4通过控制视图模板路劲来动态切换主题
  • 原文地址:https://www.cnblogs.com/SuperDust/p/12692317.html
Copyright © 2020-2023  润新知