You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by bu...@apache.org on 2019/10/16 21:27:43 UTC

svn commit: r1051593 [2/2] - in /websites/staging/thrift/trunk/content: ./ docs/ docs/committers/ docs/install/ lib/ test/ tutorial/

Modified: websites/staging/thrift/trunk/content/tutorial/netstd.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/netstd.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/netstd.html Wed Oct 16 21:27:43 2019
@@ -131,12 +131,15 @@ h2:hover > .headerlink, h3:hover > .head
 <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="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">System</span><span class="p">.</span><span class="n">Diagnostics</span><span class="p">;</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">readonly</span> <span class="n">ILogger</span> <span class="n">Logger</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoggerFactory</span><span class="p">().</span><span class="n">AddConsole</span><span class="p">().</span><span class="n">AddDebug</span><span class="p">().</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Client</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">ILogger</span> <span class="n">Logger</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>
@@ -145,17 +148,20 @@ h2:hover > .headerlink, h3:hover > .head
     <span class="n">Client</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="n">help</span>
         <span class="n">will</span> <span class="n">diplay</span> <span class="n">help</span> <span class="n">information</span>
 
-    <span class="n">Client</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="nl">tr:</span><span class="o">&lt;</span><span class="n">transport</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">pr:</span><span class="o">&lt;</span><span class="n">protocol</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">mc:</span><span class="o">&lt;</span><span class="n">numClients</span><span class="o">&gt;</span>
+    <span class="n">Client</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="nl">tr:</span><span class="o">&lt;</span><span class="n">transport</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">bf:</span><span class="o">&lt;</span><span class="n">buffering</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">pr:</span><span class="o">&lt;</span><span class="n">protocol</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">mc:</span><span class="o">&lt;</span><span class="n">numClients</span><span class="o">&gt;</span>
         <span class="n">will</span> <span class="n">run</span> <span class="n">client</span> <span class="n">with</span> <span class="n">specified</span> <span class="n">arguments</span> <span class="p">(</span><span class="n">tcp</span> <span class="n">transport</span> <span class="n">and</span> <span class="n">binary</span> <span class="n">protocol</span> <span class="n">by</span> <span class="k">default</span><span class="p">)</span> <span class="n">and</span> <span class="n">with</span> <span class="mi">1</span> <span class="n">client</span>
 
 <span class="nl">Options:</span>
     <span class="o">-</span><span class="n">tr</span> <span class="p">(</span><span class="n">transport</span><span class="p">)</span><span class="o">:</span> 
         <span class="n">tcp</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">tcp</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
-        <span class="n">tcpbuffered</span> <span class="o">-</span> <span class="n">buffered</span> <span class="n">transport</span> <span class="n">over</span> <span class="n">tcp</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
         <span class="n">namedpipe</span> <span class="o">-</span> <span class="n">namedpipe</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">pipe</span> <span class="n">address</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="p">.</span><span class="n">test</span><span class="s">&quot;&quot;</span><span class="p">)</span>
         <span class="n">http</span> <span class="o">-</span> <span class="n">http</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">address</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="nl">http:</span><span class="c1">//localhost:9090&quot;&quot;)        </span>
         <span class="n">tcptls</span> <span class="o">-</span> <span class="n">tcp</span> <span class="n">tls</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
-        <span class="n">framed</span> <span class="o">-</span> <span class="n">tcp</span> <span class="n">framed</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
+
+    <span class="o">-</span><span class="n">bf</span> <span class="p">(</span><span class="n">buffering</span><span class="p">)</span><span class="o">:</span> 
+        <span class="n">none</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">no</span> <span class="n">buffering</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+        <span class="n">buffered</span> <span class="o">-</span> <span class="n">buffered</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+        <span class="n">framed</span> <span class="o">-</span> <span class="n">framed</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
 
     <span class="o">-</span><span class="n">pr</span> <span class="p">(</span><span class="n">protocol</span><span class="p">)</span><span class="o">:</span> 
         <span class="n">binary</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">binary</span> <span class="n">protocol</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
@@ -175,6 +181,9 @@ h2:hover > .headerlink, h3:hover > .head
         <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">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
