You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by gi...@apache.org on 2021/03/08 22:09:41 UTC

[thrift-website] branch asf-staging updated: Automatic Site Publish by Buildbot

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/thrift-website.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 67732a1  Automatic Site Publish by Buildbot
67732a1 is described below

commit 67732a1e1eed4b4e9f6625ca099f9ac05ec4c3c4
Author: buildbot <us...@infra.apache.org>
AuthorDate: Mon Mar 8 22:09:39 2021 +0000

    Automatic Site Publish by Buildbot
---
 output/docs/Languages.html                     |  15 +-
 output/docs/committers/HowToThriftWebsite.html |   4 +-
 output/docs/index.html                         |   2 -
 output/docs/install/debian.html                |   2 +-
 output/docs/install/index.html                 |   2 -
 output/download.html                           |  10 +-
 output/index.html                              |  10 +-
 output/lib/index.html                          |  22 +-
 output/sitemap.html                            |   4 -
 output/tutorial/as3.html                       | 161 -----------
 output/tutorial/index.html                     |   4 -
 output/tutorial/netstd.html                    | 386 ++++++++++++-------------
 12 files changed, 210 insertions(+), 412 deletions(-)

diff --git a/output/docs/Languages.html b/output/docs/Languages.html
index c5b1fc1..d4023e2 100644
--- a/output/docs/Languages.html
+++ b/output/docs/Languages.html
@@ -53,7 +53,9 @@
 
 <h1 id="apache-thrift-language-support">Apache Thrift Language Support</h1>
 
-<p>Guidance For: 0.13.0 | 
+<p>Guidance For: 0.15.0 | 
+<a href="https://github.com/apache/thrift/blob/v0.14.0/LANGUAGES.md">0.14.0</a> | 
+<a href="https://github.com/apache/thrift/blob/v0.13.0/LANGUAGES.md">0.13.0</a> | 
 <a href="https://github.com/apache/thrift/blob/v0.12.0/LANGUAGES.md">0.12.0</a> | 
 <a href="https://github.com/apache/thrift/blob/0.11.0/LANGUAGES.md">0.11.0</a></p>
 
@@ -111,17 +113,6 @@ Thrift&#8217;s core protocol is TBinary, supported by all languages except for J
 </thead>
 <tbody>
 <tr align="center">
-<td align="left"><a href="https://github.com/apache/thrift/blob/master/lib/as3/README.md">ActionScript</a></td>
-<!-- Since -----------------><td>0.3.0</td>
-<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
-<!-- Language Levels -------><td colspan="2">FLEX SDK 4.6</td>
-<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td>
-<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td>
-<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td>
-<!-- Servers ---------------><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td>
-<td align="left"><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20THRIFT%20AND%20component%20in%20(%22AS3%20-%20Compiler%22%2C%20%22AS3%20-%20Library%22)%20and%20status%20not%20in%20(fixed%2C%20resolved%2C%20closed)">ActionScript</a></td>
-</tr>
-<tr align="center">
 <td align="left"><a href="https://github.com/apache/thrift/blob/master/lib/c_glib/README.md">C (glib)</a></td>
 <!-- Since -----------------><td>0.6.0</td>
 <!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
diff --git a/output/docs/committers/HowToThriftWebsite.html b/output/docs/committers/HowToThriftWebsite.html
index 56ae3ed..22d67e1 100644
--- a/output/docs/committers/HowToThriftWebsite.html
+++ b/output/docs/committers/HowToThriftWebsite.html
@@ -101,8 +101,8 @@ consistent experience with the various markdown parsers deployed by the CMS.</p>
 file” <a href="https://svn.apache.org/repos/asf/thrift/cms-site/trunk/lib/path.pm">lib/path.pm</a>. Update
 the following values and then following <b>Updating the Website</b> section below</p>
 
-<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>current_release: "0.14.0"
-current_release_date: "2021-FEB-11"
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>current_release: "0.14.1"
+current_release_date: "2021-MAR-08"
 </code></pre></div></div>
 
 <h3 id="updating-the-website">Updating the website</h3>
diff --git a/output/docs/index.html b/output/docs/index.html
index 8af7a09..afdcb72 100644
--- a/output/docs/index.html
+++ b/output/docs/index.html
@@ -96,8 +96,6 @@
 
 
 
-
-
   <li><a href="/docs/coding_standards.html">Coding standards</a></li>
 
 
diff --git a/output/docs/install/debian.html b/output/docs/install/debian.html
index 2339852..def4304 100644
--- a/output/docs/install/debian.html
+++ b/output/docs/install/debian.html
@@ -110,7 +110,7 @@ sudo ./b2 install
   </li>
   <li>NetStd
     <ul>
-      <li>apt-transport-https dotnet-sdk-3.1 aspnetcore-runtime-3.1</li>
+      <li>apt-transport-https dotnet-sdk-5.0 aspnetcore-runtime-5.0</li>
     </ul>
   </li>
   <li>Haskell
diff --git a/output/docs/install/index.html b/output/docs/install/index.html
index 8c5f165..30535a1 100644
--- a/output/docs/install/index.html
+++ b/output/docs/install/index.html
@@ -78,8 +78,6 @@
 
 
 
-
-
   <li><a href="/docs/install/centos.html">Centos 6.5 Install</a></li>
 
 
diff --git a/output/download.html b/output/download.html
index dff767d..37e5a29 100644
--- a/output/download.html
+++ b/output/download.html
@@ -50,19 +50,19 @@
 
     <div class="container">
       <h2 id="release">Release</h2>
-<p>The latest stable release of Thrift is 0.14.0 (released on 2021-FEB-11).</p>
+<p>The latest stable release of Thrift is 0.14.1 (released on 2021-MAR-08).</p>
 
 <ul>
