下面列出了io.grpc.internal.SharedResourceHolder#release ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public final synchronized void shutdown() {
if (shutdown) {
return;
}
shutdown = true;
if (timerService != null) {
timerService = SharedResourceHolder.release(timerServiceResource, timerService);
}
if (executor != null) {
executor = SharedResourceHolder.release(executorResource, executor);
}
//----begin----自动注销zk中的Consumer信息----dengjq
if (findZkFuture != null) {
findZkFuture.cancel(false);
}
if (findZkExecutor != null) {
findZkExecutor.shutdown();
}
unRegistry();
//----end----自动注销zk中的Consumer信息----
}
@Test
public void scheduledExecutorService_default() {
CronetChannelBuilder builder = CronetChannelBuilder.forAddress("address", 1234, mockEngine);
ClientTransportFactory clientTransportFactory = builder.buildTransportFactory();
assertSame(
SharedResourceHolder.get(TIMER_SERVICE),
clientTransportFactory.getScheduledExecutorService());
SharedResourceHolder.release(
TIMER_SERVICE, clientTransportFactory.getScheduledExecutorService());
clientTransportFactory.close();
}
@Override
public void close() {
if (closed) {
return;
}
closed = true;
if (useSharedTimer) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timerService);
}
}
@Override
public void close() {
if (closed) {
return;
}
closed = true;
if (usingSharedScheduler) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timeoutService);
}
if (usingSharedExecutor) {
SharedResourceHolder.release(SHARED_EXECUTOR, executor);
}
}
@Test
public void scheduledExecutorService_default() {
OkHttpChannelBuilder builder = OkHttpChannelBuilder.forTarget("foo");
ClientTransportFactory clientTransportFactory = builder.buildTransportFactory();
assertSame(
SharedResourceHolder.get(TIMER_SERVICE),
clientTransportFactory.getScheduledExecutorService());
SharedResourceHolder.release(
TIMER_SERVICE, clientTransportFactory.getScheduledExecutorService());
clientTransportFactory.close();
}
@Override
public void close() {
if (closed) {
return;
}
closed = true;
protocolNegotiator.close();
if (usingSharedGroup) {
SharedResourceHolder.release(Utils.DEFAULT_WORKER_EVENT_LOOP_GROUP, group);
}
}
@Override
public void close() {
if (closed) {
return;
}
closed = true;
if (useSharedTimer) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timerService);
}
}
@Test
public void scheduledExecutorService_default() {
InProcessChannelBuilder builder = InProcessChannelBuilder.forName("foo");
ClientTransportFactory clientTransportFactory = builder.buildTransportFactory();
assertSame(
SharedResourceHolder.get(TIMER_SERVICE),
clientTransportFactory.getScheduledExecutorService());
SharedResourceHolder.release(
TIMER_SERVICE, clientTransportFactory.getScheduledExecutorService());
clientTransportFactory.close();
}
@Override
public void shutdown() {
this.listener = null;
if (this.executor != null && this.usingExecutorResource) {
this.executor = SharedResourceHolder.release(this.executorResource, this.executor);
}
}
@Override
public void shutdown() {
this.listener = null;
if (this.executor != null && this.usingExecutorResource) {
this.executor = SharedResourceHolder.release(this.executorResource, this.executor);
}
this.instanceList = Lists.newArrayList();
if (this.externalCleaner != null) {
this.externalCleaner.run();
}
}
@Override
public void shutdown() {
this.listener = null;
if (this.executor != null && this.usingExecutorResource) {
this.executor = SharedResourceHolder.release(this.executorResource, this.executor);
}
}
@Override
public void shutdown() {
this.listener = null;
if (this.executor != null && this.usingExecutorResource) {
this.executor = SharedResourceHolder.release(this.executorResource, this.executor);
}
this.instanceList = Lists.newArrayList();
if (this.externalCleaner != null) {
this.externalCleaner.run();
}
}
@Test
public void scheduledExecutorService_default() {
OkHttpChannelBuilder builder = OkHttpChannelBuilder.forTarget("foo");
ClientTransportFactory clientTransportFactory = builder.buildTransportFactory();
assertSame(
SharedResourceHolder.get(TIMER_SERVICE),
clientTransportFactory.getScheduledExecutorService());
SharedResourceHolder.release(
TIMER_SERVICE, clientTransportFactory.getScheduledExecutorService());
clientTransportFactory.close();
}
@Test
public void scheduledExecutorService_default() {
InProcessChannelBuilder builder = InProcessChannelBuilder.forName("foo");
ClientTransportFactory clientTransportFactory = builder.buildTransportFactory();
assertSame(
SharedResourceHolder.get(TIMER_SERVICE),
clientTransportFactory.getScheduledExecutorService());
SharedResourceHolder.release(
TIMER_SERVICE, clientTransportFactory.getScheduledExecutorService());
clientTransportFactory.close();
}
/** Shutdown this instance and release resources. */
public void shutdown() {
logger.log(Level.FINER, "Shutdown");
if (xdsClient != null) {
xdsClient.shutdown();
xdsClient = null;
}
if (timeService != null) {
timeService = SharedResourceHolder.release(timeServiceResource, timeService);
}
}
/** Stops resource discovery. No method in this class should be called after this point. */
void shutdown() {
if (requestObserver != null) {
requestObserver.onCompleted();
requestObserver = null;
channel.shutdownNow();
if (eventLoopGroup != null) {
eventLoopGroup = SharedResourceHolder.release(eventLoopGroupResource, eventLoopGroup);
}
}
}
/**
* When the transport is in goAway state, we should stop it once all active streams finish.
*/
@GuardedBy("lock")
private void stopIfNecessary() {
if (!(goAwayStatus != null && streams.isEmpty() && pendingStreams.isEmpty())) {
return;
}
if (stopped) {
return;
}
stopped = true;
if (keepAliveManager != null) {
keepAliveManager.onTransportTermination();
// KeepAliveManager should stop using the scheduler after onTransportTermination gets called.
scheduler = SharedResourceHolder.release(TIMER_SERVICE, scheduler);
}
if (ping != null) {
ping.failed(getPingFailure());
ping = null;
}
if (!goAwaySent) {
// Send GOAWAY with lastGoodStreamId of 0, since we don't expect any server-initiated
// streams. The GOAWAY is part of graceful shutdown.
goAwaySent = true;
frameWriter.goAway(0, ErrorCode.NO_ERROR, new byte[0]);
}
// We will close the underlying socket in the writing thread to break out the reader
// thread, which will close the frameReader and notify the listener.
frameWriter.close();
}
@Override
public void close() {
if (closed) {
return;
}
closed = true;
if (usingSharedScheduler) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timeoutService);
}
if (usingSharedExecutor) {
SharedResourceHolder.release(SHARED_EXECUTOR, executor);
}
}
@Override
public void close() {
if (usingSharedScheduler) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timeoutService);
}
}
@Override
public void close() {
if (usingSharedScheduler) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timeoutService);
}
}