blob: b726c9690c5c0f83a1949b2519ab25c88908de15 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>MetadataUtils (grpc-all 1.73.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MetadataUtils (grpc-all 1.73.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MetadataUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">io.grpc.stub</a></div>
<h2 title="Class MetadataUtils" class="title">Class MetadataUtils</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>io.grpc.stub.MetadataUtils</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">MetadataUtils</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></pre>
<div class="block">Utility functions for binding and receiving headers.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="../ClientInterceptor.html" title="interface in io.grpc">ClientInterceptor</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newAttachHeadersInterceptor(io.grpc.Metadata)">newAttachHeadersInterceptor</a></span>&#8203;(<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;extraHeaders)</code></th>
<td class="colLast">
<div class="block">Returns a client interceptor that attaches a set of headers to requests.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="../ServerInterceptor.html" title="interface in io.grpc">ServerInterceptor</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newAttachMetadataServerInterceptor(io.grpc.Metadata)">newAttachMetadataServerInterceptor</a></span>&#8203;(<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;extras)</code></th>
<td class="colLast">
<div class="block">Returns a ServerInterceptor that adds the specified Metadata to every response stream, one way
or another.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../ClientInterceptor.html" title="interface in io.grpc">ClientInterceptor</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newCaptureMetadataInterceptor(java.util.concurrent.atomic.AtomicReference,java.util.concurrent.atomic.AtomicReference)">newCaptureMetadataInterceptor</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic" class="externalLink">AtomicReference</a>&lt;<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&gt;&nbsp;headersCapture,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic" class="externalLink">AtomicReference</a>&lt;<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&gt;&nbsp;trailersCapture)</code></th>
<td class="colLast">
<div class="block">Captures the last received metadata on a channel.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="newAttachHeadersInterceptor(io.grpc.Metadata)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newAttachHeadersInterceptor</h4>
<pre class="methodSignature">public static&nbsp;<a href="../ClientInterceptor.html" title="interface in io.grpc">ClientInterceptor</a>&nbsp;newAttachHeadersInterceptor&#8203;(<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;extraHeaders)</pre>
<div class="block">Returns a client interceptor that attaches a set of headers to requests.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>extraHeaders</code> - the headers to be passed by each call that is processed by the returned
interceptor</dd>
</dl>
</li>
</ul>
<a id="newCaptureMetadataInterceptor(java.util.concurrent.atomic.AtomicReference,java.util.concurrent.atomic.AtomicReference)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newCaptureMetadataInterceptor</h4>
<pre class="methodSignature">public static&nbsp;<a href="../ClientInterceptor.html" title="interface in io.grpc">ClientInterceptor</a>&nbsp;newCaptureMetadataInterceptor&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic" class="externalLink">AtomicReference</a>&lt;<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&gt;&nbsp;headersCapture,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic" class="externalLink">AtomicReference</a>&lt;<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&gt;&nbsp;trailersCapture)</pre>
<div class="block">Captures the last received metadata on a channel. Useful for testing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headersCapture</code> - to record the last received headers</dd>
<dd><code>trailersCapture</code> - to record the last received trailers</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an implementation of the channel with captures installed.</dd>
</dl>
</li>
</ul>
<a id="newAttachMetadataServerInterceptor(io.grpc.Metadata)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>newAttachMetadataServerInterceptor</h4>
<pre class="methodSignature"><a href="../ExperimentalApi.html" title="annotation in io.grpc">@ExperimentalApi</a>("https://github.com/grpc/grpc-java/issues/11462")
public static&nbsp;<a href="../ServerInterceptor.html" title="interface in io.grpc">ServerInterceptor</a>&nbsp;newAttachMetadataServerInterceptor&#8203;(<a href="../Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;extras)</pre>
<div class="block">Returns a ServerInterceptor that adds the specified Metadata to every response stream, one way
or another.
<p>If, absent this interceptor, a stream would have headers, 'extras' will be added to those
headers. Otherwise, 'extras' will be sent as trailers. This pattern is useful when you have
some fixed information, server identity say, that should be included no matter how the call
turns out. The fallback to trailers avoids artificially committing clients to error responses
that could otherwise be retried (see https://grpc.io/docs/guides/retry/ for more).
<p>For correct operation, be sure to arrange for this interceptor to run *before* any others
that might add headers.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>extras</code> - the Metadata to be added to each stream. Caller gives up ownership.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MetadataUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>