- gPRC 介绍
- gPRC 介绍 - 资料收集整理
- gPRC 介绍 - Protocol Buffer 3
- gPRC文档
- gPRC文档 - gRPC官方文档(中文版)
- gPRC文档 - gRPC动机和设计原则
- gPRC文档 - 源码导航
- 基础 - NameResolver
- NameResolver - URI术语
- NameResolver - 类NameResolver
- NameResolver - 类DnsNameResolver
- NameResolver - 类DirectAddressNameResolver
- NameResolver - NameResolver的用法
- 基础 - Metadata
- Channel层
- Channel设计与代码实现 - 类Channel
- Channel设计与代码实现 - 类ManagedChannel
- 类ManagedChannelImpl - 空闲模式
- 类ManagedChannelImpl - InUseStateAggregator
- 类ManagedChannelImpl - Name Resolver
- 类ManagedChannelImpl - Load Balancer
- 类ManagedChannelImpl - Transport
- 类ManagedChannelImpl - Executor
- 类ManagedChannelImpl - 关闭
- Channel层 - Channel Builder设计与代码实现
- Channel Builder设计与代码实现 - 类ManagedChannelBuilder
- Channel Builder设计与代码实现 - 类AbstractManagedChannelImplBuilder
- Channel Builder设计与代码实现 - 类NettyChannelBuilder
- Channel层 - Channel Provider设计与代码实现
- Channel Provider设计与代码实现 - 类ManagedChannelProvider
- Channel Provider设计与代码实现 - 类NettyChannelProvider
- Channel层 - 类CallOptions
- Stub层 - 类DemoServiceBlockingStub
- Stub层 - 类AbstractStub
- 客户端流程
- 状态 - 类Status
- 状态 - 状态码详细定义
- 状态 - 类StatusException
- 状态 - 异常处理的流程分析
- 实践 - 集成Spring Boot
- 实践 - 文档生成
- 文档生成 - 支持proto3
- 文档生成 - build插件
- 文档生成 - 使用模板定制输出
- 实践 - 代理
- 实践 - 超时
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Stub层 - 类AbstractStub
类AbstractStub是stub实现的通用基类。
类AbstractStub也是生成代码中的stub类的通用基类。这个类容许重定义,例如,添加拦截器到stub。
类定义
package io.grpc.stub;
public abstract class AbstractStub<S extends AbstractStub<S>> {
}
属性和构造函数
类AbstractStub有两个属性:
- Channel channel
- CallOptions callOptions
private final Channel channel;
private final CallOptions callOptions;
protected AbstractStub(Channel channel) {
this(channel, CallOptions.DEFAULT);
}
protected AbstractStub(Channel channel, CallOptions callOptions) {
this.channel = channel;
this.callOptions = callOptions;
}
注: 类CallOptions 的内容见 这里
方法
build()抽象方法
定义了抽象方法build()方法来返回一个新的stub,使用给定的Channel和提供的方法配置。
protected abstract S build(Channel channel, CallOptions callOptions);
- channel: 返回的新的stub将使用这个Channel来做通讯。
- callOptions: 运行时调用选项,将被应用于这个stub的每次调用。(也就是说这个不可变的callOptions实例之后将在每次调用中重用)
with方法族
定义有多个with×××()方法,通过创建新的 CallOptions 实例,然后调用上面的build()方法来返回一个新的stub:
public final S withDeadlineNanoTime(@Nullable Long deadlineNanoTime) {
return build(channel, callOptions.withDeadlineNanoTime(deadlineNanoTime));
}
public final S withDeadlineAfter(long duration, TimeUnit unit) {
return build(channel, callOptions.withDeadlineAfter(duration, unit));
}
@ExperimentalApi
public final S withCompression(String compressorName) {
return build(channel, callOptions.withCompression(compressorName));
}
也可以替换使用新的Channel,或者在原有的Channel上添加拦截器:
public final S withChannel(Channel newChannel) {
return build(newChannel, callOptions);
}
public final S withInterceptors(ClientInterceptor... interceptors) {
return build(ClientInterceptors.intercept(channel, interceptors), callOptions);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论