栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

gRPC C++ 异步双向流例子 -支持多线程与连续发送消息

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gRPC C++ 异步双向流例子 -支持多线程与连续发送消息

grpc_async_bidirectional_stream_example

github 地址:https://github.com/fananchong/grpc_async_bidirectional_stream_example

例子基于线上稳定、高效跑了 1 年以上的 gRPC C++ 库网络框架

最开始作为测试,实验性放到 github 抓虫

使用的是异步双向流

简化编码,在异步双向流基础上,引入 echo 型编码设计模式

类似如下:

  1. 实现对应类方法:
    bool Msg_TestService_Stream::OnProcess()
    {
        INFO("Msg_TestService_Stream::OnProcess");
        switch (request_.Msg_case())
        {
        case test::Frame::kEcho:
        {
            auto v = reply_.mutable_echo();
            v->set_data(request_.echo().data());
            // CloseStream();
        }
        break;
        case test::Frame::kPing:
            break;
        default:
            break;
        }
        return true;
    }
    
  2. 注册服务
    gserver.RegisterMsg(new Msg_TestService_Stream(service));
    
连续发送消息

最近更新,上了流消息处理里,可以连续发送 N 个消息

类似如下用法:

bool Msg_TestService_Stream2::OnProcess()
{
    INFO("Msg_TestService_Stream2::OnProcess");
    switch (request_.Msg_case())
    {
    case test::Frame::kEcho:
    {
        test::Frame rep1;
        auto v1 = rep1.mutable_echo();
        v1->set_data(fmt::format("{} #1", request_.echo().data()));
        SendMsg(rep1, false);

        test::Frame rep2;
        auto v2 = rep2.mutable_echo();
        v2->set_data(fmt::format("{} #2", request_.echo().data()));
        SendMsg(rep2, false);

        test::Frame rep3;
        auto v3 = rep3.mutable_echo();
        v3->set_data(fmt::format("{} #3", request_.echo().data()));
        SendMsg(rep3, true);
        return false;
    }
    break;
    case test::Frame::kPing:
        break;
    default:
        break;
    }
    return true;
}
例子支持的功能

目前支持以下功能:

  • 异步一元函数处理
  • 异步双向流处理
  • 支持多线程
  • 支持同个流处理内,发送 N 次消息
  • 流定时回调处理
其他

基本上,以上功能,绝大多数需求都能满足了。欢迎 star ,讨论

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号