+            <span class="n">Logger</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">().</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">().</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Client</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">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-help&quot;</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span class="p">)))</span>
             <span class="p">{</span>
                 <span class="n">DisplayHelp</span><span class="p">();</span>
@@ -189,6 +198,13 @@ h2:hover > .headerlink, h3:hover > .head
             <span class="p">}</span>
         <span class="p">}</span>
 
+        <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</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">RunAsync</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">CancellationToken</span> <span class="n">cancellationToken</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">GetNumberOfClients</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
@@ -227,29 +243,57 @@ h2:hover > .headerlink, h3:hover > .head
 
         <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="p">{</span>
-            <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-tr&quot;</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">)</span><span class="o">?</span><span class="p">[</span><span class="mi">1</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">Transport</span> <span class="n">selectedTransport</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">transport</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="n">out</span> <span class="n">selectedTransport</span><span class="p">))</span>
+            <span class="c1">// construct endpoint transport</span>
+            <span class="n">var</span> <span class="n">transportArg</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-tr&quot;</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">)</span><span class="o">?</span><span class="p">[</span><span class="mi">1</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">transportArg</span><span class="p">,</span> <span class="kc">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="p">{</span>
                 <span class="k">switch</span> <span class="p">(</span><span class="n">selectedTransport</span><span class="p">)</span>
                 <span class="p">{</span>
                     <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">Tcp:</span>
-                        <span class="k">return</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">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="k">break</span><span class="p">;</span>
+
                     <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">NamedPipe:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">TNamedPipeTransport</span><span class="p">(</span><span class="s">&quot;.test&quot;</span><span class="p">);</span>
+                        <span class="n">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TNamedPipeTransport</span><span class="p">(</span><span class="s">&quot;.test&quot;</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
+
                     <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">Http:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">THttpTransport</span><span class="p">(</span><span class="k">new</span> <span class="n">Uri</span><span class="p">(</span><span class="s">&quot;http://localhost:9090&quot;</span><span class="p">),</span> <span class="n">null</span><span class="p">);</span>
-                    <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">TcpBuffered:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">(</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">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">THttpTransport</span><span class="p">(</span><span class="k">new</span> <span class="n">Uri</span><span class="p">(</span><span class="s">&quot;http://localhost:9090&quot;</span><span class="p">),</span> <span class="n">null</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
+
                     <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">TcpTls:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">TTlsSocketTransport</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">GetCertificate</span><span class="p">(),</span> <span class="n">CertValidator</span><span class="p">,</span> <span class="n">LocalCertificateSelectionCallback</span><span class="p">);</span>
-                    <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">Framed:</span>
-                        <span class="k">return</span> <span class="k">new</span> <span class="n">TFramedTransport</span><span class="p">(</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">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TTlsSocketTransport</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">GetCertificate</span><span class="p">(),</span> <span class="n">CertValidator</span><span class="p">,</span> <span class="n">LocalCertificateSelectionCallback</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
+
+                    <span class="k">default</span><span class="o">:</span>
+                        <span class="n">Debug</span><span class="p">.</span><span class="n">Assert</span><span class="p">(</span><span class="kc">false</span><span class="p">,</span> <span class="s">&quot;unhandled case&quot;</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
+                <span class="p">}</span>
+            <span class="p">}</span>
+
+            <span class="c1">// optionally add layered transport(s)</span>
+            <span class="n">var</span> <span class="n">bufferingArg</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-bf&quot;</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">)</span><span class="o">?</span><span class="p">[</span><span class="mi">1</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="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">bufferingArg</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">))</span>
+            <span class="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="nl">Buffered:</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="nl">Framed:</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">default</span><span class="o">:</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">&quot;unhandled case&quot;</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
                 <span class="p">}</span>
             <span class="p">}</span>
 
-            <span class="k">return</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="k">return</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="kt">int</span> <span class="n">GetNumberOfClients</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
@@ -319,6 +363,9 @@ h2:hover > .headerlink, h3:hover > .head
                     <span class="k">case</span> <span class="n">Protocol</span><span class="p">.</span><span class="nl">Multiplexed:</span>
                         <span class="c1">// it returns BinaryProtocol to avoid making wrapped protocol as public in TProtocolDecorator (in RunClientAsync it will be wrapped into Multiplexed protocol)</span>
                         <span class="k">return</span> <span class="k">new</span> <span class="n">Tuple</span><span class="o">&lt;</span><span class="n">Protocol</span><span class="p">,</span> <span class="n">TProtocol</span><span class="o">&gt;</span><span class="p">(</span><span class="n">selectedProtocol</span><span class="p">,</span> <span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
+                    <span class="k">default</span><span class="o">:</span>
+                        <span class="n">Debug</span><span class="p">.</span><span class="n">Assert</span><span class="p">(</span><span class="kc">false</span><span class="p">,</span> <span class="s">&quot;unhandled case&quot;</span><span class="p">);</span>
+                        <span class="k">break</span><span class="p">;</span>
                 <span class="p">}</span>
             <span class="p">}</span>
 
@@ -407,52 +454,6 @@ h2:hover > .headerlink, h3:hover > .head
             <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">&quot;{client.ClientId} CalculateAsync(1)&quot;</span><span class="p">);</span>
-                <span class="n">var</span> <span class="n">diff</span> <span class="o">=</span> <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">calculateAsync</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="err">$</span><span class="s">&quot;{client.ClientId} 15-10={diff}&quot;</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">&quot;{client.ClientId} Invalid operation: &quot;</span> <span class="o">+</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">&quot;{client.ClientId} GetStructAsync(1)&quot;</span><span class="p">);</span>
-            <span class="n">var</span> <span class="n">log</span> <span class="o">=</span> <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">getStructAsync</span><span class="p">(</span><span class="mi">1</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="err">$</span><span class="s">&quot;{client.ClientId} Check log: {log.Value}&quot;</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">&quot;{client.ClientId} ZipAsync() with delay 100mc on server side&quot;</span><span class="p">);</span>
-            <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">zipAsync</span><span class="p">(</span><span class="n">cancellationToken</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">ExecuteSharedServiceClientOperations</span><span class="p">(</span><span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">,</span> <span class="n">SharedService</span><span class="p">.</span><span class="n">Client</span> <span class="n">client</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>
-
-            <span class="c1">// Async version</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">&quot;{client.ClientId} SharedService GetStructAsync(1)&quot;</span><span class="p">);</span>
-            <span class="n">var</span> <span class="n">log</span> <span class="o">=</span> <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">getStructAsync</span><span class="p">(</span><span class="mi">1</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="err">$</span><span class="s">&quot;{client.ClientId} SharedService Value: {log.Value}&quot;</span><span class="p">);</span>
-        <span class="p">}</span>
-
-
-        <span class="k">private</span> <span class="k">enum</span> <span class="n">Transport</span>
-        <span class="p">{</span>
-            <span class="n">Tcp</span><span class="p">,</span>
-            <span class="n">NamedPipe</span><span class="p">,</span>
-            <span class="n">Http</span><span class="p">,</span>
-            <span class="n">TcpBuffered</span><span class="p">,</span>
-            <span class="n">Framed</span><span class="p">,</span>
-            <span class="n">TcpTls</span>
-        <span class="p">}</span>
-
-        <span class="k">private</span> <span class="k">enum</span> <span class="n">Protocol</span>
-        <span class="p">{</span>
-            <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="p">}</span>
-<span class="p">}</span>
 </pre></div>
 
 <p class='snippet_footer'>
@@ -494,17 +495,23 @@ h2:hover > .headerlink, h3:hover > .head
 <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="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">readonly</span> <span class="n">ILogger</span> <span class="n">Logger</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoggerFactory</span><span class="p">().</span><span class="n">AddConsole</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">).</span><span class="n">AddDebug</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">).</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Server</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">ILogger</span> <span class="n">Logger</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="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">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
+            <span class="n">Logger</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">().</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">().</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Server</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">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-help&quot;</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span class="p">)))</span>
             <span class="p">{</span>
                 <span class="n">DisplayHelp</span><span class="p">();</span>
@@ -524,6 +531,13 @@ h2:hover > .headerlink, h3:hover > .head
             <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">&quot;Server stopped&quot;</span><span class="p">);</span>
         <span class="p">}</span>
 
+        <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</span><span class="p">();</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>
             <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">&quot;</span>
@@ -531,17 +545,20 @@ h2:hover > .headerlink, h3:hover > .head
     <span class="n">Server</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="n">help</span>
         <span class="n">will</span> <span class="n">diplay</span> <span class="n">help</span> <span class="n">information</span>
 
-    <span class="n">Server</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="nl">tr:</span><span class="o">&lt;</span><span class="n">transport</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">pr:</span><span class="o">&lt;</span><span class="n">protocol</span><span class="o">&gt;</span>
-        <span class="n">will</span> <span class="n">run</span> <span class="n">server</span> <span class="n">with</span> <span class="n">specified</span> <span class="n">arguments</span> <span class="p">(</span><span class="n">tcp</span> <span class="n">transport</span> <span class="n">and</span> <span class="n">binary</span> <span class="n">protocol</span> <span class="n">by</span> <span class="k">default</span><span class="p">)</span>
+    <span class="n">Server</span><span class="p">.</span><span class="n">exe</span> <span class="o">-</span><span class="nl">tr:</span><span class="o">&lt;</span><span class="n">transport</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">bf:</span><span class="o">&lt;</span><span class="n">buffering</span><span class="o">&gt;</span> <span class="o">-</span><span class="nl">pr:</span><span class="o">&lt;</span><span class="n">protocol</span><span class="o">&gt;</span>
+        <span class="n">will</span> <span class="n">run</span> <span class="n">server</span> <span class="n">with</span> <span class="n">specified</span> <span class="n">arguments</span> <span class="p">(</span><span class="n">tcp</span> <span class="n">transport</span><span class="p">,</span> <span class="n">no</span> <span class="n">buffering</span><span class="p">,</span> <span class="n">and</span> <span class="n">binary</span> <span class="n">protocol</span> <span class="n">by</span> <span class="k">default</span><span class="p">)</span>
 
 <span class="nl">Options:</span>
     <span class="o">-</span><span class="n">tr</span> <span class="p">(</span><span class="n">transport</span><span class="p">)</span><span class="o">:</span> 
         <span class="n">tcp</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">tcp</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
-        <span class="n">tcpbuffered</span> <span class="o">-</span> <span class="n">tcp</span> <span class="n">buffered</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
         <span class="n">namedpipe</span> <span class="o">-</span> <span class="n">namedpipe</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">pipe</span> <span class="n">address</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="p">.</span><span class="n">test</span><span class="s">&quot;&quot;</span><span class="p">)</span>
         <span class="n">http</span> <span class="o">-</span> <span class="n">http</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">http</span> <span class="n">address</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="nl">localhost:</span><span class="mi">9090</span><span class="s">&quot;&quot;</span><span class="p">)</span>
         <span class="n">tcptls</span> <span class="o">-</span> <span class="n">tcp</span> <span class="n">transport</span> <span class="n">with</span> <span class="n">tls</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
-        <span class="n">framed</span> <span class="o">-</span> <span class="n">tcp</span> <span class="n">framed</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span> <span class="p">(</span><span class="n">host</span> <span class="o">-</span> <span class="s">&quot;&quot;</span><span class="n">localhost</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">port</span> <span class="o">-</span> <span class="mi">9090</span><span class="p">)</span>
+
+    <span class="o">-</span><span class="n">bf</span> <span class="p">(</span><span class="n">buffering</span><span class="p">)</span><span class="o">:</span> 
+        <span class="n">none</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">no</span> <span class="n">buffering</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+        <span class="n">buffered</span> <span class="o">-</span> <span class="n">buffered</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+        <span class="n">framed</span> <span class="o">-</span> <span class="n">framed</span> <span class="n">transport</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
 
     <span class="o">-</span><span class="n">pr</span> <span class="p">(</span><span class="n">protocol</span><span class="p">)</span><span class="o">:</span> 
         <span class="n">binary</span> <span class="o">-</span> <span class="p">(</span><span class="k">default</span><span class="p">)</span> <span class="n">binary</span> <span class="n">protocol</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
@@ -557,6 +574,7 @@ h2:hover > .headerlink, h3:hover > .head
         <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunAsync</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">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
         <span class="p">{</span>
             <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="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>
@@ -565,7 +583,7 @@ h2:hover > .headerlink, h3:hover > .head
             <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">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">cancellationToken</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">}</span>
 
@@ -578,6 +596,15 @@ h2:hover > .headerlink, h3:hover > .head
             <span class="k">return</span> <span class="n">selectedProtocol</span><span class="p">;</span>
         <span class="p">}</span>
 
+        <span class="k">private</span> <span class="k">static</span> <span class="n">Buffering</span> <span class="n">GetBuffering</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">var</span> <span class="n">buffering</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-bf&quot;</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</span><span class="p">(</span><span class="s">&quot;:&quot;</span><span class="p">)</span><span class="o">?</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+            <span class="n">Enum</span><span class="p">.</span><span class="n">TryParse</span><span class="o">&lt;</span><span class="n">Buffering</span><span class="o">&gt;</span><span class="p">(</span><span class="n">buffering</span><span class="p">,</span> <span class="n">out</span> <span class="n">var</span> <span class="n">selectedBuffering</span><span class="p">);</span>
+
+            <span class="k">return</span> <span class="n">selectedBuffering</span><span class="p">;</span>
+        <span class="p">}</span>
+
         <span class="k">private</span> <span class="k">static</span> <span class="n">Transport</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">&quot;-tr&quot;</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">)</span><span class="o">?</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
