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 2014/09/18 22:13:34 UTC
svn commit: r922737 - in /websites/staging/thrift/trunk/content: ./
tutorial/delphi.html
Author: buildbot
Date: Thu Sep 18 20:13:34 2014
New Revision: 922737
Log:
Staging update by buildbot for thrift
Modified:
websites/staging/thrift/trunk/content/ (props changed)
websites/staging/thrift/trunk/content/tutorial/delphi.html
Propchange: websites/staging/thrift/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Sep 18 20:13:34 2014
@@ -1 +1 @@
-1626064
+1626069
Modified: websites/staging/thrift/trunk/content/tutorial/delphi.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/delphi.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/delphi.html Thu Sep 18 20:13:34 2014
@@ -95,102 +95,102 @@
<li>Thrift requires at least Delphi 2010. Earlier versions and FPC will not work due to the lack of Generics.</li>
</ul>
<h3 id="client">Client</h3>
-<div class="codehilite"><pre><span class="n">program</span> <span class="n">DelphiClient</span><span class="o">;</span>
+<div class="codehilite"><pre><span class="k">program</span> <span class="n">DelphiClient</span><span class="o">;</span>
-<span class="o">{</span><span class="n">$APPTYPE</span> <span class="n">CONSOLE</span><span class="o">}</span>
-<span class="o">{</span><span class="n">$D</span> <span class="err">'</span><span class="n">Copyright</span> <span class="o">(</span><span class="n">c</span><span class="o">)</span> <span class="mi">2012</span> <span class="n">The</span> <span class="n">Apache</span> <span class="n">Software</span> <span class="n">Foundation</span><span class="err">'</span><span class="o">}</span>
+<span class="cm">{$APPTYPE CONSOLE}</span>
+<span class="cm">{$D 'Copyright (c) 2012 The Apache Software Foundation'}</span>
-<span class="n">uses</span>
+<span class="k">uses</span>
<span class="n">SysUtils</span><span class="o">,</span>
- <span class="n">Generics</span><span class="o">.</span><span class="na">Collections</span><span class="o">,</span>
- <span class="n">Thrift</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Collections</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Collections</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Console</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Console</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Utils</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Utils</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Stream</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Stream</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Protocol</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Protocol</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Server</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Server</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Thrift</span><span class="o">.</span><span class="na">Transport</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="o">.</span><span class="na">Transport</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Shared</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">gen</span><span class="o">-</span><span class="n">delphi</span><span class="err">\</span><span class="n">Shared</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">,</span>
- <span class="n">Tutorial</span> <span class="n">in</span> <span class="err">'</span><span class="o">..</span><span class="err">\</span><span class="o">..</span><span class="err">\</span><span class="n">gen</span><span class="o">-</span><span class="n">delphi</span><span class="err">\</span><span class="n">Tutorial</span><span class="o">.</span><span class="na">pas</span><span class="err">'</span><span class="o">;</span>
-
-
-<span class="n">type</span>
- <span class="n">DelphiTutorialClient</span> <span class="o">=</span> <span class="kd">class</span>
- <span class="nc">public</span>
- <span class="kd">class</span> <span class="nc">procedure</span> <span class="n">Main</span><span class="o">;</span>
- <span class="n">end</span><span class="o">;</span>
+ <span class="n">Generics</span><span class="o">.</span><span class="n">Collections</span><span class="o">,</span>
+ <span class="n">Thrift</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Collections</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Collections.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Console</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Console.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Utils</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Utils.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Stream</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Stream.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Protocol</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Protocol.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Server</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Server.pas'</span><span class="o">,</span>
+ <span class="n">Thrift</span><span class="o">.</span><span class="n">Transport</span> <span class="k">in</span> <span class="s">'..\..\..\lib\delphi\src\Thrift.Transport.pas'</span><span class="o">,</span>
+ <span class="n">Shared</span> <span class="k">in</span> <span class="s">'..\..\gen-delphi\Shared.pas'</span><span class="o">,</span>
+ <span class="n">Tutorial</span> <span class="k">in</span> <span class="s">'..\..\gen-delphi\Tutorial.pas'</span><span class="o">;</span>
+
+
+<span class="k">type</span>
+ <span class="n">DelphiTutorialClient</span> <span class="o">=</span> <span class="k">class</span>
+ <span class="kp">public</span>
+ <span class="k">class</span> <span class="k">procedure</span> <span class="nf">Main</span><span class="o">;</span>
+ <span class="k">end</span><span class="o">;</span>
<span class="c1">//--- DelphiTutorialClient ---------------------------------------</span>
-<span class="kd">class</span> <span class="nc">procedure</span> <span class="n">DelphiTutorialClient</span><span class="o">.</span><span class="na">Main</span><span class="o">;</span>
-<span class="n">var</span> <span class="n">transport</span> <span class="o">:</span> <span class="n">ITransport</span><span class="o">;</span>
+<span class="k">class</span> <span class="k">procedure</span> <span class="nc">DelphiTutorialClient</span><span class="o">.</span><span class="nf">Main</span><span class="o">;</span>
+<span class="k">var</span> <span class="n">transport</span> <span class="o">:</span> <span class="n">ITransport</span><span class="o">;</span>
<span class="n">protocol</span> <span class="o">:</span> <span class="n">IProtocol</span><span class="o">;</span>
- <span class="n">client</span> <span class="o">:</span> <span class="n">TCalculator</span><span class="o">.</span><span class="na">Iface</span><span class="o">;</span>
+ <span class="n">client</span> <span class="o">:</span> <span class="n">TCalculator</span><span class="o">.</span><span class="n">Iface</span><span class="o">;</span>
<span class="n">work</span> <span class="o">:</span> <span class="n">IWork</span><span class="o">;</span>
- <span class="n">sum</span><span class="o">,</span> <span class="n">quotient</span><span class="o">,</span> <span class="n">diff</span> <span class="o">:</span> <span class="n">Integer</span><span class="o">;</span>
+ <span class="nb">sum</span><span class="o">,</span> <span class="n">quotient</span><span class="o">,</span> <span class="n">diff</span> <span class="o">:</span> <span class="kt">Integer</span><span class="o">;</span>
<span class="n">log</span> <span class="o">:</span> <span class="n">ISharedStruct</span><span class="o">;</span>
-<span class="n">begin</span>
+<span class="k">begin</span>
<span class="k">try</span>
- <span class="n">transport</span> <span class="o">:=</span> <span class="n">TSocketImpl</span><span class="o">.</span><span class="na">Create</span><span class="o">(</span> <span class="err">'</span><span class="n">localhost</span><span class="err">'</span><span class="o">,</span> <span class="mi">9090</span><span class="o">);</span>
- <span class="n">protocol</span> <span class="o">:=</span> <span class="n">TBinaryProtocolImpl</span><span class="o">.</span><span class="na">Create</span><span class="o">(</span> <span class="n">transport</span><span class="o">);</span>
- <span class="n">client</span> <span class="o">:=</span> <span class="n">TCalculator</span><span class="o">.</span><span class="na">TClient</span><span class="o">.</span><span class="na">Create</span><span class="o">(</span> <span class="n">protocol</span><span class="o">);</span>
+ <span class="n">transport</span> <span class="o">:=</span> <span class="n">TSocketImpl</span><span class="o">.</span><span class="n">Create</span><span class="p">(</span> <span class="s">'localhost'</span><span class="o">,</span> <span class="mi">9090</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">protocol</span> <span class="o">:=</span> <span class="n">TBinaryProtocolImpl</span><span class="o">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">transport</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">client</span> <span class="o">:=</span> <span class="n">TCalculator</span><span class="o">.</span><span class="n">TClient</span><span class="o">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">protocol</span><span class="p">)</span><span class="o">;</span>
- <span class="n">transport</span><span class="o">.</span><span class="na">Open</span><span class="o">;</span>
+ <span class="n">transport</span><span class="o">.</span><span class="n">Open</span><span class="o">;</span>
- <span class="n">client</span><span class="o">.</span><span class="na">ping</span><span class="o">;</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span><span class="err">'</span><span class="n">ping</span><span class="o">()</span><span class="err">'</span><span class="o">);</span>
+ <span class="n">client</span><span class="o">.</span><span class="n">ping</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">'ping()'</span><span class="p">)</span><span class="o">;</span>
- <span class="n">sum</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="na">add</span><span class="o">(</span> <span class="mi">1</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="n">Format</span><span class="o">(</span> <span class="err">'</span><span class="mi">1</span><span class="o">+</span><span class="mi">1</span><span class="o">=%</span><span class="n">d</span><span class="err">'</span><span class="o">,</span> <span class="o">[</span><span class="n">sum</span><span class="o">]));</span>
+ <span class="nb">sum</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="mi">1</span><span class="o">,</span> <span class="mi">1</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="nb">Format</span><span class="p">(</span> <span class="s">'1+1=%d'</span><span class="o">,</span> <span class="p">[</span><span class="nb">sum</span><span class="p">]))</span><span class="o">;</span>
- <span class="n">work</span> <span class="o">:=</span> <span class="n">TWorkImpl</span><span class="o">.</span><span class="na">Create</span><span class="o">;</span>
+ <span class="n">work</span> <span class="o">:=</span> <span class="n">TWorkImpl</span><span class="o">.</span><span class="n">Create</span><span class="o">;</span>
- <span class="n">work</span><span class="o">.</span><span class="na">Op</span> <span class="o">:=</span> <span class="n">TOperation</span><span class="o">.</span><span class="na">DIVIDE</span><span class="o">;</span>
- <span class="n">work</span><span class="o">.</span><span class="na">Num1</span> <span class="o">:=</span> <span class="mi">1</span><span class="o">;</span>
- <span class="n">work</span><span class="o">.</span><span class="na">Num2</span> <span class="o">:=</span> <span class="mi">0</span><span class="o">;</span>
+ <span class="n">work</span><span class="o">.</span><span class="n">Op</span> <span class="o">:=</span> <span class="n">TOperation</span><span class="o">.</span><span class="n">DIVIDE</span><span class="o">;</span>
+ <span class="n">work</span><span class="o">.</span><span class="n">Num1</span> <span class="o">:=</span> <span class="mi">1</span><span class="o">;</span>
+ <span class="n">work</span><span class="o">.</span><span class="n">Num2</span> <span class="o">:=</span> <span class="mi">0</span><span class="o">;</span>
<span class="k">try</span>
- <span class="n">quotient</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="na">calculate</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">work</span><span class="o">);</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="err">'</span><span class="n">Whoa</span> <span class="n">we</span> <span class="n">can</span> <span class="n">divide</span> <span class="n">by</span> <span class="mi">0</span><span class="err">'</span><span class="o">);</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="n">Format</span><span class="o">(</span><span class="err">'</span><span class="mi">1</span><span class="o">/</span><span class="mi">0</span><span class="o">=%</span><span class="n">d</span><span class="err">'</span><span class="o">,[</span><span class="n">quotient</span><span class="o">]));</span>
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">io:</span> <span class="n">TInvalidOperation</span>
- <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="err">'</span><span class="n">Invalid</span> <span class="nl">operation:</span> <span class="err">'</span> <span class="o">+</span> <span class="n">io</span><span class="o">.</span><span class="na">Why</span><span class="o">);</span>
- <span class="n">end</span><span class="o">;</span>
-
- <span class="n">work</span><span class="o">.</span><span class="na">Op</span> <span class="o">:=</span> <span class="n">TOperation</span><span class="o">.</span><span class="na">SUBTRACT</span><span class="o">;</span>
- <span class="n">work</span><span class="o">.</span><span class="na">Num1</span> <span class="o">:=</span> <span class="mi">15</span><span class="o">;</span>
- <span class="n">work</span><span class="o">.</span><span class="na">Num2</span> <span class="o">:=</span> <span class="mi">10</span><span class="o">;</span>
+ <span class="n">quotient</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="n">calculate</span><span class="p">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">work</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="s">'Whoa we can divide by 0'</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="nb">Format</span><span class="p">(</span><span class="s">'1/0=%d'</span><span class="o">,</span><span class="p">[</span><span class="n">quotient</span><span class="p">]))</span><span class="o">;</span>
+ <span class="k">except</span>
+ <span class="k">on</span> <span class="n">io</span><span class="o">:</span> <span class="n">TInvalidOperation</span>
+ <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="s">'Invalid operation: '</span> <span class="o">+</span> <span class="n">io</span><span class="o">.</span><span class="n">Why</span><span class="p">)</span><span class="o">;</span>
+ <span class="k">end</span><span class="o">;</span>
+
+ <span class="n">work</span><span class="o">.</span><span class="n">Op</span> <span class="o">:=</span> <span class="n">TOperation</span><span class="o">.</span><span class="n">SUBTRACT</span><span class="o">;</span>
+ <span class="n">work</span><span class="o">.</span><span class="n">Num1</span> <span class="o">:=</span> <span class="mi">15</span><span class="o">;</span>
+ <span class="n">work</span><span class="o">.</span><span class="n">Num2</span> <span class="o">:=</span> <span class="mi">10</span><span class="o">;</span>
<span class="k">try</span>
- <span class="n">diff</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="na">calculate</span><span class="o">(</span> <span class="mi">1</span><span class="o">,</span> <span class="n">work</span><span class="o">);</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="n">Format</span><span class="o">(</span><span class="err">'</span><span class="mi">15</span><span class="o">-</span><span class="mi">10</span><span class="o">=%</span><span class="n">d</span><span class="err">'</span><span class="o">,</span> <span class="o">[</span><span class="n">diff</span><span class="o">]));</span>
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">io:</span> <span class="n">TInvalidOperation</span>
- <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="err">'</span><span class="n">Invalid</span> <span class="nl">operation:</span> <span class="err">'</span> <span class="o">+</span> <span class="n">io</span><span class="o">.</span><span class="na">Why</span><span class="o">);</span>
- <span class="n">end</span><span class="o">;</span>
-
- <span class="n">log</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="na">getStruct</span><span class="o">(</span><span class="mi">1</span><span class="o">);</span>
- <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="n">Format</span><span class="o">(</span> <span class="err">'</span><span class="n">Check</span> <span class="nl">log:</span> <span class="o">%</span><span class="n">s</span><span class="err">'</span><span class="o">,</span> <span class="o">[</span><span class="n">log</span><span class="o">.</span><span class="na">Value</span><span class="o">]));</span>
-
- <span class="n">transport</span><span class="o">.</span><span class="na">Close</span><span class="o">();</span>
-
- <span class="n">except</span>
- <span class="n">on</span> <span class="n">e</span> <span class="o">:</span> <span class="n">Exception</span>
- <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="na">WriteLine</span><span class="o">(</span> <span class="n">e</span><span class="o">.</span><span class="na">ClassName</span><span class="o">+</span><span class="err">'</span><span class="o">:</span> <span class="err">'</span><span class="o">+</span><span class="n">e</span><span class="o">.</span><span class="na">Message</span><span class="o">);</span>
- <span class="n">end</span><span class="o">;</span>
-<span class="n">end</span><span class="o">;</span>
+ <span class="n">diff</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="n">calculate</span><span class="p">(</span> <span class="mi">1</span><span class="o">,</span> <span class="n">work</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="nb">Format</span><span class="p">(</span><span class="s">'15-10=%d'</span><span class="o">,</span> <span class="p">[</span><span class="n">diff</span><span class="p">]))</span><span class="o">;</span>
+ <span class="k">except</span>
+ <span class="k">on</span> <span class="n">io</span><span class="o">:</span> <span class="n">TInvalidOperation</span>
+ <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="s">'Invalid operation: '</span> <span class="o">+</span> <span class="n">io</span><span class="o">.</span><span class="n">Why</span><span class="p">)</span><span class="o">;</span>
+ <span class="k">end</span><span class="o">;</span>
+
+ <span class="n">log</span> <span class="o">:=</span> <span class="n">client</span><span class="o">.</span><span class="n">getStruct</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">;</span>
+ <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="nb">Format</span><span class="p">(</span> <span class="s">'Check log: %s'</span><span class="o">,</span> <span class="p">[</span><span class="n">log</span><span class="o">.</span><span class="n">Value</span><span class="p">]))</span><span class="o">;</span>
+
+ <span class="n">transport</span><span class="o">.</span><span class="n">Close</span><span class="p">()</span><span class="o">;</span>
+
+ <span class="k">except</span>
+ <span class="k">on</span> <span class="n">e</span> <span class="o">:</span> <span class="n">Exception</span>
+ <span class="k">do</span> <span class="n">Console</span><span class="o">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="n">e</span><span class="o">.</span><span class="n">ClassName</span><span class="o">+</span><span class="s">': '</span><span class="o">+</span><span class="n">e</span><span class="o">.</span><span class="n">Message</span><span class="p">)</span><span class="o">;</span>
+ <span class="k">end</span><span class="o">;</span>
+<span class="k">end</span><span class="o">;</span>
-<span class="n">begin</span>
+<span class="k">begin</span>
<span class="k">try</span>
- <span class="n">DelphiTutorialClient</span><span class="o">.</span><span class="na">Main</span><span class="o">;</span>
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">E:</span> <span class="n">Exception</span> <span class="k">do</span>
- <span class="n">Writeln</span><span class="o">(</span><span class="n">E</span><span class="o">.</span><span class="na">ClassName</span><span class="o">,</span> <span class="err">'</span><span class="o">:</span> <span class="err">'</span><span class="o">,</span> <span class="n">E</span><span class="o">.</span><span class="na">Message</span><span class="o">);</span>
- <span class="n">end</span><span class="o">;</span>
-<span class="n">end</span><span class="o">.</span>
+ <span class="n">DelphiTutorialClient</span><span class="o">.</span><span class="n">Main</span><span class="o">;</span>
+ <span class="k">except</span>
+ <span class="k">on</span> <span class="n">E</span><span class="o">:</span> <span class="n">Exception</span> <span class="k">do</span>
+ <span class="nb">Writeln</span><span class="p">(</span><span class="n">E</span><span class="o">.</span><span class="n">ClassName</span><span class="o">,</span> <span class="s">': '</span><span class="o">,</span> <span class="n">E</span><span class="o">.</span><span class="n">Message</span><span class="p">)</span><span class="o">;</span>
+ <span class="k">end</span><span class="o">;</span>
+<span class="k">end</span><span class="o">.</span>
</pre></div>
<p class='snippet_footer'>
@@ -199,168 +199,137 @@
</p>
<h3 id="server">Server</h3>
-<div class="codehilite"><pre><span class="n">program</span> <span class="n">DelphiServer</span><span class="p">;</span>
-
-<span class="p">{</span><span class="err">$</span><span class="n">APPTYPE</span> <span class="n">CONSOLE</span><span class="p">}</span>
-<span class="p">{</span><span class="err">$</span><span class="n">D</span> <span class="err">'</span><span class="n">Copyright</span> <span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="mi">2012</span> <span class="n">The</span> <span class="n">Apache</span> <span class="n">Software</span> <span class="n">Foundation</span><span class="err">'</span><span class="p">}</span>
-
-<span class="p">{</span><span class="err">$</span><span class="n">Q</span><span class="o">+</span><span class="p">}</span> <span class="c1">// throws exceptions on numeric overflows</span>
-
-<span class="n">uses</span>
- <span class="n">SysUtils</span><span class="p">,</span>
- <span class="n">Generics</span><span class="p">.</span><span class="n">Collections</span><span class="p">,</span>
- <span class="n">Thrift</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Collections</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Collections</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Console</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Console</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Utils</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Utils</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Stream</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Stream</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Protocol</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Protocol</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Server</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Server</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Thrift</span><span class="p">.</span><span class="n">Transport</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">lib</span><span class="err">\</span><span class="n">delphi</span><span class="err">\</span><span class="n">src</span><span class="err">\</span><span class="n">Thrift</span><span class="p">.</span><span class="n">Transport</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Shared</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">gen</span><span class="o">-</span><span class="n">delphi</span><span class="err">\</span><span class="n">Shared</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">,</span>
- <span class="n">Tutorial</span> <span class="n">in</span> <span class="err">'</span><span class="p">..</span><span class="err">\</span><span class="p">..</span><span class="err">\</span><span class="n">gen</span><span class="o">-</span><span class="n">delphi</span><span class="err">\</span><span class="n">Tutorial</span><span class="p">.</span><span class="n">pas</span><span class="err">'</span><span class="p">;</span>
-
-
-<span class="n">type</span>
- <span class="n">TCalculatorHandler</span> <span class="o">=</span> <span class="n">class</span><span class="p">(</span> <span class="n">TInterfacedObject</span><span class="p">,</span> <span class="n">TCalculator</span><span class="p">.</span><span class="n">Iface</span><span class="p">)</span>
- <span class="k">protected</span>
- <span class="n">FLog</span> <span class="o">:</span> <span class="n">TDictionary</span><span class="o"><</span> <span class="n">Integer</span><span class="p">,</span> <span class="n">ISharedStruct</span><span class="o">></span><span class="p">;</span>
-
- <span class="c1">// TSharedService.Iface</span>
- <span class="n">function</span> <span class="n">getStruct</span><span class="p">(</span><span class="nl">key:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">ISharedStruct</span><span class="p">;</span>
-
- <span class="c1">// TCalculator.Iface</span>
- <span class="n">procedure</span> <span class="n">ping</span><span class="p">();</span>
- <span class="n">function</span> <span class="n">add</span><span class="p">(</span><span class="nl">num1:</span> <span class="n">Integer</span><span class="p">;</span> <span class="nl">num2:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
- <span class="n">function</span> <span class="n">calculate</span><span class="p">(</span><span class="nl">logid:</span> <span class="n">Integer</span><span class="p">;</span> <span class="k">const</span> <span class="nl">w:</span> <span class="n">IWork</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
- <span class="n">procedure</span> <span class="n">zip</span><span class="p">();</span>
-
- <span class="k">public</span>
- <span class="n">constructor</span> <span class="n">Create</span><span class="p">;</span>
- <span class="n">destructor</span> <span class="n">Destroy</span><span class="p">;</span> <span class="n">override</span><span class="p">;</span>
-
- <span class="n">end</span><span class="p">;</span>
-
- <span class="n">DelphiTutorialServer</span> <span class="o">=</span> <span class="k">class</span>
- <span class="nc">public</span>
- <span class="k">class</span> <span class="nc">procedure</span> <span class="n">Main</span><span class="p">;</span>
- <span class="n">end</span><span class="p">;</span>
-
-
-<span class="c1">//--- TCalculatorHandler ---------------------------------------------------</span>
-
-
-<span class="n">constructor</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">Create</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="n">inherited</span> <span class="n">Create</span><span class="p">;</span>
- <span class="n">FLog</span> <span class="o">:=</span> <span class="n">TDictionary</span><span class="o"><</span> <span class="n">Integer</span><span class="p">,</span> <span class="n">ISharedStruct</span><span class="o">></span><span class="p">.</span><span class="n">Create</span><span class="p">();</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">destructor</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">Destroy</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="k">try</span>
- <span class="n">FreeAndNil</span><span class="p">(</span> <span class="n">FLog</span><span class="p">);</span>
- <span class="n">finally</span>
- <span class="n">inherited</span> <span class="n">Destroy</span><span class="p">;</span>
- <span class="n">end</span><span class="p">;</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">procedure</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">ping</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="err">'</span><span class="n">ping</span><span class="p">()</span><span class="err">'</span><span class="p">);</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">function</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="nl">num1:</span> <span class="n">Integer</span><span class="p">;</span> <span class="nl">num2:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="n">Format</span><span class="p">(</span> <span class="err">'</span><span class="n">add</span><span class="p">(</span> <span class="o">%</span><span class="n">d</span><span class="p">,</span> <span class="o">%</span><span class="n">d</span><span class="p">)</span><span class="err">'</span><span class="p">,</span> <span class="p">[</span><span class="n">num1</span><span class="p">,</span> <span class="n">num2</span><span class="p">]));</span>
- <span class="n">result</span> <span class="o">:=</span> <span class="n">num1</span> <span class="o">+</span> <span class="n">num2</span><span class="p">;</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">function</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span><span class="nl">logid:</span> <span class="n">Integer</span><span class="p">;</span> <span class="k">const</span> <span class="nl">w:</span> <span class="n">IWork</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
-<span class="n">var</span> <span class="n">entry</span> <span class="o">:</span> <span class="n">ISharedStruct</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="k">try</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="n">Format</span><span class="p">(</span><span class="err">'</span><span class="n">calculate</span><span class="p">(</span> <span class="o">%</span><span class="n">d</span><span class="p">,</span> <span class="p">[</span><span class="o">%</span><span class="n">d</span><span class="p">,</span><span class="o">%</span><span class="n">d</span><span class="p">,</span><span class="o">%</span><span class="n">d</span><span class="p">])</span><span class="err">'</span><span class="p">,</span> <span class="p">[</span><span class="n">logid</span><span class="p">,</span> <span class="n">Ord</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">w</span><span class="p">.</span
><span class="n">Num2</span><span class="p">]));</span>
-
- <span class="k">case</span> <span class="n">w</span><span class="p">.</span><span class="n">Op</span> <span class="n">of</span>
- <span class="n">TOperation</span><span class="p">.</span><span class="n">ADD</span> <span class="o">:</span> <span class="n">result</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="n">TOperation</span><span class="p">.</span><span class="n">SUBTRACT</span> <span class="o">:</span> <span class="n">result</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="n">TOperation</span><span class="p">.</span><span class="n">MULTIPLY</span> <span class="o">:</span> <span class="n">result</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="n">TOperation</span><span class="p">.</span><span class="n">DIVIDE</span> <span class="o">:</span> <span class="n">result</span> <span class="o">:=</span> <span class="n">Round</span><span class="p">(</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">else</span>
- <span class="n">raise</span> <span class="n">TInvalidOperation</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">Ord</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="err">'</span><span class="n">Unknown</span> <span class="n">operation</span><span class="err">'</span><span class="p">);</span>
- <span class="n">end</span><span class="p">;</span>
-
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">e:</span><span class="n">Thrift</span><span class="p">.</span><span class="n">TException</span> <span class="k">do</span> <span class="n">raise</span><span class="p">;</span> <span class="c1">// let Thrift Exceptions pass through</span>
- <span class="n">on</span> <span class="nl">e:</span><span class="n">Exception</span> <span class="k">do</span> <span class="n">raise</span> <span class="n">TInvalidOperation</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">Ord</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">e</span><span class="p">.</span><span class="n">Message</span><span class="p">);</span> <span class="c1">// repackage all other</span>
- <span class="n">end</span><span class="p">;</span>
-
- <span class="n">entry</span> <span class="o">:=</span> <span class="n">TSharedStructImpl</span><span class="p">.</span><span class="n">Create</span><span class="p">;</span>
- <span class="n">entry</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">entry</span><span class="p">.</span><span class="n">Value</span> <span class="o">:=</span> <span class="n">IntToStr</span><span class="p">(</span> <span class="n">result</span><span class="p">);</span>
- <span class="n">FLog</span><span class="p">.</span><span class="n">AddOrSetValue</span><span class="p">(</span> <span class="n">logid</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">function</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">getStruct</span><span class="p">(</span><span class="nl">key:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">ISharedStruct</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="n">Format</span><span class="p">(</span> <span class="err">'</span><span class="n">getStruct</span><span class="p">(</span><span class="o">%</span><span class="n">d</span><span class="p">)</span><span class="err">'</span><span class="p">,</span> <span class="p">[</span><span class="n">key</span><span class="p">]));</span>
- <span class="n">result</span> <span class="o">:=</span> <span class="n">FLog</span><span class="p">[</span><span class="n">key</span><span class="p">];</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="n">procedure</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">zip</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="err">'</span><span class="n">zip</span><span class="p">()</span><span class="err">'</span><span class="p">);</span>
-<span class="n">end</span><span class="p">;</span>
-
-
-<span class="c1">//--- DelphiTutorialServer ----------------------------------------------------------------------</span>
-
-
-<span class="k">class</span> <span class="nc">procedure</span> <span class="n">DelphiTutorialServer</span><span class="p">.</span><span class="n">Main</span><span class="p">;</span>
-<span class="n">var</span> <span class="n">handler</span> <span class="o">:</span> <span class="n">TCalculator</span><span class="p">.</span><span class="n">Iface</span><span class="p">;</span>
- <span class="n">processor</span> <span class="o">:</span> <span class="n">IProcessor</span><span class="p">;</span>
- <span class="n">transport</span> <span class="o">:</span> <span class="n">IServerTransport</span><span class="p">;</span>
- <span class="n">server</span> <span class="o">:</span> <span class="n">IServer</span><span class="p">;</span>
-<span class="n">begin</span>
- <span class="k">try</span>
- <span class="n">handler</span> <span class="o">:=</span> <span class="n">TCalculatorHandler</span><span class="p">.</span><span class="n">Create</span><span class="p">;</span>
- <span class="n">processor</span> <span class="o">:=</span> <span class="n">TCalculator</span><span class="p">.</span><span class="n">TProcessorImpl</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">handler</span><span class="p">);</span>
- <span class="n">transport</span> <span class="o">:=</span> <span class="n">TServerSocketImpl</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="mi">9090</span><span class="p">);</span>
- <span class="n">server</span> <span class="o">:=</span> <span class="n">TSimpleServer</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">processor</span><span class="p">,</span> <span class="n">transport</span><span class="p">);</span>
-
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="err">'</span><span class="n">Starting</span> <span class="n">the</span> <span class="n">server</span><span class="p">...</span><span class="err">'</span><span class="p">);</span>
- <span class="n">server</span><span class="p">.</span><span class="n">Serve</span><span class="p">();</span>
+<p>program DelphiServer;</p>
+<p>{$APPTYPE CONSOLE}
+{$D 'Copyright (c) 2012 The Apache Software Foundation'}</p>
+<p>{$Q+} // throws exceptions on numeric overflows</p>
+<p>uses
+ SysUtils,
+ Generics.Collections,
+ Thrift in '......\lib\delphi\src\Thrift.pas',
+ Thrift.Collections in '......\lib\delphi\src\Thrift.Collections.pas',
+ Thrift.Console in '......\lib\delphi\src\Thrift.Console.pas',
+ Thrift.Utils in '......\lib\delphi\src\Thrift.Utils.pas',
+ Thrift.Stream in '......\lib\delphi\src\Thrift.Stream.pas',
+ Thrift.Protocol in '......\lib\delphi\src\Thrift.Protocol.pas',
+ Thrift.Server in '......\lib\delphi\src\Thrift.Server.pas',
+ Thrift.Transport in '......\lib\delphi\src\Thrift.Transport.pas',
+ Shared in '....\gen-delphi\Shared.pas',
+ Tutorial in '....\gen-delphi\Tutorial.pas';</p>
+<p>type
+ TCalculatorHandler = class( TInterfacedObject, TCalculator.Iface)
+ protected
+ FLog : TDictionary< Integer, ISharedStruct>;</p>
+<div class="codehilite"><pre><span class="c1">// TSharedService.Iface</span>
+<span class="k">function</span> <span class="n">getStruct</span><span class="p">(</span><span class="nl">key:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">ISharedStruct</span><span class="p">;</span>
+
+<span class="c1">// TCalculator.Iface</span>
+<span class="n">procedure</span> <span class="n">ping</span><span class="p">();</span>
+<span class="k">function</span> <span class="n">add</span><span class="p">(</span><span class="nl">num1:</span> <span class="n">Integer</span><span class="p">;</span> <span class="nl">num2:</span> <span class="n">Integer</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
+<span class="k">function</span> <span class="n">calculate</span><span class="p">(</span><span class="nl">logid:</span> <span class="n">Integer</span><span class="p">;</span> <span class="k">const</span> <span class="nl">w:</span> <span class="n">IWork</span><span class="p">)</span><span class="o">:</span> <span class="n">Integer</span><span class="p">;</span>
+<span class="n">procedure</span> <span class="n">zip</span><span class="p">();</span>
+</pre></div>
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">e:</span> <span class="n">Exception</span> <span class="k">do</span> <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="n">e</span><span class="p">.</span><span class="n">Message</span><span class="p">);</span>
- <span class="n">end</span><span class="p">;</span>
- <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="err">'</span><span class="n">done</span><span class="p">.</span><span class="err">'</span><span class="p">);</span>
-<span class="n">end</span><span class="p">;</span>
+<p>public
+ constructor Create;
+ destructor Destroy; override;</p>
+<p>end;</p>
+<p>DelphiTutorialServer = class
+ public
+ class procedure Main;
+ end;</p>
+<p>//--- TCalculatorHandler ---------------------------------------------------</p>
+<p>constructor TCalculatorHandler.Create;
+begin
+ inherited Create;
+ FLog := TDictionary< Integer, ISharedStruct>.Create();
+end;</p>
+<p>destructor TCalculatorHandler.Destroy;
+begin
+ try
+ FreeAndNil( FLog);
+ finally
+ inherited Destroy;
+ end;
+end;</p>
+<p>procedure TCalculatorHandler.ping;
+begin
+ Console.WriteLine( 'ping()');
+end;</p>
+<p>function TCalculatorHandler.add(num1: Integer; num2: Integer): Integer;
+begin
+ Console.WriteLine( Format( 'add( %d, %d)', [num1, num2]));
+ result := num1 + num2;
+end;</p>
+<p>function TCalculatorHandler.calculate(logid: Integer; const w: IWork): Integer;
+var entry : ISharedStruct;
+begin
+ try
+ Console.WriteLine( Format('calculate( %d, [%d,%d,%d])', [logid, Ord(w.Op), w.Num1, w.Num2]));</p>
+<div class="codehilite"><pre><span class="k">case</span> <span class="n">w</span><span class="p">.</span><span class="n">Op</span> <span class="n">of</span>
+ <span class="n">TOperation</span><span class="p">.</span><span class="n">ADD</span> <span class="p">:</span> <span class="n">result</span> <span class="p">:=</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="n">TOperation</span><span class="p">.</span><span class="n">SUBTRACT</span> <span class="p">:</span> <span class="n">result</span> <span class="p">:=</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="n">TOperation</span><span class="p">.</span><span class="n">MULTIPLY</span> <span class="p">:</span> <span class="n">result</span> <span class="p">:=</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="n">TOperation</span><span class="p">.</span><span class="n">DIVIDE</span> <span class="p">:</span> <span class="n">result</span> <span class="p">:=</span> <span class="n">Round</span><span class="p">(</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">else</span>
+ <span class="n">raise</span> <span class="n">TInvalidOperation</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span> <span class="n">Ord</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="s">'Unknown operation'</span><span class="p">);</span>
+<span class="k">end</span><span class="p">;</span>
+</pre></div>
-<span class="n">begin</span>
- <span class="k">try</span>
- <span class="n">DelphiTutorialServer</span><span class="p">.</span><span class="n">Main</span><span class="p">;</span>
- <span class="n">except</span>
- <span class="n">on</span> <span class="nl">E:</span> <span class="n">Exception</span> <span class="k">do</span>
- <span class="n">Writeln</span><span class="p">(</span><span class="n">E</span><span class="p">.</span><span class="n">ClassName</span><span class="p">,</span> <span class="err">'</span><span class="o">:</span> <span class="err">'</span><span class="p">,</span> <span class="n">E</span><span class="p">.</span><span class="n">Message</span><span class="p">);</span>
- <span class="n">end</span><span class="p">;</span>
-<span class="n">end</span><span class="p">.</span>
+<p>except
+ on e:Thrift.TException do raise; // let Thrift Exceptions pass through
+ on e:Exception do raise TInvalidOperation.Create( Ord(w.Op), e.Message); // repackage all other
+ end;</p>
+<p>entry := TSharedStructImpl.Create;
+ entry.Key := logid;
+ entry.Value := IntToStr( result);
+ FLog.AddOrSetValue( logid, entry);
+end;</p>
+<p>function TCalculatorHandler.getStruct(key: Integer): ISharedStruct;
+begin
+ Console.WriteLine( Format( 'getStruct(%d)', [key]));
+ result := FLog[key];
+end;</p>
+<p>procedure TCalculatorHandler.zip;
+begin
+ Console.WriteLine( 'zip()');
+end;</p>
+<p>//--- DelphiTutorialServer ----------------------------------------------------------------------</p>
+<p>class procedure DelphiTutorialServer.Main;
+var handler : TCalculator.Iface;
+ processor : IProcessor;
+ transport : IServerTransport;
+ server : IServer;
+begin
+ try
+ handler := TCalculatorHandler.Create;
+ processor := TCalculator.TProcessorImpl.Create( handler);
+ transport := TServerSocketImpl.Create( 9090);
+ server := TSimpleServer.Create( processor, transport);</p>
+<div class="codehilite"><pre><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span> <span class="s">'Starting the server...'</span><span class="p">);</span>
+<span class="n">server</span><span class="p">.</span><span class="n">Serve</span><span class="p">();</span>
</pre></div>
+
+<p>except
+ on e: Exception do Console.WriteLine( e.Message);
+ end;</p>
+<p>Console.WriteLine('done.');
+end;</p>
+<p>begin
+ try
+ DelphiTutorialServer.Main;
+ except
+ on E: Exception do
+ Writeln(E.ClassName, ': ', E.Message);
+ end;
+end.
<p class='snippet_footer'>
This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
<a href="http://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob;f=tutorial/delphi/DelphiServer/DelphiServer.dpr;hb=HEAD"</a>tutorial/delphi/DelphiServer/DelphiServer.dpr</a>
-</p>
-
+</p></p>
<h2 id="additional-information">Additional Information</h2>
</div>
<div class="container">