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’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><dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
- <version>0.14.0</version>
+ <version>0.14.1</version>
</dependency>
</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 ™</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>
-<?xml version="1.0"?>
-<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
-<!-- Policy file -->
-<cross-domain-policy>
- <allow-access-from domain="*" to-ports="9090,9091" />
-</cross-domain-policy>
-</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 © 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:<transport> -bf:<buffering> -pr:<protocol> -mc:<numClients></span><span class="err">
+</span><span class="s"> Client -tr:<transport> -bf:<buffering> -pr:<protocol> [-mc:<numClients>] [-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"> <numClients> - 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"><</span><span class="n">string</span><span class="o">></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">=></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"><</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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</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"><</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">=></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">=></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">=></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"><</span><span class="n">Buffering</span><span class="o">></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">=></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">=></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">=></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"><</span><span class="n">Buffering</span><span class="o">></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">&&</span> <span class="p">(</span><span class="mi">0</span> <span class="o"><</span> <span class="n">c</span><span class="p">)</span> <span class="o">&&</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">&&</span> <span class="p">(</span><span class="mi">0</span> <span class="o"><</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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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">=></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">></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"><</span><span class="n">string</span><span class="o">></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">=></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:<transport> -bf:<buffering> -pr:<protocol></span><span class="err">
+</span><span class="s"> Server -tr:<transport> -bf:<buffering> -pr:<protocol> [-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">=></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">=></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">=></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">=></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"><</span><span class="n">Buffering</span><span class="o">></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"><</span><span class="n">Buffering</span><span class="o">></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">=></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"><</span><span class="n">ILoggerFactory</span><span class="o">></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"><</span><span class="n">TSimpleAsyncServer</span><span class="o">></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"><</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">></span><span class="p">();</span>
<span class="n">services</span><span class="p">.</span><span class="n">AddTransient</span><span class="o"><</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">></span><span class="p">();</span>
<span class="n">services</span><span class="p">.</span><span class="n">AddTransient</span><span class="o"><</span><span class="n">THttpServerTransport</span><span class="p">,</span> <span class="n">THttpServerTransport</span><span class="o">></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"><</span><span class="n">THttpServerTransport</span><span class="o">></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>