@@ -587,61 +614,67 @@ h2:hover > .headerlink, h3:hover > .head
             <span class="k">return</span> <span class="n">selectedTransport</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">Protocol</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</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">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
         <span class="p">{</span>
-            <span class="n">var</span> <span class="n">fabric</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoggerFactory</span><span class="p">().</span><span class="n">AddConsole</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">).</span><span class="n">AddDebug</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</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="n">null</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>
                 <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">Tcp:</span>
                     <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TServerSocketTransport</span><span class="p">(</span><span class="mi">9090</span><span class="p">);</span>
                     <span class="k">break</span><span class="p">;</span>
-                <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">TcpBuffered:</span>
-                    <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TServerSocketTransport</span><span class="p">(</span><span class="nl">port:</span> <span class="mi">9090</span><span class="p">,</span> <span class="nl">clientTimeout:</span> <span class="mi">10000</span><span class="p">,</span> <span class="nl">useBufferedSockets:</span> <span class="kc">true</span><span class="p">);</span>
-                    <span class="k">break</span><span class="p">;</span>
                 <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">NamedPipe:</span>
                     <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TNamedPipeServerTransport</span><span class="p">(</span><span class="s">&quot;.test&quot;</span><span class="p">);</span>
                     <span class="k">break</span><span class="p">;</span>
                 <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">TcpTls:</span>
-                    <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TTlsServerSocketTransport</span><span class="p">(</span><span class="mi">9090</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="n">GetCertificate</span><span class="p">(),</span> <span class="n">ClientCertValidator</span><span class="p">,</span> <span class="n">LocalCertificateSelectionCallback</span><span class="p">);</span>
-                    <span class="k">break</span><span class="p">;</span>
-                <span class="k">case</span> <span class="n">Transport</span><span class="p">.</span><span class="nl">Framed:</span>
-                    <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TServerFramedTransport</span><span class="p">(</span><span class="mi">9090</span><span class="p">);</span>
+                    <span class="n">serverTransport</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TTlsServerSocketTransport</span><span class="p">(</span><span class="mi">9090</span><span class="p">,</span> <span class="n">GetCertificate</span><span class="p">(),</span> <span class="n">ClientCertValidator</span><span class="p">,</span> <span class="n">LocalCertificateSelectionCallback</span><span class="p">);</span>
                     <span class="k">break</span><span class="p">;</span>
             <span class="p">}</span>
 
-            <span class="n">ITProtocolFactory</span> <span class="n">inputProtocolFactory</span><span class="p">;</span>
-            <span class="n">ITProtocolFactory</span> <span class="n">outputProtocolFactory</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="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="nl">Buffered:</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="k">break</span><span class="p">;</span>
+
+                <span class="k">case</span> <span class="n">Buffering</span><span class="p">.</span><span class="nl">Framed:</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="k">break</span><span class="p">;</span>
+
+                <span class="k">default</span><span class="o">:</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">buffering</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">&quot;unhandled case&quot;</span><span class="p">);</span>
+                    <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="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="nl">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="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="nl">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="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="nl">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="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="nl">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>
 
@@ -656,20 +689,31 @@ h2:hover > .headerlink, h3:hover > .head
                     <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">processor</span> <span class="o">=</span> <span class="n">multiplexedProcessor</span><span class="p">;</span>
-                <span class="p">}</span>
                     <span class="k">break</span><span class="p">;</span>
+
                 <span class="k">default</span><span class="o">:</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="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">&quot;Selected TAsyncServer with {serverTransport} transport, {processor} processor and {inputProtocolFactory} protocol factories&quot;</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="n">processor</span><span class="p">,</span> <span class="n">serverTransport</span><span class="p">,</span> <span class="n">inputProtocolFactory</span><span class="p">,</span> <span class="n">outputProtocolFactory</span><span class="p">,</span> <span class="n">fabric</span><span class="p">);</span>
+                <span class="n">var</span> <span class="n">loggerFactory</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">().</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">();</span>
+
+                <span class="n">var</span> <span class="n">server</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TSimpleAsyncServer</span><span class="p">(</span>
+                    <span class="nl">itProcessorFactory:</span> <span class="k">new</span> <span class="n">TSingletonProcessorFactory</span><span class="p">(</span><span class="n">processor</span><span class="p">),</span>
+                    <span class="nl">serverTransport:</span> <span class="n">serverTransport</span><span class="p">,</span>
+                    <span class="nl">inputTransportFactory:</span> <span class="n">inputTransportFactory</span><span class="p">,</span>
+                    <span class="nl">outputTransportFactory:</span> <span class="n">outputTransportFactory</span><span class="p">,</span>
+                    <span class="nl">inputProtocolFactory:</span> <span class="n">inputProtocolFactory</span><span class="p">,</span>
+                    <span class="nl">outputProtocolFactory:</span> <span class="n">outputProtocolFactory</span><span class="p">,</span>
+                    <span class="nl">logger:</span> <span class="n">loggerFactory</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">TSimpleAsyncServer</span><span class="o">&gt;</span><span class="p">());</span>
 
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">&quot;Starting the server...&quot;</span><span class="p">);</span>
+
                 <span class="n">await</span> <span class="n">server</span><span class="p">.</span><span class="n">ServeAsync</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">x</span><span class="p">)</span>
@@ -717,11 +761,16 @@ h2:hover > .headerlink, h3:hover > .head
         <span class="k">private</span> <span class="k">enum</span> <span class="n">Transport</span>
         <span class="p">{</span>
             <span class="n">Tcp</span><span class="p">,</span>
-            <span class="n">TcpBuffered</span><span class="p">,</span>
             <span class="n">NamedPipe</span><span class="p">,</span>
             <span class="n">Http</span><span class="p">,</span>
             <span class="n">TcpTls</span><span class="p">,</span>
-            <span class="n">Framed</span>
+        <span class="p">}</span>
+
+        <span class="k">private</span> <span class="k">enum</span> <span class="n">Buffering</span>
+        <span class="p">{</span>
+            <span class="n">None</span><span class="p">,</span>
+            <span class="n">Buffered</span><span class="p">,</span>
+            <span class="n">Framed</span><span class="p">,</span>
         <span class="p">}</span>
 
         <span class="k">private</span> <span class="k">enum</span> <span class="n">Protocol</span>
@@ -746,8 +795,11 @@ h2:hover > .headerlink, h3:hover > .head
                     <span class="p">.</span><span class="n">UseUrls</span><span class="p">(</span><span class="s">&quot;http://localhost:9090&quot;</span><span class="p">)</span>
                     <span class="p">.</span><span class="n">UseContentRoot</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="p">.</span><span class="n">UseStartup</span><span class="o">&lt;</span><span class="n">Startup</span><span class="o">&gt;</span><span class="p">()</span>
+                    <span class="p">.</span><span class="n">ConfigureLogging</span><span class="p">((</span><span class="n">ctx</span><span class="p">,</span><span class="n">logging</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">))</span>
                     <span class="p">.</span><span class="n">Build</span><span class="p">();</span>
 
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogTrace</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogCritical</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">);</span>
                 <span class="n">host</span><span class="p">.</span><span class="n">RunAsync</span><span class="p">(</span><span class="n">cancellationToken</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>
 
@@ -773,8 +825,7 @@ h2:hover > .headerlink, h3:hover > .head
                 <span class="p">}</span>
 
                 <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">IHostingEnvironment</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="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">IHostingEnvironment</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">app</span><span class="p">.</span><span class="n">UseMiddleware</span><span class="o">&lt;</span><span class="n">THttpServerTransport</span><span class="o">&gt;</span><span class="p">();</span>
                 <span class="p">}</span>
@@ -835,56 +886,6 @@ h2:hover > .headerlink, h3:hover > .head
                                 <span class="n">WhatOp</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</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">Why</span> <span class="o">=</span> <span class="s">&quot;Cannot divide by 0&quot;</span>
                             <span class="p">};</span>
-
-                            <span class="k">throw</span> <span class="n">io</span><span class="p">;</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">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="p">)</span> <span class="n">w</span><span class="p">.</span><span class="n">Op</span><span class="p">,</span>
-                            <span class="n">Why</span> <span class="o">=</span> <span class="s">&quot;Unknown operation&quot;</span>
-                        <span class="p">};</span>
-
-                        <span class="k">throw</span> <span class="n">io</span><span class="p">;</span>
-                    <span class="p">}</span>
-                <span class="p">}</span>
-
-                <span class="n">var</span> <span class="n">entry</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SharedStruct</span>
-                <span class="p">{</span>
-                    <span class="n">Key</span> <span class="o">=</span> <span class="n">logid</span><span class="p">,</span>
-                    <span class="n">Value</span> <span class="o">=</span> <span class="n">val</span><span class="p">.</span><span class="n">ToString</span><span class="p">()</span>
-                <span class="p">};</span>
-
-                <span class="n">_log</span><span class="p">[</span><span class="n">logid</span><span class="p">]</span> <span class="o">=</span> <span class="n">entry</span><span class="p">;</span>
-
-                <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">val</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="n">zipAsync</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">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">&quot;ZipAsync() with delay 100mc&quot;</span><span class="p">);</span>
-                <span class="n">await</span> <span class="n">Task</span><span class="p">.</span><span class="n">Delay</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="n">CancellationToken</span><span class="p">.</span><span class="n">None</span><span class="p">);</span>
-            <span class="p">}</span>
-        <span class="p">}</span>
-
-        <span class="k">public</span> <span class="k">class</span> <span class="nc">SharedServiceAsyncHandler</span> <span class="o">:</span> <span class="n">SharedService</span><span class="p">.</span><span class="n">IAsync</span>
-        <span class="p">{</span>
-            <span class="k">public</span> <span class="n">async</span> <span class="n">Task</span><span class="o">&lt;</span><span class="n">SharedStruct</span><span class="o">&gt;</span> <span class="n">getStructAsync</span><span class="p">(</span><span class="kt">int</span> <span class="n">key</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">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">&quot;GetStructAsync({0})&quot;</span><span class="p">,</span> <span class="n">key</span><span class="p">);</span>
-                <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="k">new</span> <span class="n">SharedStruct</span><span class="p">()</span>
-                <span class="p">{</span>
-                    <span class="n">Key</span> <span class="o">=</span> <span class="n">key</span><span class="p">,</span>
-                    <span class="n">Value</span> <span class="o">=</span> <span class="s">&quot;GetStructAsync&quot;</span>
-                <span class="p">});</span>
-            <span class="p">}</span>
-        <span class="p">}</span>
-    <span class="p">}</span>
-<span class="p">}</span>
 </pre></div>
 
 <p class='snippet_footer'>

Modified: websites/staging/thrift/trunk/content/tutorial/nodejs.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/nodejs.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/nodejs.html Wed Oct 16 21:27:43 2019
@@ -253,7 +253,6 @@ h2:hover > .headerlink, h3:hover > .head
 
   <span class="nx">zip</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
     <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;zip()&quot;</span><span class="p">);</span>
-    <span class="nx">result</span><span class="p">(</span><span class="kc">null</span><span class="p">);</span>
   <span class="p">}</span>
 
 <span class="p">});</span>

Modified: websites/staging/thrift/trunk/content/tutorial/perl.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/perl.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/perl.html Wed Oct 16 21:27:43 2019
@@ -200,6 +200,7 @@ h2:hover > .headerlink, h3:hover > .head
 <span class="n">use</span> <span class="n">lib</span> <span class="s1">&#39;../gen-perl&#39;</span><span class="p">;</span>
 <span class="n">use</span> <span class="no">Thrift</span><span class="o">::</span><span class="no">Socket</span><span class="p">;</span>
 <span class="n">use</span> <span class="no">Thrift</span><span class="o">::</span><span class="no">Server</span><span class="p">;</span>
+<span class="n">use</span> <span class="no">Thrift</span><span class="o">::</span><span class="no">ServerSocket</span><span class="p">;</span>
 <span class="n">use</span> <span class="n">tutorial</span><span class="o">::</span><span class="no">Calculator</span><span class="p">;</span>
 
 <span class="n">package</span> <span class="no">CalculatorHandler</span><span class="p">;</span>
@@ -259,7 +260,6 @@ h2:hover > .headerlink, h3:hover > .head
 
   <span class="n">my</span> <span class="vg">$log</span> <span class="o">=</span> <span class="n">shared</span><span class="o">::</span><span class="no">SharedStruct</span><span class="o">-&gt;</span><span class="kp">new</span><span class="p">();</span>
   <span class="vg">$log</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">(</span><span class="vg">$logid</span><span class="p">);</span>
-  <span class="vg">$log</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">(</span><span class="n">int</span><span class="p">(</span><span class="vg">$val</span><span class="p">));</span>
 </pre></div>
 
 <p class='snippet_footer'>

Modified: websites/staging/thrift/trunk/content/tutorial/php.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/php.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/php.html Wed Oct 16 21:27:43 2019
@@ -121,7 +121,7 @@ h2:hover > .headerlink, h3:hover > .head
 
 <span class="nb">error_reporting</span><span class="p">(</span><span class="k">E_ALL</span><span class="p">);</span>
 
-<span class="k">require_once</span> <span class="nx">__DIR__</span><span class="o">.</span><span class="s1">&#39;/../../lib/php/lib/ClassLoader/ThriftClassLoader.php&#39;</span><span class="p">;</span>
+<span class="k">require_once</span> <span class="nx">__DIR__</span><span class="o">.</span><span class="s1">&#39;/../../vendor/autoload.php&#39;</span><span class="p">;</span>
 
 <span class="k">use</span> <span class="nx">Thrift\ClassLoader\ThriftClassLoader</span><span class="p">;</span>
 
