All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.ratis.thirdparty.io.grpc.CallCredentials2 Maven / Gradle / Ivy

/*
 * Copyright 2016 The gRPC Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.ratis.thirdparty.io.grpc;

import java.util.concurrent.Executor;

/**
 * The new interface for {@link CallCredentials}.
 *
 * 

THIS CLASS NAME IS TEMPORARY and is part of a migration. This class will BE DELETED as it * replaces {@link CallCredentials} in short-term. THIS CLASS IS ONLY REFERENCED BY IMPLEMENTIONS. * All consumers should be always referencing {@link CallCredentials}. * * @deprecated the new interface has been promoted into {@link CallCredentials}. Implementations * should switch back to "{@code extends CallCredentials}". */ @Deprecated @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4901") public abstract class CallCredentials2 extends CallCredentials { /** * Pass the credential data to the given {@link MetadataApplier}, which will propagate it to the * request metadata. * *

It is called for each individual RPC, within the {@link Context} of the call, before the * stream is about to be created on a transport. Implementations should not block in this * method. If metadata is not immediately available, e.g., needs to be fetched from network, the * implementation may give the {@code applier} to an asynchronous task which will eventually call * the {@code applier}. The RPC proceeds only after the {@code applier} is called. * * @param requestInfo request-related information * @param appExecutor The application thread-pool. It is provided to the implementation in case it * needs to perform blocking operations. * @param applier The outlet of the produced headers. It can be called either before or after this * method returns. */ @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1914") public abstract void applyRequestMetadata( RequestInfo requestInfo, Executor appExecutor, MetadataApplier applier); @Override public final void applyRequestMetadata( RequestInfo requestInfo, Executor appExecutor, final CallCredentials.MetadataApplier applier) { applyRequestMetadata(requestInfo, appExecutor, new MetadataApplier() { @Override public void apply(Metadata headers) { applier.apply(headers); } @Override public void fail(Status status) { applier.fail(status); } }); } @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1914") public abstract static class MetadataApplier extends CallCredentials.MetadataApplier {} }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy