模拟生产环境使用thrift c++版

本文通过thrift在C++中构建了一个模拟生产环境的C/S模型,服务端实现两个接口,采用ThreadPoolServer,客户端利用TMultiplexedProtocol处理多服务。详细介绍了thrift文件的编写、代码生成及服务端、客户端的实现细节。
摘要由CSDN通过智能技术生成

模拟生产环境使用thrift c++版

1. 简介

本文简单的模拟了实际生成环境场景中使用的C/S模型,使用thrift作为框架来进行开发,服务端实现了两个接口,使用ThreadPoolServer模型提供服务,由于只是学习thrift相关的使用,本文的代码不是很严谨,代码设计基本没有,请阅读本文之前最好有基本的thrift相关的知识。如
* thrift文件中的基本数据类型
* thrift文件中的简单的结构体定义
* 如何用thrift文件生成代码

2. thrift文件

在生成环境中,每次调用rpc都必须要有返回值,以标识rpc在业务层面的成功与否。
本次实验定义了一个通用返回结构体,由于thrift文件支持包含语法,所以将该结构体
定义在comm.thrift文件中,用于被其他thrift文件包含
comm.thrift:

struct ReturnMessage
{
    1: i32 ret_code;
    2: string ret_msg
}

业务接口和接口定义test.thrift文件:

include "comm.thrift"
namespace cpp xbshop.manage.login

struct ReqLoginService
{
    1: string strUserName;
    2: string strPassword;
}

//req+服务名定义的结构体代表该服务的请求参数,res+服务名定义的结构体代表该服务的返回参数
struct ResLoginService
{
    1: comm.ReturnMessage stReturnMessage, //注意使用包含文件中定义的结构体时,需要加上文件名前缀,例如使用comm.thrfit文件中的结构体,需要加上comm.
    2: bool logged
}

struct ReqQryOrderService
{
    1: string order_no;
}

struct ResQryOrderService
{
    1: comm.ReturnMessage stReturnMessage,
    2: i64 total_fee;
}


//定义了两个服务,一个是LoginService登录服务,一个是QyrOrderService查询订单服务
service LoginService
{
    comm.ReturnMessage login(1: ReqLoginService reqParams);
}


service QryOrderService
{
    ResQryOrderService qryOrder(1: ReqQryOrderService reqParams);
}

使用命令thrift -r –gen cpp test.thrift , -r参数的含义是编译test.thrift文件的同时还会编译其包含文件comm.thrift

服务端代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值