@@ -129,8 +129,8 @@ h2:hover > .headerlink, h3:hover > .head
 
 <span class="nv">$loader</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ThriftClassLoader</span><span class="p">();</span>
 <span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;Thrift&#39;</span><span class="p">,</span> <span class="nx">__DIR__</span> <span class="o">.</span> <span class="s1">&#39;/../../lib/php/lib&#39;</span><span class="p">);</span>
-<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerDefinition</span><span class="p">(</span><span class="s1">&#39;shared&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
-<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerDefinition</span><span class="p">(</span><span class="s1">&#39;tutorial&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
+<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;shared&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
+<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;tutorial&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
 <span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">register</span><span class="p">();</span>
 
 <span class="cm">/*</span>
@@ -231,7 +231,7 @@ h2:hover > .headerlink, h3:hover > .head
 
 <span class="nb">error_reporting</span><span class="p">(</span><span class="k">E_ALL</span><span class="p">);</span>
 
-<span class="k">require_once</span> <span class="nx">__DIR__</span><span class="o">.</span><span class="s1">&#39;/../../lib/php/lib/ClassLoader/ThriftClassLoader.php&#39;</span><span class="p">;</span>
+<span class="k">require_once</span> <span class="nx">__DIR__</span><span class="o">.</span><span class="s1">&#39;/../../vendor/autoload.php&#39;</span><span class="p">;</span>
 
 <span class="k">use</span> <span class="nx">Thrift\ClassLoader\ThriftClassLoader</span><span class="p">;</span>
 
@@ -239,8 +239,8 @@ h2:hover > .headerlink, h3:hover > .head
 
 <span class="nv">$loader</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ThriftClassLoader</span><span class="p">();</span>
 <span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;Thrift&#39;</span><span class="p">,</span> <span class="nx">__DIR__</span> <span class="o">.</span> <span class="s1">&#39;/../../lib/php/lib&#39;</span><span class="p">);</span>
-<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerDefinition</span><span class="p">(</span><span class="s1">&#39;shared&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
-<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerDefinition</span><span class="p">(</span><span class="s1">&#39;tutorial&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
+<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;shared&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
+<span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">registerNamespace</span><span class="p">(</span><span class="s1">&#39;tutorial&#39;</span><span class="p">,</span> <span class="nv">$GEN_DIR</span><span class="p">);</span>
 <span class="nv">$loader</span><span class="o">-&gt;</span><span class="na">register</span><span class="p">();</span>
 
 <span class="cm">/*</span>