-  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.0/thrift-0.14.0.tar.gz">thrift-0.14.0.tar.gz</a> [<a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.tar.gz.asc">PGP</a>]
-[<a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.tar.gz.md5">MD5</a>]</li>
-  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.0/thrift-0.14.0.exe">Thrift compiler for Windows (thrift-0.14.0.exe)</a> [<a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.exe.asc">PGP</a>] [<a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.exe.md5">MD5</a>]</li>
+  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.1/thrift-0.14.1.tar.gz">thrift-0.14.1.tar.gz</a> [<a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.asc">PGP</a>]
+[<a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.md5">MD5</a>]</li>
+  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.1/thrift-0.14.1.exe">Thrift compiler for Windows (thrift-0.14.1.exe)</a> [<a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.exe.asc">PGP</a>] [<a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.exe.md5">MD5</a>]</li>
 </ul>
 
 <h2 id="maven-artifact">Maven artifact</h2>
 <pre><code>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.thrift&lt;/groupId&gt;
   &lt;artifactId&gt;libthrift&lt;/artifactId&gt;
-  &lt;version&gt;0.14.0&lt;/version&gt;
+  &lt;version&gt;0.14.1&lt;/version&gt;
 &lt;/dependency&gt;
 </code></pre>
 
diff --git a/output/index.html b/output/index.html
index 38e3b24..bcca8c5 100644
--- a/output/index.html
+++ b/output/index.html
@@ -80,19 +80,19 @@
   </div>
   <div class="span3 well center pull-right">
     <h2>Download</h2>
-    <p>Apache Thrift v0.14.0</p>
+    <p>Apache Thrift v0.14.1</p>
     <p>
-      <a class="btn btn-large" href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.0/thrift-0.14.0.tar.gz">
-          Download <small>v0.14.0</small>
+      <a class="btn btn-large" href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.14.1/thrift-0.14.1.tar.gz">
+          Download <small>v0.14.1</small>
       </a>
     </p>
     <p>
       <small>
-       <a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.tar.gz.md5">MD5</a>
+       <a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.md5">MD5</a>
       </small>
       |
       <small>
-       <a href="https://www.apache.org/dist/thrift/0.14.0/thrift-0.14.0.tar.gz.asc">PGP</a>
+       <a href="https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.asc">PGP</a>
       </small>
     </p>
     <p>
diff --git a/output/lib/index.html b/output/lib/index.html
index 1839c51..c728acf 100644
--- a/output/lib/index.html
+++ b/output/lib/index.html
@@ -82,8 +82,6 @@
 
 
 
-
-
   <li><a href="/lib/c_glib.html">C GLib</a></li>
 
 
@@ -268,15 +266,6 @@
         </tr>
         
         <tr class="">
-            <td class="language">ActionScript</td>
-            <td class="packman">Maven</td>
-            <td class="packurl"><a href="https://repository.apache.org/#nexus-search;quick~libthrift-as3">https://repository.apache.org/#nexus-search;quick~libthrift-as3</a></td>
-            <td class="ctrlfile">lib/as3/build.xml</td>
-            <td class="maintainer">jking</td>
-            <td class="remarks"></td>
-        </tr>
-        
-        <tr class="">
             <td class="language">C (glib)</td>
             <td class="packman"></td>
             <td class="packurl"><a href=""></a></td>
@@ -358,21 +347,12 @@
         </tr>
         
         <tr class="">
-            <td class="language">Haskell</td>
-            <td class="packman">Hackage</td>
-            <td class="packurl"><a href="https://hackage.haskell.org/package/thrift">https://hackage.haskell.org/package/thrift</a></td>
-            <td class="ctrlfile">lib/hs/thrift.cabal</td>
-            <td class="maintainer">jfarrell, clavoie, jking</td>
-            <td class="remarks"></td>
-        </tr>
-        
-        <tr class="">
             <td class="language">Haxe</td>
             <td class="packman">Haxelib</td>
             <td class="packurl"><a href=""></a></td>
             <td class="ctrlfile">lib/haxe/haxelib.json</td>
             <td class="maintainer">jensg</td>
-            <td class="remarks">no package uploaded - see THRIFT-3036</td>
+            <td class="remarks"></td>
         </tr>
         
         <tr class="">
diff --git a/output/sitemap.html b/output/sitemap.html
index 3f6c46a..9537fa0 100644
--- a/output/sitemap.html
+++ b/output/sitemap.html
@@ -92,10 +92,6 @@
 
 
 
-  <li><a href="/tutorial/as3.html">Actionscript 3.0</a></li>
-
-
-
   <li><a href="/tutorial/c_glib.html">c_glib</a></li>
 
 
diff --git a/output/tutorial/as3.html b/output/tutorial/as3.html
deleted file mode 100644
index c9dd20c..0000000
--- a/output/tutorial/as3.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-    <meta content="en-us" http-equiv="Content-Language" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-    <link href="/static/images/favicon.ico" rel="shortcut icon" />
-    <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/codehilite.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/bootstrap.css" media="screen, projection" rel="stylesheet" type="text/css" />
-    <link href="/static/css/thrift.css" media="screen, projection" rel="stylesheet" type="text/css" />
-
-    <script src="/static/js/jquery.min.js"></script>
-    <script src="/static/js/bootstrap-dropdown.js"></script>
-    <script src="/static/js/bootstrap-tab.js"></script>
-    <script src="/static/js/thrift.js"></script>
-
-    <title>Apache Thrift - Actionscript 3.0</title>
-  </head>
-  <body>
-    <div class="navbar">
-  <div class="navbar-inner">
-    <div class="container">
-      <a class="brand" href="/">Apache Thrift &trade;</a>
-      <div class="nav-collapse">
-        <ul class="nav pull-right">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/docs">Documentation</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/lib">Libraries</a></li>
-          <li><a href="/tutorial">Tutorial</a></li>
-          <li><a href="/test">Test Suite</a></li>
-          <li><a href="/about">About</a></li>
-          <li class="dropdown">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
-            <ul class="dropdown-menu">
-              <li><a href="http://www.apache.org/" target="_blank">Apache Home</a></li>
-              <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License v2.0</a></li>
-              <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a></li>
-              <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
-              <li><a href="http://www.apache.org/security/" target="_blank">Security</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-    <div class="container">
-      <h2>Actionscript 3.0 Tutorial</h2>
-
-<h3>Introduction</h3>
-
-<p>
-All Apache Thrift tutorials require that you have:
-
-<ol>
-  <li>The Apache Thrift Compiler and Libraries, see <a href="/download">Download</a> and <a href="/docs/BuildingFromSource">Building from Source</a> for more details.</li>
-  <li>Generated the <a href="https://github.com/apache/thrift/blob/master/tutorial/tutorial.thrift">tutorial.thrift</a> and <a href="https://github.com/apache/thrift/blob/master/tutorial/shared.thrift">shared.thrift</a> files:<br>
-    <pre><code>thrift -r --gen as3 tutorial.thrift</code></pre>
-  </li>
-  <li>Followed all prerequisites listed below.</li>
-</ol>
-
-<h3 id="prerequisites">Prerequisites</h3>
-
-<h3 id="client">Client</h3>
-<p>To initialize client you can use code similar to:</p>
-
-<div class="highlight"><pre class="codehilite"><code>    <span class="kd">private</span> <span class="n">function</span> <span class="nf">initConnection</span><span class="o">():</span><span class="kt">void</span> <span class="o">{</span>
-      <span class="n">mTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">TSocket</span><span class="o">(</span><span class="s">"127.0.0.1"</span><span class="o">,</span> <span class="mi">9090</span><span class="o">);</span> <span class="c1">// we connect to server</span>
-      <span class="n">mTransport</span><span class="o">.</span><span class="na">open</span><span class="o">();</span>
-      <span class="c1">// initialize protocol:</span>
-      <span class="kt">var</span> <span class="nl">protocol:</span><span class="nc">TProtocol</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">TBinaryProtocol</span><span class="o">(</span><span class="n">mTransport</span><span class="o">,</span> <span class="kc">false</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
-      <span class="n">mCalculatorClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">CalculatorImpl</span><span class="o">(</span><span class="n">protocol</span><span class="o">);</span> <span class="c1">// finally, we create calculator client instance</span>
-    <span class="o">}</span>
-
-</code></pre></div>
-<p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
-<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/as3/src/CalculatorUI.as">tutorial/as3/src/CalculatorUI.as</a>
-</p>
-
-<h3 id="server">Server</h3>
-<p>The example client above can be tested against a java tutorial server.</p>
-
-<h3 id="additional-information">Additional Information</h3>
-
-<p>You might find server failing due to out of memory exception. This might happen because of flash crossdomain policy. See
-next passage on how to fix this.</p>
-
-<h3 id="flash-crossdomain-policy">Flash crossdomain policy</h3>
-
-<p>Flash does not allow movies to connect to arbitrary servers. This is done for security reasons. To override this
-restriction, however, servers’ owners can create special file - crossdomain xml file, which lists the rules according to
-which some flash movies can connect to the server.</p>
-
-<p>Details about this behavior are listed in
-<a href="http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html">Setting up a socket policy file server</a>.
-Also, you can find a simple python/perl server script to serve this file there. For same host, you can serve
-crossdomain.xml from any port. So, you can start your RPC servers on ports 9090 and 9091, and serve polisy file from
-port 9092. To tell flash about this, you can use code from tutorial file:</p>
-
-<div class="highlight"><pre class="codehilite"><code>    <span class="kd">private</span> <span class="n">function</span> <span class="nf">initSecurity</span><span class="o">():</span><span class="kt">void</span> <span class="o">{</span>
-      <span class="nc">Security</span><span class="o">.</span><span class="na">loadPolicyFile</span><span class="o">(</span><span class="s">"xmlsocket://127.0.0.1:9092"</span><span class="o">);</span>
-    <span class="o">}</span>
-</code></pre></div>
-<p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
-<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/as3/src/CalculatorUI.as">tutorial/as3/src/CalculatorUI.as</a>
-</p>
-
-<p>Example of crossdomain file, to allow connect to ports 9090 and 9091 from any server:</p>
-
-<pre><code>
-&lt;?xml version="1.0"?&gt;
-&lt;!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"&gt;
-&lt;!-- Policy file --&gt;
-&lt;cross-domain-policy&gt;
-  &lt;allow-access-from domain="*" to-ports="9090,9091" /&gt;
-&lt;/cross-domain-policy&gt;
-</code></pre>
-
-
-
-    </div>
-    <div class="container">
-  <hr>
-  <footer class="footer">
-    <div class="row">
-      <div class="span3">
-        <h3>Links</h3>
-        <ul class="unstyled">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/tutorial">Tutorials</a></li>
-        </ul>
-        <ul class="unstyled">
-          <li><a href="/sitemap">Sitemap</a></li>
-        </ul>
-      </div>
-      <div class="span3">
-        <h3>Get Involved</h3>
-        <ul class="unstyled">
-          <li><a href="/mailing">Mailing Lists</a></li>
-          <li><a href="http://issues.apache.org/jira/browse/THRIFT">Issue Tracking</a></li>
-          <li><a href="/docs/HowToContribute">How To Contribute</a></li>
-        </ul>
-      </div>
-      <div class="span6">
-        <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
-        Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
-        Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
-      </div>
-    </div>
-  </footer>
-</div>
-
-  </body>
-</html>
diff --git a/output/tutorial/index.html b/output/tutorial/index.html
index 80f502c..3df77c9 100644
--- a/output/tutorial/index.html
+++ b/output/tutorial/index.html
@@ -115,10 +115,6 @@ Both files will be used to demonstrate how to build a Thrift client and server p
 
 
 
-  <li><a href="/tutorial/as3.html">Actionscript 3.0</a></li>
-
-
-
   <li><a href="/tutorial/c_glib.html">c_glib</a></li>
 
 
diff --git a/output/tutorial/netstd.html b/output/tutorial/netstd.html
index eb0e2f5..b2a3b32 100644
--- a/output/tutorial/netstd.html
+++ b/output/tutorial/netstd.html
@@ -87,11 +87,14 @@ All Apache Thrift tutorials require that you have:
 <span class="k">using</span> <span class="n">tutorial</span><span class="p">;</span>
 <span class="k">using</span> <span class="n">shared</span><span class="p">;</span>
 
+<span class="cp">#pragma warning disable IDE0063  // using
+#pragma warning disable IDE0057  // substr
+</span>
 <span class="k">namespace</span> <span class="n">Client</span>
 <span class="p">{</span>
     <span class="k">public</span> <span class="k">class</span> <span class="nc">Program</span>
     <span class="p">{</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ServiceCollection</span><span class="p">();</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ServiceCollection</span><span class="p">();</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">ILogger</span> <span class="n">Logger</span><span class="p">;</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">TConfiguration</span> <span class="n">Configuration</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>  <span class="c1">// new TConfiguration() if  needed</span>
 
@@ -102,26 +105,27 @@ All Apache Thrift tutorials require that you have:
 </span><span class="s">    Client -help</span><span class="err">
 </span><span class="s">        will diplay help information </span><span class="err">
 
-</span><span class="s">    Client -tr:&lt;transport&gt; -bf:&lt;buffering&gt; -pr:&lt;protocol&gt; -mc:&lt;numClients&gt;</span><span class="err">
+</span><span class="s">    Client -tr:&lt;transport&gt; -bf:&lt;buffering&gt; -pr:&lt;protocol&gt; [-mc:&lt;numClients&gt;]  [-multiplex]</span><span class="err">
 </span><span class="s">        will run client with specified arguments (tcp transport and binary protocol by default) and with 1 client</span><span class="err">
 
 </span><span class="s">Options:</span><span class="err">
 </span><span class="s">    -tr (transport): </span><span class="err">
-</span><span class="s">        tcp - (default) tcp transport will be used (host - ""localhost"", port - 9090)</span><span class="err">
-</span><span class="s">        namedpipe - namedpipe transport will be used (pipe address - "".test"")</span><span class="err">
-</span><span class="s">        http - http transport will be used (address - ""http://localhost:9090"")        </span><span class="err">
-</span><span class="s">        tcptls - tcp tls transport will be used (host - ""localhost"", port - 9090)</span><span class="err">
+</span><span class="s">        tcp - (default) tcp transport  (localhost:9090)</span><span class="err">
+</span><span class="s">        tcptls - tcp tls transport  (localhost:9090)</span><span class="err">
+</span><span class="s">        namedpipe - namedpipe transport  (pipe "".test"")</span><span class="err">
+</span><span class="s">        http - http transport  (http://localhost:9090)</span><span class="err">
 
 </span><span class="s">    -bf (buffering): </span><span class="err">
-</span><span class="s">        none - (default) no buffering will be used</span><span class="err">
-</span><span class="s">        buffered - buffered transport will be used</span><span class="err">
-</span><span class="s">        framed - framed transport will be used</span><span class="err">
+</span><span class="s">        none - (default) no buffering </span><span class="err">
+</span><span class="s">        buffered - buffered transport </span><span class="err">
+</span><span class="s">        framed - framed transport </span><span class="err">
 
 </span><span class="s">    -pr (protocol): </span><span class="err">
-</span><span class="s">        binary - (default) binary protocol will be used</span><span class="err">
-</span><span class="s">        compact - compact protocol will be used</span><span class="err">
-</span><span class="s">        json - json protocol will be used</span><span class="err">
-</span><span class="s">        multiplexed - multiplexed protocol will be used</span><span class="err">
+</span><span class="s">        binary - (default) binary protocol </span><span class="err">
+</span><span class="s">        compact - compact protocol </span><span class="err">
+</span><span class="s">        json - json protocol </span><span class="err">
+
+</span><span class="s">    -multiplex - adds multiplexed protocol</span><span class="err">
 
 </span><span class="s">    -mc (multiple clients):</span><span class="err">
 </span><span class="s">        &lt;numClients&gt; - number of multiple clients to connect to server (max 100, default 1)</span><span class="err">
@@ -133,7 +137,7 @@ All Apache Thrift tutorials require that you have:
 
         <span class="k">public</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">Main</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">args</span> <span class="o">=</span> <span class="n">args</span> <span class="o">??</span> <span class="k">new</span> <span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+            <span class="n">args</span> <span class="o">??=</span> <span class="n">Array</span><span class="p">.</span><span class="n">Empty</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="p">();</span>
 
             <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
             <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">serviceProvider</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">())</span>
@@ -168,43 +172,77 @@ All Apache Thrift tutorials require that you have:
 
             <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">);</span>
 
-            <span class="n">var</span> <span class="n">transports</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TTransport</span><span class="p">[</span><span class="n">numClients</span><span class="p">];</span>
-            <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">numClients</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
-            <span class="p">{</span>
-                <span class="n">var</span> <span class="n">t</span> <span class="o">=</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
-                <span class="n">transports</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span>
-            <span class="p">}</span>
-            
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client transport: {transports[0]}"</span><span class="p">);</span>
+            <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client transport: {transport}"</span><span class="p">);</span>
 
-            <span class="n">var</span> <span class="n">protocols</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">[</span><span class="n">numClients</span><span class="p">];</span>
-            <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">numClients</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
-            <span class="p">{</span>
-                <span class="n">var</span> <span class="n">p</span> <span class="o">=</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">transports</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-                <span class="n">protocols</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span>
-            <span class="p">}</span>
+            <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">MakeProtocol</span><span class="p">(</span> <span class="n">args</span><span class="p">,</span> <span class="n">MakeTransport</span><span class="p">(</span><span class="n">args</span><span class="p">));</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client protocol: {GetProtocol(args)}"</span><span class="p">);</span>
 
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client protocol: {protocols[0].Item1}"</span><span class="p">);</span>
+            <span class="n">var</span> <span class="n">mplex</span> <span class="o">=</span> <span class="n">GetMultiplex</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Multiplex "</span> <span class="o">+</span> <span class="p">(</span><span class="n">mplex</span> <span class="o">?</span> <span class="s">"yes"</span> <span class="o">:</span> <span class="s">"no"</span><span class="p">));</span>
 
             <span class="n">var</span> <span class="n">tasks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Task</span><span class="p">[</span><span class="n">numClients</span><span class="p">];</span>
             <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">numClients</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">var</span> <span class="n">task</span> <span class="o">=</span> <span class="n">RunClientAsync</span><span class="p">(</span><span class="n">protocols</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cancellationToken</span><span class="p">);</span>
+                <span class="n">var</span> <span class="n">task</span> <span class="o">=</span> <span class="n">RunClientAsync</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="n">mplex</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
                 <span class="n">tasks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">task</span><span class="p">;</span>
             <span class="p">}</span>
 
-            <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">tasks</span><span class="p">);</span>
-
+            <span class="n">Task</span><span class="p">.</span><span class="n">WaitAll</span><span class="p">(</span><span class="n">tasks</span><span class="p">,</span><span class="n">cancellationToken</span><span class="p">);</span>
             <span class="n">await</span> <span class="n">Task</span><span class="p">.</span><span class="n">CompletedTask</span><span class="p">;</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">TTransport</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="kt">bool</span> <span class="n">GetMultiplex</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">var</span> <span class="n">mplex</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-multiplex"</span><span class="p">));</span>
+            <span class="k">return</span> <span class="o">!</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">mplex</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="k">private</span> <span class="k">static</span> <span class="n">Protocol</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-pr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</s [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">protocol</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">;</span>
+
+            <span class="n">protocol</span> <span class="o">=</span> <span class="n">protocol</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">protocol</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Protocol</span> <span class="n">selectedProtocol</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedProtocol</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">private</span> <span class="k">static</span> <span class="n">Buffering</span> <span class="n">GetBuffering</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">var</span> <span class="n">buffering</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-bf"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</ [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">buffering</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">;</span>
+
+            <span class="n">buffering</span> <span class="o">=</span> <span class="n">buffering</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">buffering</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span cl [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">buffering</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedBuffering</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">private</span> <span class="k">static</span> <span class="n">Transport</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">TTransport</span> <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TSocketTransport</span><span class="p">(</span><span class="n">IPAddress</span><span class="p">.</span><span class="n">Loopback</span><span class="p">,</span> <span class="mi">9090</span><span class="p">,</span> <span class="n">Configuration</span><span class="p">);</span>
+            <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-tr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</ [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">transport</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Tcp</span><span class="p">;</span>
+
+            <span class="n">transport</span> <span class="o">=</span> <span class="n">transport</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">transport</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span cl [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">transport</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Transport</span> <span class="n">selectedTransport</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedTransport</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Tcp</span><span class="p">;</span>
+        <span class="p">}</span>
+
 
+        <span class="k">private</span> <span class="k">static</span> <span class="n">TTransport</span> <span class="n">MakeTransport</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
             <span class="c1">// construct endpoint transport</span>
-            <span class="n">var</span> <span class="n">transportArg</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-tr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Spli [...]
-            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">transportArg</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Transport</span> <span class="n">selectedTransport</span><span class="p">))</span>
+            <span class="n">TTransport</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
+            <span class="n">Transport</span> <span class="n">selectedTransport</span> <span class="o">=</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
             <span class="p">{</span>
                 <span class="k">switch</span> <span class="p">(</span><span class="n">selectedTransport</span><span class="p">)</span>
                 <span class="p">{</span>
@@ -232,23 +270,20 @@ All Apache Thrift tutorials require that you have:
             <span class="p">}</span>
 
             <span class="c1">// optionally add layered transport(s)</span>
-            <span class="n">var</span> <span class="n">bufferingArg</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-bf"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Spli [...]
-            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">bufferingArg</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">))</span>
+            <span class="n">Buffering</span> <span class="n">selectedBuffering</span> <span class="o">=</span> <span class="n">GetBuffering</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
+            <span class="k">switch</span> <span class="p">(</span><span class="n">selectedBuffering</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="k">switch</span> <span class="p">(</span><span class="n">selectedBuffering</span><span class="p">)</span>
-                <span class="p">{</span>
-                    <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Buffered</span><span class="p">:</span>
-                        <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
-                        <span class="k">break</span><span class="p">;</span>
+                <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Buffered</span><span class="p">:</span>
+                    <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
+                    <span class="k">break</span><span class="p">;</span>
 
-                    <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Framed</span><span class="p">:</span>
-                        <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
-                        <span class="k">break</span><span class="p">;</span>
+                <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Framed</span><span class="p">:</span>
+                    <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
+                    <span class="k">break</span><span class="p">;</span>
 
-                    <span class="nl">default:</span> <span class="c1">// layered transport(s) are optional</span>
-                        <span class="n">Debug</span><span class="p">.</span><span class="n">Assert</span><span class="p">(</span><span class="n">selectedBuffering</span> <span class="o">==</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">,</span> <span class="s">"unhandled case"</span><span class="p">);</span>
-                        <span class="k">break</span><span class="p">;</span>
-                <span class="p">}</span>
+                <span class="nl">default:</span> <span class="c1">// layered transport(s) are optional</span>
+                    <span class="n">Debug</span><span class="p">.</span><span class="n">Assert</span><span class="p">(</span><span class="n">selectedBuffering</span> <span class="o">==</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">,</span> <span class="s">"unhandled case"</span><span class="p">);</span>
+                    <span class="k">break</span><span class="p">;</span>
             <span class="p">}</span>
 
             <span class="k">return</span> <span class="n">transport</span><span class="p">;</span>
@@ -260,11 +295,10 @@ All Apache Thrift tutorials require that you have:
 
             <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">);</span>
 
-            <span class="kt">int</span> <span class="n">c</span><span class="p">;</span>
-            <span class="k">if</span><span class="p">(</span> <span class="kt">int</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">numClients</span><span class="p">,</span> <span class="n">out</span> <span class="n">c</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;</span> <span class="n">c</span><span class="p">)</span> <span class="o">&amp;&amp;</s [...]
-				<span class="k">return</span> <span class="n">c</span><span class="p">;</span>
-			<span class="k">else</span>
-				<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="kt">int</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">numClients</span><span class="p">,</span> <span class="n">out</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;</span> <span class="n">c</span><span class="p">)</span> < [...]
+                <span class="k">return</span> <span class="n">c</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
         <span class="p">}</span>
 
         <span class="k">private</span> <span class="k">static</span> <span class="n">X509Certificate2</span> <span class="n">GetCertificate</span><span class="p">()</span>
@@ -303,65 +337,37 @@ All Apache Thrift tutorials require that you have:
             <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">,</span> <span class="n">TTransport</span> <span class="n">transport</span><span class="p">)</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">TProtocol</span> <span class="n">MakeProtocol</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">,</span> <span class="n">TTransport</span> <span class="n">transport</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-pr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</s [...]
-
-            <span class="n">Protocol</span> <span class="n">selectedProtocol</span><span class="p">;</span>
-            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">selectedProtocol</span><span class="p">))</span>
+            <span class="n">Protocol</span> <span class="n">selectedProtocol</span> <span class="o">=</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
+            <span class="k">switch</span> <span class="p">(</span><span class="n">selectedProtocol</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="k">switch</span> <span class="p">(</span><span class="n">selectedProtocol</span><span class="p">)</span>
-                <span class="p">{</span>
-                    <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
-                    <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Compact</span><span class="p">:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TCompactProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
-                    <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Json</span><span class="p">:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TJsonProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
-                    <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Multiplexed</span><span class="p">:</span>
-                        <span class="c1">// it returns BinaryProtocol to avoid making wrapped protocol as public in TProtocolDecorator (in RunClientAsync it will be wrapped into Multiplexed protocol)</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
-                    <span class="nl">default:</span>
-                        <span class="n">Debug</span><span class="p">.</span><span class="n">Assert</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="s">"unhandled case"</span><span class="p">);</span>
-                        <span class="k">break</span><span class="p">;</span>
-                <span class="p">}</span>
+                <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">:</span>
+                    <span class="k">return</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
+                <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Compact</span><span class="p">:</span>
+                    <span class="k">return</span> <span class="k">new</span> <span class="n">TCompactProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
+                <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Json</span><span class="p">:</span>
+                    <span class="k">return</span> <span class="k">new</span> <span class="n">TJsonProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
+                <span class="nl">default:</span>
+                    <span class="k">throw</span> <span class="k">new</span> <span class="n">Exception</span><span class="p">(</span><span class="s">"unhandled protocol"</span><span class="p">);</span>
             <span class="p">}</span>
-
-            <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunClientAsync</span><span class="p">(</span><span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span> <span class="n">protocolTuple</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToke [...]
+        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunClientAsync</span><span class="p">(</span><span class="n">TProtocol</span> <span class="n">protocol</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">multiplex</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="k">try</span>
             <span class="p">{</span>
-                <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">protocolTuple</span><span class="p">.</span><span class="n">Item2</span><span class="p">;</span>
-                <span class="n">var</span> <span class="n">protocolType</span> <span class="o">=</span> <span class="n">protocolTuple</span><span class="p">.</span><span class="n">Item1</span><span class="p">;</span>
-
-                <span class="n">TBaseClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
-
                 <span class="k">try</span>
                 <span class="p">{</span>
-                    <span class="k">if</span> <span class="p">(</span><span class="n">protocolType</span> <span class="o">!=</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Multiplexed</span><span class="p">)</span>
-                    <span class="p">{</span>
-
-                        <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">(</span><span class="n">protocol</span><span class="p">);</span>
-                        <span class="n">await</span> <span class="n">ExecuteCalculatorClientOperations</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">,</span> <span class="p">(</span><span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">)</span><span class="n">client</span><span class="p">);</span>
-                    <span class="p">}</span>
-                    <span class="k">else</span>
-                    <span class="p">{</span>
-                        <span class="c1">// it uses binary protocol there  to create Multiplexed protocols</span>
-                        <span class="n">var</span> <span class="n">multiplex</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TMultiplexedProtocol</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="n">nameof</span><span class="p">(</span><span class="n">Calculator</span><span class="p">));</span>
-                        <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">(</span><span class="n">multiplex</span><span class="p">);</span>
-                        <span class="n">await</span> <span class="n">ExecuteCalculatorClientOperations</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">,</span> <span class="p">(</span><span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">)</span><span class="n">client</span><span class="p">);</span>
-
-                        <span class="n">multiplex</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TMultiplexedProtocol</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="n">nameof</span><span class="p">(</span><span class="n">SharedService</span><span class="p">));</span>
-                        <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SharedService</span><span class="p">.</span><span class="n">Client</span><span class="p">(</span><span class="n">multiplex</span><span class="p">);</span>
-                        <span class="n">await</span> <span class="n">ExecuteSharedServiceClientOperations</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">,</span> <span class="p">(</span><span class="n">SharedService</span><span class="p">.</span><span class="n">Client</span><span class="p">)</span><span class="n">client</span><span class="p">);</span>
-                    <span class="p">}</span>
+                    <span class="k">if</span><span class="p">(</span> <span class="n">multiplex</span><span class="p">)</span>
+                        <span class="n">protocol</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TMultiplexedProtocol</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="n">nameof</span><span class="p">(</span><span class="n">Calculator</span><span class="p">));</span>
+
+                    <span class="n">var</span> <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">(</span><span class="n">protocol</span><span class="p">);</span>
+                    <span class="n">await</span> <span class="n">ExecuteCalculatorClientOperations</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
                 <span class="p">}</span>
                 <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">ex</span><span class="p">)</span>
                 <span class="p">{</span>
-                    <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="err">$</span><span class="s">"{client?.ClientId} "</span> <span class="o">+</span> <span class="n">ex</span><span class="p">);</span>
+                    <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">ToString</span><span class="p">());</span>
                 <span class="p">}</span>
                 <span class="n">finally</span>
                 <span class="p">{</span>
@@ -374,7 +380,7 @@ All Apache Thrift tutorials require that you have:
             <span class="p">}</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">ExecuteCalculatorClientOperations</span><span class="p">(</span><span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">,</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span> <span class="n">client</span><span class="p">)</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">ExecuteCalculatorClientOperations</span><span class="p">(</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span> <span class="n">client</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">OpenTransportAsync</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">);</span>
 
