| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 | <!DOCTYPE html><!--[if IE]><![endif]--><html>    <head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">    <title>Class ChannelExtensions   | gRPC for .NET </title>    <meta name="viewport" content="width=device-width">    <meta name="title" content="Class ChannelExtensions   | gRPC for .NET ">    <meta name="generator" content="docfx 2.36.0.0">        <link rel="shortcut icon" href="../favicon.ico">    <link rel="stylesheet" href="../styles/docfx.vendor.css">    <link rel="stylesheet" href="../styles/docfx.css">    <link rel="stylesheet" href="../styles/main.css">    <meta property="docfx:navrel" content="../toc.html">    <meta property="docfx:tocrel" content="toc.html">        <meta property="docfx:rel" content="../">      </head>  <body data-spy="scroll" data-target="#affix" data-offset="120">    <div id="wrapper">      <header>                <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">          <div class="container">            <div class="navbar-header">              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">                <span class="sr-only">Toggle navigation</span>                <span class="icon-bar"></span>                <span class="icon-bar"></span>                <span class="icon-bar"></span>              </button>                            <a class="navbar-brand" href="../index.html">                <img id="logo" class="svg" src="../logo.svg" alt="">              </a>            </div>            <div class="collapse navbar-collapse" id="navbar">              <form class="navbar-form navbar-right" role="search" id="search">                <div class="form-group">                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">                </div>              </form>            </div>          </div>        </nav>                <div class="subnav navbar navbar-default">          <div class="container hide-when-search" id="breadcrumb">            <ul class="breadcrumb">              <li></li>            </ul>          </div>        </div>      </header>      <div class="container body-content">                <div id="search-results">          <div class="search-list"></div>          <div class="sr-items">            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>          </div>          <ul id="pagination"></ul>        </div>      </div>      <div role="main" class="container body-content hide-when-search">                <div class="sidenav hide-when-search">          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>          <div class="sidetoggle collapse" id="sidetoggle">            <div id="sidetoc"></div>          </div>        </div>        <div class="article row grid-right">          <div class="col-md-10">            <article class="content wrap" id="_content" data-uid="Grpc.Core.Interceptors.ChannelExtensions">      <h1 id="Grpc_Core_Interceptors_ChannelExtensions" data-uid="Grpc.Core.Interceptors.ChannelExtensions" class="text-break">Class ChannelExtensions  </h1>  <div class="markdown level0 summary"><p>Provides extension methods to make it easy to register interceptors on Channel objects.</p></div>  <div class="markdown level0 conceptual"></div>  <div class="inheritance">    <h5>Inheritance</h5>    <div class="level0"><span class="xref">System.Object</span></div>    <div class="level1"><span class="xref">ChannelExtensions</span></div>  </div>  <h6><strong>Namespace</strong>: <a class="xref" href="Grpc.Core.Interceptors.html">Grpc.Core.Interceptors</a></h6>  <h6><strong>Assembly</strong>: Grpc.Core.Api.dll</h6>  <h5 id="Grpc_Core_Interceptors_ChannelExtensions_syntax">Syntax</h5>  <div class="codewrapper">    <pre><code class="lang-csharp hljs">public static class ChannelExtensions : object</code></pre>  </div>  <h3 id="methods">Methods  </h3>  <a id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept*"></a>  <h4 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Func_Grpc_Core_Metadata_Grpc_Core_Metadata__" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept(Grpc.Core.ChannelBase,Func{Grpc.Core.Metadata,Grpc.Core.Metadata})">Intercept(ChannelBase, Func<Metadata, Metadata>)</h4>  <div class="markdown level1 summary"><p>Returns a <a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a> instance that interceptsthe invoker with the given interceptor.</p></div>  <div class="markdown level1 conceptual"></div>  <h5 class="decalaration">Declaration</h5>  <div class="codewrapper">    <pre><code class="lang-csharp hljs">public static CallInvoker Intercept(this ChannelBase channel, Func<Metadata, Metadata> interceptor)</code></pre>  </div>  <h5 class="parameters">Parameters</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Name</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.ChannelBase.html">ChannelBase</a></td>        <td><span class="parametername">channel</span></td>        <td><p>The channel to intercept.</p></td>      </tr>      <tr>        <td><span class="xref">Func</span><<a class="xref" href="Grpc.Core.Metadata.html">Metadata</a>, <a class="xref" href="Grpc.Core.Metadata.html">Metadata</a>></td>        <td><span class="parametername">interceptor</span></td>        <td><p>An interceptor delegate that takes the request metadata to be sent with an outgoing calland returns a <a class="xref" href="Grpc.Core.Metadata.html">Metadata</a> instance that will replace the existinginvocation metadata.</p></td>      </tr>    </tbody>  </table>  <h5 class="returns">Returns</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a></td>        <td></td>      </tr>    </tbody>  </table>  <h5 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Func_Grpc_Core_Metadata_Grpc_Core_Metadata___remarks">Remarks</h5>  <div class="markdown level1 remarks"><p>Multiple interceptors can be added on top of each other bybuilding a chain like "channel.Intercept(c).Intercept(b).Intercept(a)".  Note thatin this case, the last interceptor added will be the first to take control.</p></div>  <a id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept*"></a>  <h4 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Grpc_Core_Interceptors_Interceptor_" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept(Grpc.Core.ChannelBase,Grpc.Core.Interceptors.Interceptor)">Intercept(ChannelBase, Interceptor)</h4>  <div class="markdown level1 summary"><p>Returns a <a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a> instance that interceptsthe channel with the given interceptor.</p></div>  <div class="markdown level1 conceptual"></div>  <h5 class="decalaration">Declaration</h5>  <div class="codewrapper">    <pre><code class="lang-csharp hljs">public static CallInvoker Intercept(this ChannelBase channel, Interceptor interceptor)</code></pre>  </div>  <h5 class="parameters">Parameters</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Name</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.ChannelBase.html">ChannelBase</a></td>        <td><span class="parametername">channel</span></td>        <td><p>The channel to intercept.</p></td>      </tr>      <tr>        <td><a class="xref" href="Grpc.Core.Interceptors.Interceptor.html">Interceptor</a></td>        <td><span class="parametername">interceptor</span></td>        <td><p>The interceptor to intercept the channel with.</p></td>      </tr>    </tbody>  </table>  <h5 class="returns">Returns</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a></td>        <td></td>      </tr>    </tbody>  </table>  <h5 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Grpc_Core_Interceptors_Interceptor__remarks">Remarks</h5>  <div class="markdown level1 remarks"><p>Multiple interceptors can be added on top of each other by calling"channel.Intercept(a, b, c)".  The order of invocation will be "a", "b", and then "c".Interceptors can be later added to an existing intercepted channel, effectivelybuilding a chain like "channel.Intercept(c).Intercept(b).Intercept(a)".  Note thatin this case, the last interceptor added will be the first to take control.</p></div>  <a id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept*"></a>  <h4 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Grpc_Core_Interceptors_Interceptor___" data-uid="Grpc.Core.Interceptors.ChannelExtensions.Intercept(Grpc.Core.ChannelBase,Grpc.Core.Interceptors.Interceptor[])">Intercept(ChannelBase, Interceptor[])</h4>  <div class="markdown level1 summary"><p>Returns a <a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a> instance that interceptsthe channel with the given interceptors.</p></div>  <div class="markdown level1 conceptual"></div>  <h5 class="decalaration">Declaration</h5>  <div class="codewrapper">    <pre><code class="lang-csharp hljs">public static CallInvoker Intercept(this ChannelBase channel, params Interceptor[] interceptors)</code></pre>  </div>  <h5 class="parameters">Parameters</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Name</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.ChannelBase.html">ChannelBase</a></td>        <td><span class="parametername">channel</span></td>        <td><p>The channel to intercept.</p></td>      </tr>      <tr>        <td><a class="xref" href="Grpc.Core.Interceptors.Interceptor.html">Interceptor</a>[]</td>        <td><span class="parametername">interceptors</span></td>        <td><p>An array of interceptors to intercept the channel with.Control is passed to the interceptors in the order specified.</p></td>      </tr>    </tbody>  </table>  <h5 class="returns">Returns</h5>  <table class="table table-bordered table-striped table-condensed">    <thead>      <tr>        <th>Type</th>        <th>Description</th>      </tr>    </thead>    <tbody>      <tr>        <td><a class="xref" href="Grpc.Core.CallInvoker.html">CallInvoker</a></td>        <td></td>      </tr>    </tbody>  </table>  <h5 id="Grpc_Core_Interceptors_ChannelExtensions_Intercept_Grpc_Core_ChannelBase_Grpc_Core_Interceptors_Interceptor____remarks">Remarks</h5>  <div class="markdown level1 remarks"><p>Multiple interceptors can be added on top of each other by calling"channel.Intercept(a, b, c)".  The order of invocation will be "a", "b", and then "c".Interceptors can be later added to an existing intercepted channel, effectivelybuilding a chain like "channel.Intercept(c).Intercept(b).Intercept(a)".  Note thatin this case, the last interceptor added will be the first to take control.</p></div></article>          </div>                    <div class="hidden-sm col-md-2" role="complementary">            <div class="sideaffix">              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->              </nav>            </div>          </div>        </div>      </div>            <footer>        <div class="grad-bottom"></div>        <div class="footer">          <div class="container">            <span class="pull-right">              <a href="#top">Back to top</a>            </span>                        <span>Generated by <strong>DocFX</strong></span>          </div>        </div>      </footer>    </div>        <script type="text/javascript" src="../styles/docfx.vendor.js"></script>    <script type="text/javascript" src="../styles/docfx.js"></script>    <script type="text/javascript" src="../styles/main.js"></script>  </body></html>
 |