zoukankan      html  css  js  c++  java
  • 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";
    };
    
    
    
  • 相关阅读:
    应急响应之如何发现隐藏的Webshell后门
    从失败终止到崩溃
    DumpConfigurator Utility工具
    使例外成为例外(而不是异常)
    用于可视化虚拟内存使用情况和GC堆使用情况的工具。
    关于EEMessageException异常
    c#/C++混合编程的一个问题
    关于std::__non_rtti_object异常
    仅通过转储来排除内存泄漏
    调试器不应该改变行为
  • 原文地址:https://www.cnblogs.com/SuperDust/p/12692317.html
Copyright © 2011-2022 走看看