@@ -401,12 +407,6 @@ All Apache Thrift tutorials require that you have:
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Whoa we can divide by 0"</span><span class="p">);</span>
             <span class="p">}</span>
             <span class="k">catch</span> <span class="p">(</span><span class="n">InvalidOperation</span> <span class="n">io</span><span class="p">)</span>
-            <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Invalid operation: "</span> <span class="o">+</span> <span class="n">io</span><span class="p">);</span>
-            <span class="p">}</span>
-
-            <span class="n">work</span><span class="p">.</span><span class="n">Op</span> <span class="o">=</span> <span class="n">Operation</span><span class="p">.</span><span class="n">SUBTRACT</span><span class="p">;</span>
-            <span class="n">work</span><span class="p">.</span><span class="n">Num1</span> <span class="o">=</span> <span class="mi">15</span><span class="p">;</span>
 </code></pre></div>
 <p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
 <a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/netstd/Client/Program.cs">tutorial/netstd/Client/Program.cs</a>
@@ -437,17 +437,20 @@ All Apache Thrift tutorials require that you have:
 <span class="k">using</span> <span class="n">Thrift</span><span class="p">.</span><span class="n">Processor</span><span class="p">;</span>
 <span class="k">using</span> <span class="n">System</span><span class="p">.</span><span class="n">Diagnostics</span><span class="p">;</span>
 
+<span class="cp">#pragma warning disable IDE0063  // using
+#pragma warning disable IDE0057  // substr
+</span>
 <span class="k">namespace</span> <span class="n">Server</span>
 <span class="p">{</span>
     <span class="k">public</span> <span class="k">class</span> <span class="nc">Program</span>
     <span class="p">{</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ServiceCollection</span><span class="p">();</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ServiceCollection</span><span class="p">();</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">ILogger</span> <span class="n">Logger</span><span class="p">;</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">TConfiguration</span> <span class="n">Configuration</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>  <span class="c1">// new TConfiguration() if  needed</span>
 
         <span class="k">public</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">Main</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">args</span> <span class="o">=</span> <span class="n">args</span> <span class="o">??</span> <span class="k">new</span> <span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+            <span class="n">args</span> <span class="o">??=</span> <span class="n">Array</span><span class="p">.</span><span class="n">Empty</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="p">();</span>
 
             <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
             <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">serviceProvider</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">())</span>
@@ -488,26 +491,27 @@ All Apache Thrift tutorials require that you have:
 </span><span class="s">    Server -help</span><span class="err">
 </span><span class="s">        will diplay help information </span><span class="err">
 
-</span><span class="s">    Server -tr:&lt;transport&gt; -bf:&lt;buffering&gt; -pr:&lt;protocol&gt;</span><span class="err">
+</span><span class="s">    Server -tr:&lt;transport&gt; -bf:&lt;buffering&gt; -pr:&lt;protocol&gt;  [-multiplex]</span><span class="err">
 </span><span class="s">        will run server with specified arguments (tcp transport, no buffering, and binary protocol by default)</span><span class="err">
 
 </span><span class="s">Options:</span><span class="err">
 </span><span class="s">    -tr (transport): </span><span class="err">
-</span><span class="s">        tcp - (default) tcp transport will be used (host - ""localhost"", port - 9090)</span><span class="err">
-</span><span class="s">        namedpipe - namedpipe transport will be used (pipe address - "".test"")</span><span class="err">
-</span><span class="s">        http - http transport will be used (http address - ""localhost:9090"")</span><span class="err">
-</span><span class="s">        tcptls - tcp transport with tls will be used (host - ""localhost"", port - 9090)</span><span class="err">
+</span><span class="s">        tcp - (default) tcp transport (localhost:9090)</span><span class="err">
+</span><span class="s">        tcptls - tcp transport with tls (localhost:9090)</span><span class="err">
+</span><span class="s">        namedpipe - namedpipe transport (pipe "".test"")</span><span class="err">
+</span><span class="s">        http - http transport (localhost:9090)</span><span class="err">
 
 </span><span class="s">    -bf (buffering): </span><span class="err">
-</span><span class="s">        none - (default) no buffering will be used</span><span class="err">
-</span><span class="s">        buffered - buffered transport will be used</span><span class="err">
-</span><span class="s">        framed - framed transport will be used</span><span class="err">
+</span><span class="s">        none - (default) no buffering</span><span class="err">
+</span><span class="s">        buffered - buffered transport</span><span class="err">
+</span><span class="s">        framed - framed transport</span><span class="err">
 
 </span><span class="s">    -pr (protocol): </span><span class="err">
-</span><span class="s">        binary - (default) binary protocol will be used</span><span class="err">
-</span><span class="s">        compact - compact protocol will be used</span><span class="err">
-</span><span class="s">        json - json protocol will be used</span><span class="err">
-</span><span class="s">        multiplexed - multiplexed protocol will be used</span><span class="err">
+</span><span class="s">        binary - (default) binary protocol</span><span class="err">
+</span><span class="s">        compact - compact protocol</span><span class="err">
+</span><span class="s">        json - json protocol</span><span class="err">
+
+</span><span class="s">    -multiplex - adds multiplexed protocol</span><span class="err">
 
 </span><span class="s">Sample:</span><span class="err">
 </span><span class="s">    Server -tr:tcp</span><span class="err">
@@ -519,48 +523,68 @@ All Apache Thrift tutorials require that you have:
             <span class="n">var</span> <span class="n">selectedTransport</span> <span class="o">=</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
             <span class="n">var</span> <span class="n">selectedBuffering</span> <span class="o">=</span> <span class="n">GetBuffering</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
             <span class="n">var</span> <span class="n">selectedProtocol</span> <span class="o">=</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
+            <span class="n">var</span> <span class="n">multiplex</span> <span class="o">=</span> <span class="n">GetMultiplex</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
 
             <span class="k">if</span> <span class="p">(</span><span class="n">selectedTransport</span> <span class="o">==</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Http</span><span class="p">)</span>
             <span class="p">{</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">multiplex</span><span class="p">)</span>
+                    <span class="k">throw</span> <span class="k">new</span> <span class="n">Exception</span><span class="p">(</span><span class="s">"This tutorial semple code does not yet allow multiplex over http (although Thrift itself of course does)"</span><span class="p">);</span>
                 <span class="k">new</span> <span class="n">HttpServerSample</span><span class="p">().</span><span class="n">Run</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">);</span>
             <span class="p">}</span>
             <span class="k">else</span>
             <span class="p">{</span>
-                <span class="n">await</span> <span class="n">RunSelectedConfigurationAsync</span><span class="p">(</span><span class="n">selectedTransport</span><span class="p">,</span> <span class="n">selectedBuffering</span><span class="p">,</span> <span class="n">selectedProtocol</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
+                <span class="n">await</span> <span class="n">RunSelectedConfigurationAsync</span><span class="p">(</span><span class="n">selectedTransport</span><span class="p">,</span> <span class="n">selectedBuffering</span><span class="p">,</span> <span class="n">selectedProtocol</span><span class="p">,</span> <span class="n">multiplex</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">Protocol</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+
+        <span class="k">private</span> <span class="k">static</span> <span class="kt">bool</span> <span class="n">GetMultiplex</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-pr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</ [...]
+            <span class="n">var</span> <span class="n">mplex</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-multiplex"</span><span class="p">));</span>
+            <span class="k">return</span> <span class="o">!</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">mplex</span><span class="p">);</span>
+        <span class="p">}</span>
 
-            <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">transport</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Protocol</span> <span class="n">selectedProtocol</span><span class="p">);</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">Protocol</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-pr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</s [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">protocol</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">;</span>
 
-            <span class="k">return</span> <span class="n">selectedProtocol</span><span class="p">;</span>
+            <span class="n">protocol</span> <span class="o">=</span> <span class="n">protocol</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">protocol</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Protocol</span> <span class="n">selectedProtocol</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedProtocol</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">;</span>
         <span class="p">}</span>
 
         <span class="k">private</span> <span class="k">static</span> <span class="n">Buffering</span> <span class="n">GetBuffering</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">var</span> <span class="n">buffering</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-bf"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</ [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">buffering</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">;</span>
 
-            <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">buffering</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">);</span>
-
-            <span class="k">return</span> <span class="n">selectedBuffering</span><span class="p">;</span>
+            <span class="n">buffering</span> <span class="o">=</span> <span class="n">buffering</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">buffering</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span cl [...]
+            <span class="k">if</span><span class="p">(</span> <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">buffering</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedBuffering</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">None</span><span class="p">;</span>
         <span class="p">}</span>
 
         <span class="k">private</span> <span class="k">static</span> <span class="n">Transport</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-tr"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</ [...]
+            <span class="k">if</span> <span class="p">(</span><span class="n">string</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">transport</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Tcp</span><span class="p">;</span>
 
-            <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">transport</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Transport</span> <span class="n">selectedTransport</span><span class="p">);</span>
-
-            <span class="k">return</span> <span class="n">selectedTransport</span><span class="p">;</span>
+            <span class="n">transport</span> <span class="o">=</span> <span class="n">transport</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="n">ToUpperInvariant</span><span class="p">()</span> <span class="o">+</span> <span class="n">transport</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span cl [...]
+            <span class="k">if</span><span class="p">(</span> <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">transport</span><span class="p">,</span> <span class="nb">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">Transport</span> <span class="n">selectedTransport</span><span class="p">))</span>
+                <span class="k">return</span> <span class="n">selectedTransport</span><span class="p">;</span>
+            <span class="k">else</span>
+                <span class="k">return</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Tcp</span><span class="p">;</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunSelectedConfigurationAsync</span><span class="p">(</span><span class="n">Transport</span> <span class="n">transport</span><span class="p">,</span> <span class="n">Buffering</span> <span class="n">buffering</span><span class="p">,</span> <span class="n">Protocol</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">Cancel [...]
+        <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunSelectedConfigurationAsync</span><span class="p">(</span><span class="n">Transport</span> <span class="n">transport</span><span class="p">,</span> <span class="n">Buffering</span> <span class="n">buffering</span><span class="p">,</span> <span class="n">Protocol</span> <span class="n">protocol</span><span class="p">,</span> <span class="kt">bool< [...]
         <span class="p">{</span>
-            <span class="n">var</span> <span class="n">handler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CalculatorAsyncHandler</span><span class="p">();</span>
-
             <span class="n">TServerTransport</span> <span class="n">serverTransport</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
             <span class="k">switch</span> <span class="p">(</span><span class="n">transport</span><span class="p">)</span>
             <span class="p">{</span>
@@ -576,18 +600,15 @@ All Apache Thrift tutorials require that you have:
                     <span class="k">break</span><span class="p">;</span>
             <span class="p">}</span>
 
-            <span class="n">TTransportFactory</span> <span class="n">inputTransportFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
-            <span class="n">TTransportFactory</span> <span class="n">outputTransportFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
+            <span class="n">TTransportFactory</span> <span class="n">transportFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
             <span class="k">switch</span> <span class="p">(</span><span class="n">buffering</span><span class="p">)</span>
             <span class="p">{</span>
                 <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Buffered</span><span class="p">:</span>
-                    <span class="n">inputTransportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputTransportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
+                    <span class="n">transportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
                     <span class="k">break</span><span class="p">;</span>
 
                 <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="n">Framed</span><span class="p">:</span>
-                    <span class="n">inputTransportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputTransportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
+                    <span class="n">transportFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
                     <span class="k">break</span><span class="p">;</span>
 
                 <span class="nl">default:</span> <span class="c1">// layered transport(s) are optional</span>
@@ -595,65 +616,57 @@ All Apache Thrift tutorials require that you have:
                     <span class="k">break</span><span class="p">;</span>
             <span class="p">}</span>
 
-            <span class="n">TProtocolFactory</span> <span class="n">inputProtocolFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
-            <span class="n">TProtocolFactory</span> <span class="n">outputProtocolFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
-            <span class="n">ITAsyncProcessor</span> <span class="n">processor</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
+            <span class="n">TProtocolFactory</span> <span class="n">protocolFactory</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>
             <span class="k">switch</span> <span class="p">(</span><span class="n">protocol</span><span class="p">)</span>
             <span class="p">{</span>
                 <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Binary</span><span class="p">:</span>
-                    <span class="n">inputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">processor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
+                    <span class="n">protocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
                     <span class="k">break</span><span class="p">;</span>
 
                 <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Compact</span><span class="p">:</span>
-                    <span class="n">inputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TCompactProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TCompactProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">processor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
+                    <span class="n">protocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TCompactProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
                     <span class="k">break</span><span class="p">;</span>
 
                 <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Json</span><span class="p">:</span>
-                    <span class="n">inputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TJsonProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TJsonProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">processor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
+                    <span class="n">protocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TJsonProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
                     <span class="k">break</span><span class="p">;</span>
 
-                <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="n">Multiplexed</span><span class="p">:</span>
-                    <span class="n">inputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-                    <span class="n">outputProtocolFactory</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">.</span><span class="n">Factory</span><span class="p">();</span>
-
-                    <span class="n">var</span> <span class="n">calcHandler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CalculatorAsyncHandler</span><span class="p">();</span>
-                    <span class="n">var</span> <span class="n">calcProcessor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">calcHandler</span><span class="p">);</span>
-
-                    <span class="n">var</span> <span class="n">sharedServiceHandler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SharedServiceAsyncHandler</span><span class="p">();</span>
-                    <span class="n">var</span> <span class="n">sharedServiceProcessor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SharedService</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">sharedServiceHandler</span><span class="p">);</span>
+                <span class="nl">default:</span>
+                    <span class="k">throw</span> <span class="k">new</span> <span class="n">ArgumentOutOfRangeException</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">protocol</span><span class="p">),</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">null</span><span class="p">);</span>
+            <span class="p">}</span>
 
-                    <span class="n">var</span> <span class="n">multiplexedProcessor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TMultiplexedProcessor</span><span class="p">();</span>
-                    <span class="n">multiplexedProcessor</span><span class="p">.</span><span class="n">RegisterProcessor</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Calculator</span><span class="p">),</span> <span class="n">calcProcessor</span><span class="p">);</span>
-                    <span class="n">multiplexedProcessor</span><span class="p">.</span><span class="n">RegisterProcessor</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">SharedService</span><span class="p">),</span> <span class="n">sharedServiceProcessor</span><span class="p">);</span>
+            <span class="n">var</span> <span class="n">handler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CalculatorAsyncHandler</span><span class="p">();</span>
+            <span class="n">ITAsyncProcessor</span> <span class="n">processor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
 
-                    <span class="n">processor</span> <span class="o">=</span> <span class="n">multiplexedProcessor</span><span class="p">;</span>
-                    <span class="k">break</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">multiplex</span><span class="p">)</span>
+            <span class="p">{</span>
+                <span class="n">var</span> <span class="n">multiplexedProcessor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TMultiplexedProcessor</span><span class="p">();</span>
+                <span class="n">multiplexedProcessor</span><span class="p">.</span><span class="n">RegisterProcessor</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Calculator</span><span class="p">),</span> <span class="n">processor</span><span class="p">);</span>
 
-                <span class="nl">default:</span>
-                    <span class="k">throw</span> <span class="k">new</span> <span class="n">ArgumentOutOfRangeException</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">protocol</span><span class="p">),</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">null</span><span class="p">);</span>
+                <span class="n">processor</span> <span class="o">=</span> <span class="n">multiplexedProcessor</span><span class="p">;</span>
             <span class="p">}</span>
 
 
             <span class="k">try</span>
             <span class="p">{</span>
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span>
-                    <span class="err">$</span><span class="s">"Selected TAsyncServer with {serverTransport} transport, {processor} processor and {inputProtocolFactory} protocol factories"</span><span class="p">);</span>
+                    <span class="n">string</span><span class="p">.</span><span class="n">Format</span><span class="p">(</span>
+                        <span class="s">"TSimpleAsyncServer with </span><span class="se">\n</span><span class="s">{0} transport</span><span class="se">\n</span><span class="s">{1} buffering</span><span class="se">\n</span><span class="s">multiplex = {2}</span><span class="se">\n</span><span class="s">{3} protocol"</span><span class="p">,</span>
+                        <span class="n">transport</span><span class="p">,</span>
+                        <span class="n">buffering</span><span class="p">,</span>
+                        <span class="n">multiplex</span> <span class="o">?</span> <span class="s">"yes"</span> <span class="o">:</span> <span class="s">"no"</span><span class="p">,</span>
+                        <span class="n">protocol</span>
+                        <span class="p">));</span>
 
                 <span class="n">var</span> <span class="n">loggerFactory</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">().</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">();</span>
 
                 <span class="n">var</span> <span class="n">server</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TSimpleAsyncServer</span><span class="p">(</span>
                     <span class="nl">itProcessorFactory:</span> <span class="k">new</span> <span class="n">TSingletonProcessorFactory</span><span class="p">(</span><span class="n">processor</span><span class="p">),</span>
                     <span class="nl">serverTransport:</span> <span class="n">serverTransport</span><span class="p">,</span>
-                    <span class="nl">inputTransportFactory:</span> <span class="n">inputTransportFactory</span><span class="p">,</span>
-                    <span class="nl">outputTransportFactory:</span> <span class="n">outputTransportFactory</span><span class="p">,</span>
-                    <span class="nl">inputProtocolFactory:</span> <span class="n">inputProtocolFactory</span><span class="p">,</span>
-                    <span class="nl">outputProtocolFactory:</span> <span class="n">outputProtocolFactory</span><span class="p">,</span>
+                    <span class="nl">inputTransportFactory:</span> <span class="n">transportFactory</span><span class="p">,</span>
+                    <span class="nl">outputTransportFactory:</span> <span class="n">transportFactory</span><span class="p">,</span>
+                    <span class="nl">inputProtocolFactory:</span> <span class="n">protocolFactory</span><span class="p">,</span>
+                    <span class="nl">outputProtocolFactory:</span> <span class="n">protocolFactory</span><span class="p">,</span>
                     <span class="nl">logger:</span> <span class="n">loggerFactory</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">TSimpleAsyncServer</span><span class="o">&gt;</span><span class="p">());</span>
 
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Starting the server..."</span><span class="p">);</span>
@@ -722,7 +735,6 @@ All Apache Thrift tutorials require that you have:
             <span class="n">Binary</span><span class="p">,</span>
             <span class="n">Compact</span><span class="p">,</span>
             <span class="n">Json</span><span class="p">,</span>
-            <span class="n">Multiplexed</span>
         <span class="p">}</span>
 
         <span class="k">public</span> <span class="k">class</span> <span class="nc">HttpServerSample</span>
@@ -763,6 +775,8 @@ All Apache Thrift tutorials require that you have:
                 <span class="c1">// This method gets called by the runtime. Use this method to add services to the container.</span>
                 <span class="k">public</span> <span class="kt">void</span> <span class="n">ConfigureServices</span><span class="p">(</span><span class="n">IServiceCollection</span> <span class="n">services</span><span class="p">)</span>
                 <span class="p">{</span>
+                    <span class="c1">// NOTE: this is not really the recommended way to do it</span>
+                    <span class="c1">// because the HTTP server cannot be configured properly to e.g. accept framed or multiplex</span>
                     <span class="n">services</span><span class="p">.</span><span class="n">AddTransient</span><span class="o">&lt;</span><span class="n">Calculator</span><span class="p">.</span><span class="n">IAsync</span><span class="p">,</span> <span class="n">CalculatorAsyncHandler</span><span class="o">&gt;</span><span class="p">();</span>
                     <span class="n">services</span><span class="p">.</span><span class="n">AddTransient</span><span class="o">&lt;</span><span class="n">ITAsyncProcessor</span><span class="p">,</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">AsyncProcessor</span><span class="o">&gt;</span><span class="p">();</span>
                     <span class="n">services</span><span class="p">.</span><span class="n">AddTransient</span><span class="o">&lt;</span><span class="n">THttpServerTransport</span><span class="p">,</span> <span class="n">THttpServerTransport</span><span class="o">&gt;</span><span class="p">();</span>
@@ -771,6 +785,8 @@ All Apache Thrift tutorials require that you have:
                 <span class="c1">// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.</span>
                 <span class="k">public</span> <span class="kt">void</span> <span class="n">Configure</span><span class="p">(</span><span class="n">IApplicationBuilder</span> <span class="n">app</span><span class="p">,</span> <span class="n">IWebHostEnvironment</span> <span class="n">env</span><span class="p">,</span> <span class="n">ILoggerFactory</span> <span class="n">loggerFactory</span><span class="p">)</span>
                 <span class="p">{</span>
+                    <span class="n">_</span> <span class="o">=</span> <span class="n">env</span><span class="p">;</span>
+                    <span class="n">_</span> <span class="o">=</span> <span class="n">loggerFactory</span><span class="p">;</span>
                     <span class="n">app</span><span class="p">.</span><span class="n">UseMiddleware</span><span class="o">&lt;</span><span class="n">THttpServerTransport</span><span class="o">&gt;</span><span class="p">();</span>
                 <span class="p">}</span>
             <span class="p">}</span>
@@ -807,26 +823,10 @@ All Apache Thrift tutorials require that you have:
             <span class="p">{</span>
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"CalculateAsync({logid}, [{w.Op},{w.Num1},{w.Num2}])"</span><span class="p">);</span>
 
-                <span class="n">var</span> <span class="n">val</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+                <span class="kt">int</span> <span class="n">val</span><span class="p">;</span>
                 <span class="k">switch</span> <span class="p">(</span><span class="n">w</span><span class="p">.</span><span class="n">Op</span><span class="p">)</span>
                 <span class="p">{</span>
                     <span class="k">case</span> <span class="n">Operation</span><span class="p">.</span><span class="n">ADD</span><span class="p">:</span>
-                        <span class="n">val</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">Num1</span> <span class="o">+</span> <span class="n">w</span><span class="p">.</span><span class="n">Num2</span><span class="p">;</span>
-                        <span class="k">break</span><span class="p">;</span>
-
-                    <span class="k">case</span> <span class="n">Operation</span><span class="p">.</span><span class="n">SUBTRACT</span><span class="p">:</span>
-                        <span class="n">val</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">Num1</span> <span class="o">-</span> <span class="n">w</span><span class="p">.</span><span class="n">Num2</span><span class="p">;</span>
-                        <span class="k">break</span><span class="p">;</span>
-
-                    <span class="k">case</span> <span class="n">Operation</span><span class="p">.</span><span class="n">MULTIPLY</span><span class="p">:</span>
-                        <span class="n">val</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">Num1</span> <span class="o">*</span> <span class="n">w</span><span class="p">.</span><span class="n">Num2</span><span class="p">;</span>
-                        <span class="k">break</span><span class="p">;</span>
-
-                    <span class="k">case</span> <span class="n">Operation</span><span class="p">.</span><span class="n">DIVIDE</span><span class="p">:</span>
-                        <span class="k">if</span> <span class="p">(</span><span class="n">w</span><span class="p">.</span><span class="n">Num2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-                        <span class="p">{</span>
-                            <span class="n">var</span> <span class="n">io</span> <span class="o">=</span> <span class="k">new</span> <span class="n">InvalidOperation</span>
-                            <span class="p">{</span>
 </code></pre></div>
 <p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
 <a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/netstd/Server/Program.cs">tutorial/netstd/Server/Program.cs</a>