CallData
template<class ServiceType, typename RequestType, typename ResponseType>class CallData一个管理通用 RPC 调用状态的类。
DoWork() 可以在子线程中使用,以自动推进调用的状态。
模板参数
class ServiceTypetypename RequestTypetypename ResponseType
由以下类继承: ExchangeCallData<ServiceType, RequestType, ResponseType>
公共接口
构造函数
CallData
inline CallData(ServiceType *Service, ServerCompletionQueue *CQueue, AsyncAPIHandler TargetRPC, bool bReusable=false, bool bAutoCreate=true)创建新的 CallData 对象。
参数
Service(ServiceType *) – [输入] 此 CallData 所关联的 AsyncServiceCQueue(ServerCompletionQueue *) – [输入] 此 CallData 将被跟踪的完成队列TargetRPC(AsyncAPIHandler) – [输入] 此 CallData 将服务的该方法bReusable(bool) – [输入] 该 CallData 在服务完一次 RPC 后是否应被重用bAutoCreate(bool) – [输入] 该 CallData 是否应自动创建,或者稍后通过 Create() 进行
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 85 行, 第 1 列)
公共函数
Create
inline void Create()创建/设置 calldata 实例。
这会将 calldata 注册为 TargetRPC 被调用时返回的标签。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 100 行, 第 6 列)
提交
inline void Submit()向 TargetRPC 的调用者提交响应。
响应处理完成后,这将使我们回到队列中。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 114 行, 第 6 列)
Reset
inline void Reset()重置 RPC 状态对象,以便将来可以被另一个 RPC 重用。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 131 行, 第 6 列)
完成
inline void Finish()RPC 已删除,执行最终清理。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 155 行, 第 6 列)
清理
inline void CleanUp()清理,包括此对象及其拥有的任何其他对象
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 165 行, 第 6 列)
获取请求
inline const RequestType & GetRequest()获取此 RPC 关联的请求。
如果 RPC 未准备就绪,则可能为空
返回:对来自客户端的 RPC 请求消息的引用
返回: const RequestType &
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 181 行, 第 19 列)
获取可变响应
inline ResponseType * GetMutableResponse()获取一个响应消息,可以就地修改。
返回:指向此对象拥有的响应消息的指针
返回: ResponseType *
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 190 行, 第 14 列)
设置响应
inline void SetResponse(ResponseType *NewResponse)设置响应消息。
注意:调用者必须放弃响应消息的所有权
参数
NewResponse(ResponseType *) – [输入] 要与此调用关联的新响应消息。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 201 行, 第 6 列)
是否有响应
inline bool HasResponse()响应消息是否已设置。
返回:如果响应消息已设置,则为 true
返回: bool
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 214 行, 第 13 列)
是否准备就绪
inline bool IsReady()返回 RPC 是否已准备好进行处理。
具体来说,RPC 是否有请求?
返回:如果此 RPC 有请求但尚未提交响应,则为 true
返回: bool
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 223 行, 第 13 列)
执行工作
inline void DoWork()推进 RPC 的状态。
在子进程上调用此函数,以自动设置和完成 gRPC 调用。
属性: inline
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 231 行, 第 6 列)
公共成员
int Id
int Id = = 0此 CallData 实例的唯一 ID。
用于调试,
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 75 行, 第 5 列)
Protected Interface
受保护的成员
ServerContext * SContext
ServerContext * SContext此 CallData 所关联的服务器的上下文。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 39 行, 第 15 列)
ServerAsyncResponseWriter<ResponseType> Responder
ServerAsyncResponseWriter<ResponseType> Responder一个可用于将响应发送给客户端的对象。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 42 行, 第 27 列)
RequestType Request
RequestType Request来自客户端的入站请求消息。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 45 行, 第 13 列)
ResponseType * Response
ResponseType * Response = = nullptr发送给客户端的出站响应消息。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 48 行, 第 14 列)
AsyncAPIHandler TargetRPC
AsyncAPIHandler TargetRPC此 CallData 将服务的请求类型的成员函数指针。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 51 行, 第 17 列)
CallStatus CallDataStatus
CallStatus CallDataStatusRPC 的当前状态。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 62 行, 第 12 列)
ServiceType * Service
ServiceType * Service此 CallData 所关联的服务。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 65 行, 第 13 列)
ServerCompletionQueue * CQueue
ServerCompletionQueue * CQueue此 CallData 所关联的生产者-消费者完成队列。
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 68 行, 第 23 列)
bool bReusable
bool bReusable变量,定义在服务完一个 RPC 后是丢弃此 CallData 还是替换它。
默认是丢弃
属性: protected
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 71 行, 第 6 列)
被使用: ExchangeCallData
源: Schola/Source/Schola/Public/Communicator/CallData.h (第 25 行, 第 1 列)