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 b3dbb64 Automatic Site Publish by Buildbot
b3dbb64 is described below
commit b3dbb641c215faa9b21ada482ee4035b7a1a8bb1
Author: buildbot <[email protected]>
AuthorDate: Mon Dec 9 15:35:00 2024 +0000
Automatic Site Publish by Buildbot
---
output/tutorial/netstd.html | 144 ++++++++++++++++++++++----------------------
1 file changed, 72 insertions(+), 72 deletions(-)
diff --git a/output/tutorial/netstd.html b/output/tutorial/netstd.html
index 09a16ea..7987cd6 100644
--- a/output/tutorial/netstd.html
+++ b/output/tutorial/netstd.html
@@ -68,8 +68,8 @@ All Apache Thrift tutorials require that you have:
<h3 id="client">Client</h3>
-<div class="highlight"><pre class="codehilite"><code><span
class="k">using</span> <span class="n">System</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Collections</span><span
class="p">.</span><span class="n">Generic</span><span class="p">;</span>
+<div class="highlight"><pre class="codehilite"><code><span
class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Logging</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">System</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="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">IO</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Linq</span><span class="p">;</span>
@@ -78,17 +78,13 @@ All Apache Thrift tutorials require that you have:
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Security</span><span class="p">.</span><span
class="n">Cryptography</span><span class="p">.</span><span
class="n">X509Certificates</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Threading</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Threading</span><span class="p">.</span><span
class="n">Tasks</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Logging</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">DependencyInjection</span><span
class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Protocol</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Transport</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Transport</span><span class="p">.</span><span
class="n">Client</span><span class="p">;</span>
<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 class="cp">#pragma warning disable IDE0057 // substr
</span>
<span class="k">namespace</span> <span class="n">Client</span>
<span class="p">{</span>
@@ -111,7 +107,7 @@ All Apache Thrift tutorials require that you have:
<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">readonly</span> <span class="n">ILogger</span> <span
class="n">Logger</span> <span class="o">=</span> <span
class="n">LoggingHelper</span><span class="p">.</span><span
class="n">CreateLogger</span><span class="o"><</span><span
class="n">Program</span><span class="o">></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">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="k">new</span><span class="p">();</span>
<span class="k">private</span> <span class="k">static</span> <span
class="kt">void</span> <span class="n">DisplayHelp</span><span
class="p">()</span>
<span class="p">{</span>
@@ -150,11 +146,12 @@ All Apache Thrift tutorials require that you have:
</span><span class="s">"</span><span class="p">);</span>
<span class="p">}</span>
- <span class="k">public</span> <span class="k">static</span> <span
class="kt">void</span> <span class="nf">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="k">public</span> <span class="k">static</span> <span
class="n">async</span> <span class="n">Task</span> <span
class="nf">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">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">args</span> <span class="o">??=</span> <span
class="p">[];</span>
- <span class="k">if</span> <span class="p">(</span><span
class="n">args</span><span class="p">.</span><span class="n">Any</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">"-help"</span><span class="p">,</span> <span
class="n">StringComparison</span><span class="p">.</span><span
class="n">OrdinalIgnoreCase</span><span class= [...]
+ <span class="c1">// -help is rather unusual but we leave it for
compatibility</span>
+ <span class="k">if</span> <span class="p">(</span><span
class="n">args</span><span class="p">.</span><span class="n">Any</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">Equals</span><span
class="p">(</span><span class="s">"-help"</span><span class="p">)</span> <span
class="o">||</span> <span class="n">x</span><span class="p">.</span><span
class="n">Equals</span><span class="p"> [...]
<span class="p">{</span>
<span class="n">DisplayHelp</span><span class="p">();</span>
<span class="k">return</span><span class="p">;</span>
@@ -162,10 +159,8 @@ 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="s">"Starting client..."</span><span class="p">);</span>
- <span class="k">using</span> <span class="p">(</span><span
class="n">var</span> <span class="n">source</span> <span class="o">=</span>
<span class="k">new</span> <span class="nf">CancellationTokenSource</span><span
class="p">())</span>
- <span class="p">{</span>
- <span class="n">RunAsync</span><span class="p">(</span><span
class="n">args</span><span class="p">,</span> <span
class="n">source</span><span class="p">.</span><span
class="n">Token</span><span class="p">).</span><span
class="n">GetAwaiter</span><span class="p">().</span><span
class="n">GetResult</span><span class="p">();</span>
- <span class="p">}</span>
+ <span class="k">using</span> <span class="n">var</span> <span
class="n">source</span> <span class="o">=</span> <span class="k">new</span>
<span class="nf">CancellationTokenSource</span><span class="p">();</span>
+ <span class="n">await</span> <span class="nf">RunAsync</span><span
class="p">(</span><span class="n">args</span><span class="p">,</span> <span
class="n">source</span><span class="p">.</span><span
class="n">Token</span><span class="p">);</span>
<span class="p">}</span>
@@ -203,7 +198,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Protocol</span> <span class="nf">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="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>
@@ -216,7 +211,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Buffering</span> <span class="nf">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="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>
@@ -229,7 +224,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Transport</span> <span class="nf">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="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>
@@ -244,7 +239,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">TTransport</span> <span class="nf">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">TTransport</span> <span class="n">transport</span>
<span class="o">=</span> <span class="n">null</span><span class="p">;</span>
+ <span class="n">TTransport</span><span class="o">?</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>
@@ -294,7 +289,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="kt">int</span> <span class="nf">GetNumberOfClients</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">numClients</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">"-mc"</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">numClients</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">"-mc"</span><span class="p">))</span><span
class="o">?</span><span class="p">.</span><span class="n">Split< [...]
<span class="n">Logger</span><span class="p">.</span><span
class="n">LogInformation</span><span class="p">(</span><span
class="s">"Selected # of clients: {numClients}"</span><span class="p">,</span>
<span class="n">numClients</span><span class="p">);</span>
@@ -307,35 +302,42 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">X509Certificate2</span> <span class="nf">GetCertificate</span><span
class="p">()</span>
<span class="p">{</span>
<span class="c1">// due to files location in net core better to
take certs from top folder</span>
- <span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span> <span class="n">GetCertPath</span><span
class="p">(</span><span class="n">Directory</span><span class="p">.</span><span
class="n">GetParent</span><span class="p">(</span><span
class="n">Directory</span><span class="p">.</span><span
class="n">GetCurrentDirectory</span><span class="p">()));</span>
- <span class="k">return</span> <span class="k">new</span> <span
class="n">X509Certificate2</span><span class="p">(</span><span
class="n">certFile</span><span class="p">,</span> <span
class="s">"ThriftTest"</span><span class="p">);</span>
+ <span class="n">var</span> <span class="n">dir</span> <span
class="o">=</span> <span class="n">Directory</span><span
class="p">.</span><span class="n">GetParent</span><span class="p">(</span><span
class="n">Directory</span><span class="p">.</span><span
class="n">GetCurrentDirectory</span><span class="p">());</span>
+ <span class="k">if</span> <span class="p">(</span><span
class="n">dir</span> <span class="o">!=</span> <span class="n">null</span><span
class="p">)</span>
+ <span class="p">{</span>
+ <span class="n">var</span> <span class="n">certFile</span>
<span class="o">=</span> <span class="n">GetCertPath</span><span
class="p">(</span><span class="n">dir</span><span class="p">);</span>
+ <span class="c1">//return new X509Certificate2(certFile,
"ThriftTest");</span>
+ <span class="k">return</span> <span
class="n">X509CertificateLoader</span><span class="p">.</span><span
class="n">LoadPkcs12FromFile</span><span class="p">(</span><span
class="n">certFile</span><span class="p">,</span> <span
class="s">"ThriftTest"</span><span class="p">);</span>
+ <span class="p">}</span>
+ <span class="k">else</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="s">"Root path of
{path} not found"</span><span class="p">,</span> <span
class="n">Directory</span><span class="p">.</span><span
class="n">GetCurrentDirectory</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="err">$</span><span class="s">"Root path of
{Directory.GetCurrentDirectory()} not found"</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">string</span> <span class="nf">GetCertPath</span><span
class="p">(</span><span class="n">DirectoryInfo</span> <span
class="n">di</span><span class="p">,</span> <span class="kt">int</span> <span
class="n">maxCount</span> <span class="o">=</span> <span
class="mi">6</span><span class="p">)</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="n">string</span> <span class="nf">GetCertPath</span><span
class="p">(</span><span class="n">DirectoryInfo</span><span class="o">?</span>
<span class="n">di</span><span class="p">,</span> <span class="kt">int</span>
<span class="n">maxCount</span> <span class="o">=</span> <span
class="mi">6</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">var</span> <span class="n">topDir</span> <span
class="o">=</span> <span class="n">di</span><span class="p">;</span>
- <span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span>
- <span class="n">topDir</span><span class="p">.</span><span
class="n">EnumerateFiles</span><span class="p">(</span><span
class="s">"ThriftTest.pfx"</span><span class="p">,</span> <span
class="n">SearchOption</span><span class="p">.</span><span
class="n">AllDirectories</span><span class="p">)</span>
- <span class="p">.</span><span
class="n">FirstOrDefault</span><span class="p">();</span>
+ <span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span> <span class="n">topDir</span><span class="o">?</span><span
class="p">.</span><span class="n">EnumerateFiles</span><span
class="p">(</span><span class="s">"ThriftTest.pfx"</span><span
class="p">,</span> <span class="n">SearchOption</span><span
class="p">.</span><span class="n">AllDirectories</span><span
class="p">).</span><span class="n">FirstOrDefault</span><span
class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span
class="n">certFile</span> <span class="o">==</span> <span
class="n">null</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span
class="n">maxCount</span> <span class="o">==</span> <span
class="mi">0</span><span class="p">)</span>
<span class="k">throw</span> <span class="k">new</span>
<span class="n">FileNotFoundException</span><span class="p">(</span><span
class="s">"Cannot find file in directories"</span><span class="p">);</span>
- <span class="k">return</span> <span
class="n">GetCertPath</span><span class="p">(</span><span
class="n">di</span><span class="p">.</span><span class="n">Parent</span><span
class="p">,</span> <span class="n">maxCount</span> <span class="o">-</span>
<span class="mi">1</span><span class="p">);</span>
+ <span class="k">return</span> <span
class="n">GetCertPath</span><span class="p">(</span><span
class="n">di</span><span class="o">?</span><span class="p">.</span><span
class="n">Parent</span><span class="p">,</span> <span class="o">--</span><span
class="n">maxCount</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">certFile</span><span
class="p">.</span><span class="n">FullName</span><span class="p">;</span>
<span class="p">}</span>
- <span class="k">private</span> <span class="k">static</span> <span
class="n">X509Certificate</span> <span
class="nf">LocalCertificateSelectionCallback</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="n">X509Certificate2</span> <span
class="nf">LocalCertificateSelectionCallback</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span>
<span class="n">string</span> <span
class="n">targetHost</span><span class="p">,</span> <span
class="n">X509CertificateCollection</span> <span
class="n">localCertificates</span><span class="p">,</span>
- <span class="n">X509Certificate</span> <span
class="n">remoteCertificate</span><span class="p">,</span> <span
class="n">string</span><span class="p">[]</span> <span
class="n">acceptableIssuers</span><span class="p">)</span>
+ <span class="n">X509Certificate</span><span class="o">?</span>
<span class="n">remoteCertificate</span><span class="p">,</span> <span
class="n">string</span><span class="p">[]</span> <span
class="n">acceptableIssuers</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span
class="n">GetCertificate</span><span class="p">();</span>
<span class="p">}</span>
- <span class="k">private</span> <span class="k">static</span> <span
class="kt">bool</span> <span class="nf">CertValidator</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span> <span
class="n">X509Certificate</span> <span class="n">certificate</span><span
class="p">,</span>
- <span class="n">X509Chain</span> <span class="n">chain</span><span
class="p">,</span> <span class="n">SslPolicyErrors</span> <span
class="n">sslPolicyErrors</span><span class="p">)</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="kt">bool</span> <span class="nf">CertValidator</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span> <span
class="n">X509Certificate</span><span class="o">?</span> <span
class="n">certificate</span><span class="p">,</span> <span
class="n">X509Chain</span><span class="o">?</span> <span
class="n">chain</span><span class="p">,</span> <span class="n">S [...]
<span class="p">{</span>
<span class="k">return</span> <span class="nb">true</span><span
class="p">;</span>
<span class="p">}</span>
@@ -405,8 +407,6 @@ All Apache Thrift tutorials require that you have:
<span class="n">await</span> <span
class="n">client</span><span class="p">.</span><span
class="n">calculate</span><span class="p">(</span><span
class="mi">1</span><span class="p">,</span> <span class="n">work</span><span
class="p">,</span> <span class="n">cancellationToken</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">"{client.ClientId} Whoa we can divide by 0"</span><span
class="p">,</span> <span class="n">client</span><span class="p">.</span><span
class="n">ClientId</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>
</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>
@@ -414,7 +414,13 @@ All Apache Thrift tutorials require that you have:
<h3 id="server">Server</h3>
-<div class="highlight"><pre class="codehilite"><code><span
class="k">using</span> <span class="n">System</span><span class="p">;</span>
+<div class="highlight"><pre class="codehilite"><code><span
class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">AspNetCore</span><span
class="p">.</span><span class="n">Builder</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">AspNetCore</span><span
class="p">.</span><span class="n">Hosting</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Configuration</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">DependencyInjection</span><span
class="p">;</span>
+<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Logging</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">shared</span><span
class="p">;</span>
+<span class="k">using</span> <span class="n">System</span><span
class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Collections</span><span
class="p">.</span><span class="n">Generic</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">IO</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Linq</span><span class="p">;</span>
@@ -422,20 +428,13 @@ All Apache Thrift tutorials require that you have:
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Security</span><span class="p">.</span><span
class="n">Cryptography</span><span class="p">.</span><span
class="n">X509Certificates</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Threading</span><span class="p">;</span>
<span class="k">using</span> <span class="n">System</span><span
class="p">.</span><span class="n">Threading</span><span class="p">.</span><span
class="n">Tasks</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">AspNetCore</span><span
class="p">.</span><span class="n">Builder</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">AspNetCore</span><span
class="p">.</span><span class="n">Hosting</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Configuration</span><span class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">DependencyInjection</span><span
class="p">;</span>
-<span class="k">using</span> <span class="n">Microsoft</span><span
class="p">.</span><span class="n">Extensions</span><span
class="p">.</span><span class="n">Logging</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">;</span>
+<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">Thrift</span><span
class="p">.</span><span class="n">Protocol</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Server</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Transport</span><span class="p">;</span>
<span class="k">using</span> <span class="n">Thrift</span><span
class="p">.</span><span class="n">Transport</span><span class="p">.</span><span
class="n">Server</span><span class="p">;</span>
<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="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 IDE0057 // substr
</span>
@@ -460,27 +459,25 @@ All Apache Thrift tutorials require that you have:
<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">readonly</span> <span class="n">ILogger</span> <span
class="n">Logger</span> <span class="o">=</span> <span
class="n">LoggingHelper</span><span class="p">.</span><span
class="n">CreateLogger</span><span class="o"><</span><span
class="n">Program</span><span class="o">></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">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="k">new</span><span class="p">();</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="k">public</span> <span class="k">static</span> <span
class="n">async</span> <span class="n">Task</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">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">args</span> <span class="o">??=</span> <span
class="p">[];</span>
- <span class="k">if</span> <span class="p">(</span><span
class="n">args</span><span class="p">.</span><span class="n">Any</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">"-help"</span><span class="p">,</span> <span
class="n">StringComparison</span><span class="p">.</span><span
class="n">OrdinalIgnoreCase</span><span class= [...]
+ <span class="c1">// -help is rather unusual but we leave it for
compatibility</span>
+ <span class="k">if</span> <span class="p">(</span><span
class="n">args</span><span class="p">.</span><span class="n">Any</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">Equals</span><span
class="p">(</span><span class="s">"-help"</span><span class="p">)</span> <span
class="o">||</span> <span class="n">x</span><span class="p">.</span><span
class="n">Equals</span><span class="p"> [...]
<span class="p">{</span>
<span class="n">DisplayHelp</span><span class="p">();</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
- <span class="k">using</span> <span class="p">(</span><span
class="n">var</span> <span class="n">source</span> <span class="o">=</span>
<span class="k">new</span> <span class="nf">CancellationTokenSource</span><span
class="p">())</span>
- <span class="p">{</span>
- <span class="n">RunAsync</span><span class="p">(</span><span
class="n">args</span><span class="p">,</span> <span
class="n">source</span><span class="p">.</span><span
class="n">Token</span><span class="p">).</span><span
class="n">GetAwaiter</span><span class="p">().</span><span
class="n">GetResult</span><span class="p">();</span>
+ <span class="k">using</span> <span class="n">var</span> <span
class="n">source</span> <span class="o">=</span> <span class="k">new</span>
<span class="nf">CancellationTokenSource</span><span class="p">();</span>
+ <span class="n">await</span> <span class="nf">RunAsync</span><span
class="p">(</span><span class="n">args</span><span class="p">,</span> <span
class="n">source</span><span class="p">.</span><span
class="n">Token</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">"Press
any key to stop..."</span><span class="p">);</span>
-
- <span class="n">Console</span><span class="p">.</span><span
class="n">ReadLine</span><span class="p">();</span>
- <span class="n">source</span><span class="p">.</span><span
class="n">Cancel</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="s">"Press
any key to stop..."</span><span class="p">);</span>
+ <span class="n">Console</span><span class="p">.</span><span
class="n">ReadLine</span><span class="p">();</span>
+ <span class="n">source</span><span class="p">.</span><span
class="n">Cancel</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">"Server
stopped"</span><span class="p">);</span>
<span class="p">}</span>
@@ -548,7 +545,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Protocol</span> <span class="nf">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="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>
@@ -561,7 +558,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Buffering</span> <span class="nf">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="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>
@@ -574,7 +571,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">private</span> <span class="k">static</span> <span
class="n">Transport</span> <span class="nf">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="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>
@@ -595,7 +592,7 @@ All Apache Thrift tutorials require that you have:
<span class="n">_</span> <span class="o">=></span> <span
class="k">throw</span> <span class="k">new</span> <span
class="n">ArgumentException</span><span class="p">(</span><span
class="s">"unsupported value $transport"</span><span class="p">,</span> <span
class="n">nameof</span><span class="p">(</span><span
class="n">transport</span><span class="p">)),</span>
<span class="p">};</span>
- <span class="n">TTransportFactory</span> <span
class="n">transportFactory</span> <span class="o">=</span> <span
class="n">buffering</span> <span class="k">switch</span>
+ <span class="n">TTransportFactory</span><span class="o">?</span>
<span class="n">transportFactory</span> <span class="o">=</span> <span
class="n">buffering</span> <span class="k">switch</span>
<span class="p">{</span>
<span class="n">Buffering</span><span class="p">.</span><span
class="n">Buffered</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">Buffering</span><span class="p">.</span><span
class="n">Framed</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>
@@ -657,34 +654,32 @@ All Apache Thrift tutorials require that you have:
<span class="p">{</span>
<span class="c1">// due to files location in net core better to
take certs from top folder</span>
<span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span> <span class="n">GetCertPath</span><span
class="p">(</span><span class="n">Directory</span><span class="p">.</span><span
class="n">GetParent</span><span class="p">(</span><span
class="n">Directory</span><span class="p">.</span><span
class="n">GetCurrentDirectory</span><span class="p">()));</span>
- <span class="k">return</span> <span class="k">new</span> <span
class="n">X509Certificate2</span><span class="p">(</span><span
class="n">certFile</span><span class="p">,</span> <span
class="s">"ThriftTest"</span><span class="p">);</span>
+ <span class="c1">//return new X509Certificate2(certFile,
"ThriftTest");</span>
+ <span class="k">return</span> <span
class="n">X509CertificateLoader</span><span class="p">.</span><span
class="n">LoadPkcs12FromFile</span><span class="p">(</span><span
class="n">certFile</span><span class="p">,</span> <span
class="s">"ThriftTest"</span><span class="p">);</span>
<span class="p">}</span>
- <span class="k">private</span> <span class="k">static</span> <span
class="n">string</span> <span class="nf">GetCertPath</span><span
class="p">(</span><span class="n">DirectoryInfo</span> <span
class="n">di</span><span class="p">,</span> <span class="kt">int</span> <span
class="n">maxCount</span> <span class="o">=</span> <span
class="mi">6</span><span class="p">)</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="n">string</span> <span class="nf">GetCertPath</span><span
class="p">(</span><span class="n">DirectoryInfo</span><span class="o">?</span>
<span class="n">di</span><span class="p">,</span> <span class="kt">int</span>
<span class="n">maxCount</span> <span class="o">=</span> <span
class="mi">6</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">var</span> <span class="n">topDir</span> <span
class="o">=</span> <span class="n">di</span><span class="p">;</span>
- <span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span>
- <span class="n">topDir</span><span class="p">.</span><span
class="n">EnumerateFiles</span><span class="p">(</span><span
class="s">"ThriftTest.pfx"</span><span class="p">,</span> <span
class="n">SearchOption</span><span class="p">.</span><span
class="n">AllDirectories</span><span class="p">)</span>
- <span class="p">.</span><span
class="n">FirstOrDefault</span><span class="p">();</span>
+ <span class="n">var</span> <span class="n">certFile</span> <span
class="o">=</span> <span class="n">topDir</span><span class="o">?</span><span
class="p">.</span><span class="n">EnumerateFiles</span><span
class="p">(</span><span class="s">"ThriftTest.pfx"</span><span
class="p">,</span> <span class="n">SearchOption</span><span
class="p">.</span><span class="n">AllDirectories</span><span
class="p">).</span><span class="n">FirstOrDefault</span><span
class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span
class="n">certFile</span> <span class="o">==</span> <span
class="n">null</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span
class="n">maxCount</span> <span class="o">==</span> <span
class="mi">0</span><span class="p">)</span>
<span class="k">throw</span> <span class="k">new</span>
<span class="n">FileNotFoundException</span><span class="p">(</span><span
class="s">"Cannot find file in directories"</span><span class="p">);</span>
- <span class="k">return</span> <span
class="n">GetCertPath</span><span class="p">(</span><span
class="n">di</span><span class="p">.</span><span class="n">Parent</span><span
class="p">,</span> <span class="n">maxCount</span> <span class="o">-</span>
<span class="mi">1</span><span class="p">);</span>
+ <span class="k">return</span> <span
class="n">GetCertPath</span><span class="p">(</span><span
class="n">di</span><span class="o">?</span><span class="p">.</span><span
class="n">Parent</span><span class="p">,</span> <span class="o">--</span><span
class="n">maxCount</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">certFile</span><span
class="p">.</span><span class="n">FullName</span><span class="p">;</span>
<span class="p">}</span>
- <span class="k">private</span> <span class="k">static</span> <span
class="n">X509Certificate</span> <span
class="nf">LocalCertificateSelectionCallback</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="n">X509Certificate2</span> <span
class="nf">LocalCertificateSelectionCallback</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span>
<span class="n">string</span> <span
class="n">targetHost</span><span class="p">,</span> <span
class="n">X509CertificateCollection</span> <span
class="n">localCertificates</span><span class="p">,</span>
- <span class="n">X509Certificate</span> <span
class="n">remoteCertificate</span><span class="p">,</span> <span
class="n">string</span><span class="p">[]</span> <span
class="n">acceptableIssuers</span><span class="p">)</span>
+ <span class="n">X509Certificate</span><span class="o">?</span>
<span class="n">remoteCertificate</span><span class="p">,</span> <span
class="n">string</span><span class="p">[]</span> <span
class="n">acceptableIssuers</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span
class="n">GetCertificate</span><span class="p">();</span>
<span class="p">}</span>
- <span class="k">private</span> <span class="k">static</span> <span
class="kt">bool</span> <span class="nf">ClientCertValidator</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span> <span
class="n">X509Certificate</span> <span class="n">certificate</span><span
class="p">,</span>
- <span class="n">X509Chain</span> <span class="n">chain</span><span
class="p">,</span> <span class="n">SslPolicyErrors</span> <span
class="n">sslPolicyErrors</span><span class="p">)</span>
+ <span class="k">private</span> <span class="k">static</span> <span
class="kt">bool</span> <span class="nf">ClientCertValidator</span><span
class="p">(</span><span class="n">object</span> <span
class="n">sender</span><span class="p">,</span> <span
class="n">X509Certificate</span><span class="o">?</span> <span
class="n">certificate</span><span class="p">,</span> <span
class="n">X509Chain</span><span class="o">?</span> <span
class="n">chain</span><span class="p">,</span> <span class [...]
<span class="p">{</span>
<span class="k">return</span> <span class="nb">true</span><span
class="p">;</span>
<span class="p">}</span>
@@ -768,7 +763,7 @@ All Apache Thrift tutorials require that you have:
<span class="k">public</span> <span class="k">class</span> <span
class="nc">CalculatorAsyncHandler</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="k">private</span> <span class="n">readonly</span>
<span class="n">Dictionary</span><span class="o"><</span><span
class="kt">int</span><span class="p">,</span> <span
class="n">SharedStruct</span><span class="o">></span> <span
class="n">_log</span> <span class="o">=</span> <span class="k">new</span><span
class="p">();</span>
+ <span class="k">private</span> <span class="n">readonly</span>
<span class="n">Dictionary</span><span class="o"><</span><span
class="kt">int</span><span class="p">,</span> <span
class="n">SharedStruct</span><span class="o">></span> <span
class="n">_log</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">public</span> <span
class="n">CalculatorAsyncHandler</span><span class="p">()</span>
<span class="p">{</span>
@@ -793,12 +788,12 @@ All Apache Thrift tutorials require that you have:
<span class="k">return</span> <span class="n">await</span>
<span class="n">Task</span><span class="p">.</span><span
class="n">FromResult</span><span class="p">(</span><span class="n">num1</span>
<span class="o">+</span> <span class="n">num2</span><span class="p">);</span>
<span class="p">}</span>
- <span class="k">public</span> <span class="n">async</span> <span
class="n">Task</span><span class="o"><</span><span
class="kt">int</span><span class="o">></span> <span
class="n">calculate</span><span class="p">(</span><span class="kt">int</span>
<span class="n">logid</span><span class="p">,</span> <span
class="n">Work</span> <span class="n">w</span><span class="p">,</span> <span
class="n">CancellationToken</span> <span
class="n">cancellationToken</span><span class="p">)</span>
+ <span class="k">public</span> <span class="n">async</span> <span
class="n">Task</span><span class="o"><</span><span
class="kt">int</span><span class="o">></span> <span
class="n">calculate</span><span class="p">(</span><span class="kt">int</span>
<span class="n">logid</span><span class="p">,</span> <span
class="n">Work</span><span class="o">?</span> <span class="n">w</span><span
class="p">,</span> <span class="n">CancellationToken</span> <span
class="n">cancellationToken [...]
<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">"Calculate({logid}, [{w.Op},{w.Num1},{w.Num2}])"</span><span
class="p">,</span> <span class="n">logid</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="n">w</span><span class="p">.</span><span
class="n">Num1</span><span class="p">,</span> <span class="n" [...]
+ <span class="n">Logger</span><span class="p">.</span><span
class="n">LogInformation</span><span class="p">(</span><span
class="s">"Calculate({logid}, [{w.Op},{w.Num1},{w.Num2}])"</span><span
class="p">,</span> <span class="n">logid</span><span class="p">,</span> <span
class="n">w</span><span class="o">?</span><span class="p">.</span><span
class="n">Op</span><span class="p">,</span> <span class="n">w</span><span
class="o">?</span><span class="p">.</span><span class="n">Num [...]
<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="k">switch</span> <span class="p">(</span><span
class="n">w</span><span class="o">?</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>
@@ -827,6 +822,11 @@ All Apache Thrift tutorials require that you have:
<span class="k">break</span><span class="p">;</span>
<span class="k">default</span><span class="o">:</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>
+ <span class="n">WhatOp</span> <span
class="o">=</span> <span class="p">((</span><span class="kt">int</span><span
class="o">?</span><span class="p">)</span><span class="n">w</span><span
class="o">?</span><span class="p">.</span><span class="n">Op</span><span
class="p">)</span> <span class="o">??</span> <span class="o">-</span><span
class="mi">1</span><span class="p">,</span>
+ <span class="n">Why</span> <span
class="o">=</span> <span class="s">"Unknown operation"</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>