下面列出了怎么用io.grpc.ServerTransportFilter的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public Attributes transportReady(Attributes attributes) {
handshakeTimeoutFuture.cancel(false);
handshakeTimeoutFuture = null;
for (ServerTransportFilter filter : transportFilters) {
attributes = Preconditions.checkNotNull(filter.transportReady(attributes),
"Filter %s returned null", filter);
}
this.attributes = attributes;
return attributes;
}
@Override
public void transportTerminated() {
if (handshakeTimeoutFuture != null) {
handshakeTimeoutFuture.cancel(false);
handshakeTimeoutFuture = null;
}
for (ServerTransportFilter filter : transportFilters) {
filter.transportTerminated(attributes);
}
transportClosed(transport);
}
public Server build() {
InetSocketAddress bindAddress = new InetSocketAddress(this.hostname, this.port);
NettyServerBuilder serverBuilder = NettyServerBuilder.forAddress(bindAddress);
serverBuilder.bossEventLoopGroup(bossEventLoopGroup);
serverBuilder.workerEventLoopGroup(workerEventLoopGroup);
setupInternal(serverBuilder);
for (Object service : this.bindableServices) {
if (service instanceof BindableService) {
logger.info("Add BindableService={}, server={}", service, name);
serverBuilder.addService((BindableService) service);
} else if (service instanceof ServerServiceDefinition) {
final ServerServiceDefinition definition = (ServerServiceDefinition) service;
logger.info("Add ServerServiceDefinition={}, server={}", definition.getServiceDescriptor(), name);
serverBuilder.addService(definition);
}
}
for (ServerTransportFilter transportFilter : this.serverTransportFilters) {
logger.info("Add transportFilter={}, server={}", transportFilter, name);
serverBuilder.addTransportFilter(transportFilter);
}
for (ServerInterceptor serverInterceptor : this.serverInterceptors) {
logger.info("Add intercept={}, server={}", serverInterceptor, name);
serverBuilder.intercept(serverInterceptor);
}
serverBuilder.executor(serverExecutor);
setupServerOption(serverBuilder);
Server server = serverBuilder.build();
return server;
}
private static void addFilter(ServerFactory serverFactory) {
TransportMetadataFactory transportMetadataFactory = new TransportMetadataFactory(ChannelFactoryTest.class.getSimpleName());
final ServerTransportFilter metadataTransportFilter = new MetadataServerTransportFilter(transportMetadataFactory);
serverFactory.addTransportFilter(metadataTransportFilter);
ServerInterceptor transportMetadataServerInterceptor = new TransportMetadataServerInterceptor();
serverFactory.addInterceptor(transportMetadataServerInterceptor);
}
@Override
public Attributes transportReady(Attributes attributes) {
handshakeTimeoutFuture.cancel(false);
handshakeTimeoutFuture = null;
for (ServerTransportFilter filter : transportFilters) {
attributes = Preconditions.checkNotNull(filter.transportReady(attributes),
"Filter %s returned null", filter);
}
this.attributes = attributes;
return attributes;
}
@Override
public void transportTerminated() {
if (handshakeTimeoutFuture != null) {
handshakeTimeoutFuture.cancel(false);
handshakeTimeoutFuture = null;
}
for (ServerTransportFilter filter : transportFilters) {
filter.transportTerminated(attributes);
}
transportClosed(transport);
}
/** {@inheritDoc} */
@Override
public AltsServerBuilder addTransportFilter(ServerTransportFilter filter) {
delegate.addTransportFilter(filter);
return this;
}
@Override
public final T addTransportFilter(ServerTransportFilter filter) {
transportFilters.add(checkNotNull(filter, "filter"));
return thisT();
}
@Override
public DropwizardServerBuilder addTransportFilter(final ServerTransportFilter filter) {
origin.addTransportFilter(filter);
return this;
}
@Override
public void afterPropertiesSet() throws Exception {
if (Boolean.FALSE == this.enable) {
return;
}
Objects.requireNonNull(this.beanName, "beanName");
Objects.requireNonNull(this.bindIp, "bindIp");
Objects.requireNonNull(this.addressFilter, "addressFilter");
Assert.isTrue(CollectionUtils.hasLength(this.serviceList), "serviceList must not be empty");
Objects.requireNonNull(this.serverOption, "serverOption");
this.serverFactory = new ServerFactory(beanName, this.bindIp, this.bindPort, this.executor, serverOption);
ServerTransportFilter permissionServerTransportFilter = new PermissionServerTransportFilter(this.beanName, addressFilter);
this.serverFactory.addTransportFilter(permissionServerTransportFilter);
TransportMetadataFactory transportMetadataFactory = new TransportMetadataFactory(beanName);
// Mandatory interceptor
final ServerTransportFilter metadataTransportFilter = new MetadataServerTransportFilter(transportMetadataFactory);
this.serverFactory.addTransportFilter(metadataTransportFilter);
if (CollectionUtils.hasLength(transportFilterList)) {
for (ServerTransportFilter transportFilter : transportFilterList) {
this.serverFactory.addTransportFilter(transportFilter);
}
}
// Mandatory interceptor
ServerInterceptor transportMetadataServerInterceptor = new TransportMetadataServerInterceptor();
this.serverFactory.addInterceptor(transportMetadataServerInterceptor);
if (CollectionUtils.hasLength(serverInterceptorList)) {
for (ServerInterceptor serverInterceptor : serverInterceptorList) {
this.serverFactory.addInterceptor(serverInterceptor);
}
}
// Add service
addService();
this.server = serverFactory.build();
if (logger.isInfoEnabled()) {
logger.info("Start {} server {}", this.beanName, this.server);
}
this.server.start();
}
public void setTransportFilterList(List<ServerTransportFilter> transportFilterList) {
this.transportFilterList = transportFilterList;
}
public void addTransportFilter(ServerTransportFilter serverTransportFilter) {
Assert.requireNonNull(serverTransportFilter, "serverTransportFilter");
this.serverTransportFilters.add(serverTransportFilter);
}
@Override
public XdsServerBuilder addTransportFilter(ServerTransportFilter filter) {
delegate.addTransportFilter(filter);
return this;
}
/** {@inheritDoc} */
@Override
public AltsServerBuilder addTransportFilter(ServerTransportFilter filter) {
delegate.addTransportFilter(filter);
return this;
}
@Override
public final T addTransportFilter(ServerTransportFilter filter) {
transportFilters.add(checkNotNull(filter, "filter"));
return thisT();
}