下面列出了com.google.common.util.concurrent.MoreExecutors#newSequentialExecutor ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@PostConstruct
public void init() {
executors = new Executor[THREAD_COUNT];
for(int i=0;i<this.executors.length;i++) {
executors[i] = MoreExecutors.newSequentialExecutor(executorService);
}
}
ArmeriaServerCall(HttpHeaders clientHeaders,
MethodDescriptor<I, O> method,
CompressorRegistry compressorRegistry,
DecompressorRegistry decompressorRegistry,
HttpResponseWriter res,
int maxInboundMessageSizeBytes,
int maxOutboundMessageSizeBytes,
ServiceRequestContext ctx,
SerializationFormat serializationFormat,
@Nullable GrpcJsonMarshaller jsonMarshaller,
boolean unsafeWrapRequestBuffers,
boolean useBlockingTaskExecutor,
ResponseHeaders defaultHeaders) {
requireNonNull(clientHeaders, "clientHeaders");
this.method = requireNonNull(method, "method");
this.ctx = requireNonNull(ctx, "ctx");
this.serializationFormat = requireNonNull(serializationFormat, "serializationFormat");
this.defaultHeaders = requireNonNull(defaultHeaders, "defaultHeaders");
messageReader = new HttpStreamReader(
requireNonNull(decompressorRegistry, "decompressorRegistry"),
new ArmeriaMessageDeframer(
this,
maxInboundMessageSizeBytes,
ctx.alloc())
.decompressor(clientDecompressor(clientHeaders, decompressorRegistry)),
this);
messageFramer = new ArmeriaMessageFramer(ctx.alloc(), maxOutboundMessageSizeBytes);
this.res = requireNonNull(res, "res");
this.compressorRegistry = requireNonNull(compressorRegistry, "compressorRegistry");
clientAcceptEncoding =
Strings.emptyToNull(clientHeaders.get(GrpcHeaderNames.GRPC_ACCEPT_ENCODING));
marshaller = new GrpcMessageMarshaller<>(ctx.alloc(), serializationFormat, method, jsonMarshaller,
unsafeWrapRequestBuffers);
this.unsafeWrapRequestBuffers = unsafeWrapRequestBuffers;
blockingExecutor = useBlockingTaskExecutor ?
MoreExecutors.newSequentialExecutor(ctx.blockingTaskExecutor()) : null;
res.whenComplete().handleAsync((unused, t) -> {
if (!closeCalled) {
// Closed by client, not by server.
cancelled = true;
try (SafeCloseable ignore = ctx.push()) {
close(Status.CANCELLED, new Metadata());
}
}
return null;
}, ctx.eventLoop());
}