跳至内容

CallData

template<class ServiceType, typename RequestType, typename ResponseType>
class CallData

一个管理通用 RPC 调用状态的类。

DoWork() 可以在子线程中使用,以自动推进调用的状态。

模板参数

  • class ServiceType
  • typename RequestType
  • typename ResponseType

由以下类继承: ExchangeCallData<ServiceType, RequestType, ResponseType>

公共接口

构造函数

CallData

inline CallData(ServiceType *Service, ServerCompletionQueue *CQueue, AsyncAPIHandler TargetRPC, bool bReusable=false, bool bAutoCreate=true)

创建新的 CallData 对象。

参数

  • Service (ServiceType *) – [输入] 此 CallData 所关联的 AsyncService
  • CQueue (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 &#42;

属性: 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 CallDataStatus

RPC 的当前状态。

属性: 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 列)

© . This site is unofficial and not affiliated with AMD.