导航菜单

页面标题

页面副标题

SpeedCash v6.5.1482 - Contexts.java 源代码

正在查看: SpeedCash v6.5.1482 应用的 Contexts.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package io.grpc;

import com.google.common.base.Preconditions;
import io.grpc.ForwardingServerCallListener;
import io.grpc.ServerCall;
import io.grpc.Status;
import java.util.concurrent.TimeoutException;

public final class Contexts {

    public static class a<ReqT> extends ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT> {
        public final Context b;

        public a(ServerCall.Listener<ReqT> listener, Context context) {
            super(listener);
            this.b = context;
        }

        @Override
        public void onCancel() {
            Context attach = this.b.attach();
            try {
                super.onCancel();
            } finally {
                this.b.detach(attach);
            }
        }

        @Override
        public void onComplete() {
            Context attach = this.b.attach();
            try {
                super.onComplete();
            } finally {
                this.b.detach(attach);
            }
        }

        @Override
        public void onHalfClose() {
            Context attach = this.b.attach();
            try {
                super.onHalfClose();
            } finally {
                this.b.detach(attach);
            }
        }

        @Override
        public void onMessage(ReqT reqt) {
            Context attach = this.b.attach();
            try {
                super.onMessage(reqt);
            } finally {
                this.b.detach(attach);
            }
        }

        @Override
        public void onReady() {
            Context attach = this.b.attach();
            try {
                super.onReady();
            } finally {
                this.b.detach(attach);
            }
        }
    }

    public static <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(Context context, ServerCall<ReqT, RespT> serverCall, Metadata metadata, ServerCallHandler<ReqT, RespT> serverCallHandler) {
        Context attach = context.attach();
        try {
            return new a(serverCallHandler.startCall(serverCall, metadata), context);
        } finally {
            context.detach(attach);
        }
    }

    @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1975")
    public static Status statusFromCancelled(Context context) {
        Preconditions.checkNotNull(context, "context must not be null");
        if (!context.isCancelled()) {
            return null;
        }
        Throwable cancellationCause = context.cancellationCause();
        if (cancellationCause == null) {
            return Status.CANCELLED.withDescription("io.grpc.Context was cancelled without error");
        }
        if (cancellationCause instanceof TimeoutException) {
            return Status.DEADLINE_EXCEEDED.withDescription(cancellationCause.getMessage()).withCause(cancellationCause);
        }
        Status fromThrowable = Status.fromThrowable(cancellationCause);
        return (Status.Code.UNKNOWN.equals(fromThrowable.getCode()) && fromThrowable.getCause() == cancellationCause) ? Status.CANCELLED.withDescription("Context cancelled").withCause(cancellationCause) : fromThrowable.withCause(cancellationCause);
    }
}