rpc框架 读写事件回调函数 第一步

// 已建立连接用户的读写事件回调

如果远程有一个rpc服务的调用请求,那么OnMessage方法就会响应

 

void RpcProvider::OnMessage(const muduo::net::TcpConnectionPtr &conn, 

                            muduo::net::Buffer *buffer, 

                            muduo::Timestamp)

{

    // 网络上接收的远程rpc调用请求的字符流 Login args

    std::string recv_buf = buffer->retrieveAllAsString();

 

    // 从字符流中读取前4个字节的内容

    uint32_t header_size = 0;

    recv_buf.copy((char*)&header_size, 4, 0);

 

    // 根据header_size读取数据头的原始字符流,反序列化数据,得到rpc请求的详细信息

    std::string rpc_header_str = recv_buf.substr(4, header_size);

    mprpc::RpcHeader rpcHeader;

    std::string service_name;

    std::string method_name;

    uint32_t args_size;

 

 

    if (rpcHeader.ParseFromString(rpc_header_str))

    {

        // 数据头反序列化成功

        service_name = rpcHeader.service_name();

        method_name = rpcHeader.method_name();

        args_size = rpcHeader.args_size();

    }

    else

    {

        // 数据头反序列化失败

        std::cout << "rpc_header_str:" << rpc_header_str << " parse error!" << std::endl;

        return;

    }

 

    // 获取rpc方法参数的字符流数据

    std::string args_str = recv_buf.substr(4 + header_size, args_size);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值