You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by jf...@apache.org on 2014/03/05 06:40:02 UTC

svn commit: r1574384 [3/5] - in /thrift/site: ./ content/ content/tutorial/ layouts/ lib/ publish/ publish/about/ publish/developers/ publish/docs/ publish/docs/BuildingFromSource/ publish/docs/HowToContribute/ publish/docs/committers/ publish/docs/com...

Modified: thrift/site/publish/tutorial/delphi/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/delphi/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/delphi/index.html (original)
+++ thrift/site/publish/tutorial/delphi/index.html Wed Mar  5 05:40:00 2014
@@ -68,47 +68,81 @@
   	<div class="container">
 		<h2>Delphi Tutorial</h2>
 
-<hr><h3>Introduction</h3>
+<hr>
+
+<h3>Introduction</h3>
 
 <p>All Apache Thrift tutorials require that you have:</p>
 
 <ol>
-<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details. </li>
+<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details.</li>
 <li>
 <p>Generated the <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file as <a href="/tutorial/">discussed here</a></p>
 
 <pre><code>thrift -r --gen delphi tutorial.thrift
 </code></pre>
 </li>
-<li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+<li><p>Followed all prerequesets listed</p></li>
+</ol>
+
+<h3>Prerequisites</h3>
 
 <ul>
 <li>Thrift requires at least Delphi 2010. Earlier versions and FPC will not work due to the lack of Generics.</li>
-</ul><h3>Client</h3>
+</ul>
+
+<h3>Client</h3>
+
+<pre><code class="language-cpp">program DelphiClient;
+
+{$APPTYPE CONSOLE}
+{$D <span style="color:#D20">'C</span>opyright (c) <span style="color:#00D">2012</span> The Apache Software Foundation<span style="color:#D20">'}</span>
+
+uses
+  SysUtils,
+  Generics.Collections,
+  Thrift in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.pas<span style="color:#D20">',</span>
+  Thrift.Collections in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Collections.pas<span style="color:#D20">',</span>
+  Thrift.Console in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Console.pas<span style="color:#D20">',</span>
+  Thrift.Utils in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Utils.pas<span style="color:#D20">',</span>
+  Thrift.Stream in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Stream.pas<span style="color:#D20">',</span>
+  Thrift.Protocol in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Protocol.pas<span style="color:#D20">',</span>
+  Thrift.Server in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Server.pas<span style="color:#D20">',</span>
+  Thrift.Transport in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Transport.pas<span style="color:#D20">',</span>
+  Shared in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>gen-delphi<span style="color:#F00;background-color:#FAA">\</span>Shared.pas<span style="color:#D20">',</span>
+  Tutorial in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>gen-delphi<span style="color:#F00;background-color:#FAA">\</span>Tutorial.pas<span style="color:#D20">';</span>
+
 
-<p>The client uses the generated code to set up the connection and call the server. Our tutorial uses the binary protocol via sockets.</p>
+type
+  DelphiTutorialClient = <span style="color:#080;font-weight:bold">class</span>
+  <span style="color:#B06;font-weight:bold">public</span>
+    <span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">procedure</span> Main;
+  end;
 
-<div class="CodeRay"><div class="code"><pre><code class="language-delphi"><span style="color:#080;font-weight:bold">class</span> <span style="color:#080;font-weight:bold">procedure</span> DelphiTutorialClient.Main;
-<span style="color:#080;font-weight:bold">var</span> transport : ITransport;
+
+<span style="color:#777">//--- DelphiTutorialClient ---------------------------------------</span>
+
+
+<span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">procedure</span> DelphiTutorialClient.Main;
+var transport : ITransport;
     protocol  : IProtocol;
     client    : TCalculator.Iface;
     work      : IWork;
     sum, quotient, diff : Integer;
     log       : ISharedStruct;
-<span style="color:#080;font-weight:bold">begin</span>
+begin
   <span style="color:#080;font-weight:bold">try</span>
-    transport := TSocketImpl.Create( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">localhost</span><span style="color:#710">'</span></span>, <span style="color:#00D">9090</span>);
+    transport := TSocketImpl.Create( <span style="color:#D20">'l</span>ocalhost<span style="color:#D20">',</span> <span style="color:#00D">9090</span>);
     protocol  := TBinaryProtocolImpl.Create( transport);
     client    := TCalculator.TClient.Create( protocol);
 
     transport.Open;
 
     client.ping;
-    Console.WriteLine(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">ping()</span><span style="color:#710">'</span></span>);
+    Console.WriteLine(<span style="color:#D20">'p</span>ing()<span style="color:#D20">')</span>;
 
     sum := client.add( <span style="color:#00D">1</span>, <span style="color:#00D">1</span>);
-    Console.WriteLine( Format( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">1+1=%d</span><span style="color:#710">'</span></span>, [sum]));
+    Console.WriteLine( Format( <span style="color:#D20">'1</span>+<span style="color:#00D">1</span>=%d<span style="color:#D20">',</span> [sum]));
 
     work := TWorkImpl.Create;
 
@@ -117,133 +151,205 @@
     work.Num2 := <span style="color:#00D">0</span>;
     <span style="color:#080;font-weight:bold">try</span>
       quotient := client.calculate(<span style="color:#00D">1</span>, work);
-      Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Whoa we can divide by 0</span><span style="color:#710">'</span></span>);
-      Console.WriteLine( Format(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">1/0=%d</span><span style="color:#710">'</span></span>,[quotient]));
-    <span style="color:#080;font-weight:bold">except</span>
-      <span style="color:#088;font-weight:bold">on</span> io: TInvalidOperation
-      <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Invalid operation: </span><span style="color:#710">'</span></span> + io.Why);
-    <span style="color:#080;font-weight:bold">end</span>;
+      Console.WriteLine( <span style="color:#D20">'W</span>hoa we can divide by <span style="color:#00D">0</span><span style="color:#D20">')</span>;
+      Console.WriteLine( Format(<span style="color:#D20">'1</span>/<span style="color:#00D">0</span>=%d<span style="color:#D20">',</span>[quotient]));
+    except
+      on io: TInvalidOperation
+      <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( <span style="color:#D20">'I</span>nvalid operation: <span style="color:#D20">' </span>+ io.Why);
+    end;
 
     work.Op   := TOperation.SUBTRACT;
     work.Num1 := <span style="color:#00D">15</span>;
     work.Num2 := <span style="color:#00D">10</span>;
     <span style="color:#080;font-weight:bold">try</span>
       diff := client.calculate( <span style="color:#00D">1</span>, work);
-      Console.WriteLine( Format(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">15-10=%d</span><span style="color:#710">'</span></span>, [diff]));
-    <span style="color:#080;font-weight:bold">except</span>
-      <span style="color:#088;font-weight:bold">on</span> io: TInvalidOperation
-      <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Invalid operation: </span><span style="color:#710">'</span></span> + io.Why);
-    <span style="color:#080;font-weight:bold">end</span>;
+      Console.WriteLine( Format(<span style="color:#D20">'1</span><span style="color:#00D">5</span>-<span style="color:#00D">10</span>=%d<span style="color:#D20">',</span> [diff]));
+    except
+      on io: TInvalidOperation
+      <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( <span style="color:#D20">'I</span>nvalid operation: <span style="color:#D20">' </span>+ io.Why);
+    end;
 
     log := client.getStruct(<span style="color:#00D">1</span>);
-    Console.WriteLine( Format( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Check log: %s</span><span style="color:#710">'</span></span>, [log.Value]));
+    Console.WriteLine( Format( <span style="color:#D20">'C</span>heck log: %s<span style="color:#D20">',</span> [log.Value]));
 
     transport.Close();
 
-  <span style="color:#080;font-weight:bold">except</span>
-    <span style="color:#088;font-weight:bold">on</span> e : Exception
-    <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( e.ClassName+<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">: </span><span style="color:#710">'</span></span>+e.Message);
-  <span style="color:#080;font-weight:bold">end</span>;
-<span style="color:#080;font-weight:bold">end</span>;</code></pre></div></div>
+  except
+    on e : Exception
+    <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( e.ClassName+<span style="color:#D20">':</span> <span style="color:#D20">'+</span>e.Message);
+  end;
+end;
 
-<h3>Server</h3>
 
-<p>The server main code typically sets up the service endpoint as designed by the developer. The setup is quite similar to the client, except that we use the TServerSocketImpl and need an interface handler instance which will handle the incoming requests.</p>
-
-<div class="CodeRay"><div class="code"><pre><code class="language-delphi"><span style="color:#080;font-weight:bold">class</span> <span style="color:#080;font-weight:bold">procedure</span> DelphiTutorialServer.Main;
-<span style="color:#080;font-weight:bold">var</span> handler   : TCalculator.Iface;
-    processor : IProcessor;
-    transport : IServerTransport;
-    server    : IServer;
-<span style="color:#080;font-weight:bold">begin</span>
+begin
   <span style="color:#080;font-weight:bold">try</span>
-    handler   := TCalculatorHandler.Create;
-    processor := TCalculator.TProcessorImpl.Create( handler);
-    transport := TServerSocketImpl.Create( <span style="color:#00D">9090</span>);
-    server    := TSimpleServer.Create( processor, transport);
+    DelphiTutorialClient.Main;
+  except
+    on E: Exception <span style="color:#080;font-weight:bold">do</span>
+      Writeln(E.ClassName, <span style="color:#D20">':</span> <span style="color:#D20">',</span> E.Message);
+  end;
+end.</code></pre>
 
-    Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Starting the server...</span><span style="color:#710">'</span></span>);
-    server.Serve();
+<h3>Server</h3>
 
-  <span style="color:#080;font-weight:bold">except</span>
-    <span style="color:#088;font-weight:bold">on</span> e: Exception <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( e.Message);
-  <span style="color:#080;font-weight:bold">end</span>;
+<pre><code class="language-cpp">program DelphiServer;
 
-  Console.WriteLine(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">done.</span><span style="color:#710">'</span></span>);
-<span style="color:#080;font-weight:bold">end</span>;</code></pre></div></div>
+{$APPTYPE CONSOLE}
+{$D <span style="color:#D20">'C</span>opyright (c) <span style="color:#00D">2012</span> The Apache Software Foundation<span style="color:#D20">'}</span>
 
-<h3>Server Handler</h3>
+{$Q+}     <span style="color:#777">// throws exceptions on numeric overflows</span>
 
-<p>The server handler class TCalculatorHandler implements the communication endpoint interface. The TCalculator.Iface interface implemented here is again created by the Thrift compiler from the IDL.</p>
+uses
+  SysUtils,
+  Generics.Collections,
+  Thrift in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.pas<span style="color:#D20">',</span>
+  Thrift.Collections in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Collections.pas<span style="color:#D20">',</span>
+  Thrift.Console in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Console.pas<span style="color:#D20">',</span>
+  Thrift.Utils in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Utils.pas<span style="color:#D20">',</span>
+  Thrift.Stream in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Stream.pas<span style="color:#D20">',</span>
+  Thrift.Protocol in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Protocol.pas<span style="color:#D20">',</span>
+  Thrift.Server in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Server.pas<span style="color:#D20">',</span>
+  Thrift.Transport in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>lib<span style="color:#F00;background-color:#FAA">\</span>delphi<span style="color:#F00;background-color:#FAA">\</span>src<span style="color:#F00;background-color:#FAA">\</span>Thrift.Transport.pas<span style="color:#D20">',</span>
+  Shared in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>gen-delphi<span style="color:#F00;background-color:#FAA">\</span>Shared.pas<span style="color:#D20">',</span>
+  Tutorial in <span style="color:#D20">'.</span>.<span style="color:#F00;background-color:#FAA">\</span>..<span style="color:#F00;background-color:#FAA">\</span>gen-delphi<span style="color:#F00;background-color:#FAA">\</span>Tutorial.pas<span style="color:#D20">';</span>
 
-<div class="CodeRay"><div class="code"><pre><code class="language-delphi"><span style="color:#080;font-weight:bold">type</span>
-  TCalculatorHandler = <span style="color:#080;font-weight:bold">class</span>( TInterfacedObject, TCalculator.Iface)
+
+type
+  TCalculatorHandler = <span style="color:#080;font-weight:bold">class</span><span style="color:#F00;background-color:#FAA">(</span> TInterfacedObject, TCalculator.Iface)
   <span style="color:#088;font-weight:bold">protected</span>
+    FLog : TDictionary&lt; Integer, ISharedStruct&gt;;
+
     <span style="color:#777">// TSharedService.Iface</span>
-    <span style="color:#080;font-weight:bold">function</span>  getStruct(key: Integer): ISharedStruct;
+    function  getStruct(key: Integer): ISharedStruct;
 
     <span style="color:#777">// TCalculator.Iface</span>
-    <span style="color:#080;font-weight:bold">procedure</span> ping();
-    <span style="color:#080;font-weight:bold">function</span>  add(num1: Integer; num2: Integer): Integer;
-    <span style="color:#080;font-weight:bold">function</span>  calculate(logid: Integer; <span style="color:#080;font-weight:bold">const</span> w: IWork): Integer;
-    <span style="color:#080;font-weight:bold">procedure</span> zip();
-
-    <span style="color:#777">// ... more code ...</span>
-  <span style="color:#080;font-weight:bold">end</span>;
-  
-  
-<span style="color:#080;font-weight:bold">procedure</span> TCalculatorHandler.ping;
-<span style="color:#080;font-weight:bold">begin</span>
-  Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">ping()</span><span style="color:#710">'</span></span>);
-<span style="color:#080;font-weight:bold">end</span>;
-
-
-<span style="color:#080;font-weight:bold">function</span> TCalculatorHandler.add(num1: Integer; num2: Integer): Integer;
-<span style="color:#080;font-weight:bold">begin</span>
-  Console.WriteLine( Format( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">add( %d, %d)</span><span style="color:#710">'</span></span>, [num1, num2]));
+    procedure ping();
+    function  add(num1: Integer; <span style="color:#970;font-weight:bold">num2:</span> Integer): Integer;
+    function  calculate(logid: Integer; <span style="color:#088;font-weight:bold">const</span> w: IWork): Integer;
+    procedure zip();
+
+  <span style="color:#088;font-weight:bold">public</span>
+    constructor Create;
+    destructor Destroy;  override;
+
+  end;
+
+  DelphiTutorialServer = <span style="color:#080;font-weight:bold">class</span>
+  <span style="color:#B06;font-weight:bold">public</span>
+    <span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">procedure</span> Main;
+  end;
+
+
+<span style="color:#777">//--- TCalculatorHandler ---------------------------------------------------</span>
+
+
+constructor TCalculatorHandler.Create;
+begin
+  inherited Create;
+  FLog := TDictionary&lt; Integer, ISharedStruct&gt;.Create();
+end;
+
+
+destructor TCalculatorHandler.Destroy;
+begin
+  <span style="color:#080;font-weight:bold">try</span>
+    FreeAndNil( FLog);
+  finally
+    inherited Destroy;
+  end;
+end;
+
+
+procedure TCalculatorHandler.ping;
+begin
+  Console.WriteLine( <span style="color:#D20">'p</span>ing()<span style="color:#D20">')</span>;
+end;
+
+
+function TCalculatorHandler.add(num1: Integer; <span style="color:#970;font-weight:bold">num2:</span> Integer): Integer;
+begin
+  Console.WriteLine( Format( <span style="color:#D20">'a</span>dd( %d, %d)<span style="color:#D20">',</span> [num1, num2]));
   result := num1 + num2;
-<span style="color:#080;font-weight:bold">end</span>;
+end;
 
 
-<span style="color:#080;font-weight:bold">function</span> TCalculatorHandler.calculate(logid: Integer; <span style="color:#080;font-weight:bold">const</span> w: IWork): Integer;
-<span style="color:#080;font-weight:bold">var</span> entry : ISharedStruct;
-<span style="color:#080;font-weight:bold">begin</span>
+function TCalculatorHandler.calculate(logid: Integer; <span style="color:#088;font-weight:bold">const</span> w: IWork): Integer;
+var entry : ISharedStruct;
+begin
   <span style="color:#080;font-weight:bold">try</span>
-    Console.WriteLine( Format(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">calculate( %d, [%d,%d,%d])</span><span style="color:#710">'</span></span>, [logid, Ord(w.Op), w.Num1, w.Num2]));
+    Console.WriteLine( Format(<span style="color:#D20">'c</span>alculate( %d, [%d,%d,%d])<span style="color:#D20">',</span> [logid, Ord(w.Op), w.Num1, w.Num2]));
 
-    <span style="color:#080;font-weight:bold">case</span> w.Op <span style="color:#080;font-weight:bold">of</span>
+    <span style="color:#080;font-weight:bold">case</span> w.Op of
       TOperation.ADD      :  result := w.Num1 + w.Num2;
       TOperation.SUBTRACT :  result := w.Num1 - w.Num2;
       TOperation.MULTIPLY :  result := w.Num1 * w.Num2;
       TOperation.DIVIDE   :  result := Round( w.Num1 / w.Num2);
     <span style="color:#080;font-weight:bold">else</span>
-      <span style="color:#080;font-weight:bold">raise</span> TInvalidOperation.Create( Ord(w.Op), <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">Unknown operation</span><span style="color:#710">'</span></span>);
-    <span style="color:#080;font-weight:bold">end</span>;
+      raise TInvalidOperation.Create( Ord(w.Op), <span style="color:#D20">'U</span>nknown operation<span style="color:#D20">')</span>;
+    end;
 
-  <span style="color:#080;font-weight:bold">except</span>
-    <span style="color:#088;font-weight:bold">on</span> e:Thrift.TException <span style="color:#080;font-weight:bold">do</span> <span style="color:#080;font-weight:bold">raise</span>;  <span style="color:#777">// let Thrift Exceptions pass through</span>
-    <span style="color:#088;font-weight:bold">on</span> e:Exception <span style="color:#080;font-weight:bold">do</span> <span style="color:#080;font-weight:bold">raise</span> TInvalidOperation.Create( Ord(w.Op), e.Message);  <span style="color:#777">// repackage all other</span>
-  <span style="color:#080;font-weight:bold">end</span>;
+  except
+    on e:Thrift.TException <span style="color:#080;font-weight:bold">do</span> raise;  <span style="color:#777">// let Thrift Exceptions pass through</span>
+    on e:Exception <span style="color:#080;font-weight:bold">do</span> raise TInvalidOperation.Create( Ord(w.Op), e.Message);  <span style="color:#777">// repackage all other</span>
+  end;
 
   entry := TSharedStructImpl.Create;
   entry.Key   := logid;
   entry.Value := IntToStr( result);
   FLog.AddOrSetValue( logid, entry);
-<span style="color:#080;font-weight:bold">end</span>;
+end;
+
 
-<span style="color:#080;font-weight:bold">function</span> TCalculatorHandler.getStruct(key: Integer): ISharedStruct;
-<span style="color:#080;font-weight:bold">begin</span>
-  Console.WriteLine( Format( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">getStruct(%d)</span><span style="color:#710">'</span></span>, [key]));
+function TCalculatorHandler.getStruct(key: Integer): ISharedStruct;
+begin
+  Console.WriteLine( Format( <span style="color:#D20">'g</span>etStruct(%d)<span style="color:#D20">',</span> [key]));
   result := FLog[key];
-<span style="color:#080;font-weight:bold">end</span>;
+end;
 
 
-<span style="color:#080;font-weight:bold">procedure</span> TCalculatorHandler.zip;
-<span style="color:#080;font-weight:bold">begin</span>
-  Console.WriteLine( <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">'</span><span style="color:#D20">zip()</span><span style="color:#710">'</span></span>);
-<span style="color:#080;font-weight:bold">end</span>;</code></pre></div></div>
+procedure TCalculatorHandler.zip;
+begin
+  Console.WriteLine( <span style="color:#D20">'z</span>ip()<span style="color:#D20">')</span>;
+end;
+
+
+<span style="color:#777">//--- DelphiTutorialServer ----------------------------------------------------------------------</span>
+
+
+<span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">procedure</span> DelphiTutorialServer.Main;
+var handler   : TCalculator.Iface;
+    processor : IProcessor;
+    transport : IServerTransport;
+    server    : IServer;
+begin
+  <span style="color:#080;font-weight:bold">try</span>
+    handler   := TCalculatorHandler.Create;
+    processor := TCalculator.TProcessorImpl.Create( handler);
+    transport := TServerSocketImpl.Create( <span style="color:#00D">9090</span>);
+    server    := TSimpleServer.Create( processor, transport);
+
+    Console.WriteLine( <span style="color:#D20">'S</span>tarting the server...<span style="color:#D20">')</span>;
+    server.Serve();
+
+  except
+    on e: Exception <span style="color:#080;font-weight:bold">do</span> Console.WriteLine( e.Message);
+  end;
+
+  Console.WriteLine(<span style="color:#D20">'d</span>one.<span style="color:#D20">')</span>;
+end;
+
+
+begin
+  <span style="color:#080;font-weight:bold">try</span>
+    DelphiTutorialServer.Main;
+  except
+    on E: Exception <span style="color:#080;font-weight:bold">do</span>
+      Writeln(E.ClassName, <span style="color:#D20">':</span> <span style="color:#D20">',</span> E.Message);
+  end;
+end.</code></pre>
 
 <h2>Additional Information</h2>
+
 	</div>
 	<div class="container">
 	<hr>

Modified: thrift/site/publish/tutorial/erl/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/erl/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/erl/index.html (original)
+++ thrift/site/publish/tutorial/erl/index.html Wed Mar  5 05:40:00 2014
@@ -68,28 +68,33 @@
   	<div class="container">
 		<h2>Erlang Tutorial</h2>
 
-<hr><h3>Introduction</h3>
+<hr>
+
+<h3>Introduction</h3>
 
 <p>All Apache Thrift tutorials require that you have:</p>
 
 <ol>
-<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details. </li>
+<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details.</li>
 <li>
 <p>Generated the <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file as <a href="/tutorial/">discussed here</a></p>
 
 <pre><code>thrift -r --gen erl tutorial.thrift
 </code></pre>
 </li>
-<li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+<li><p>Followed all prerequesets listed</p></li>
+</ol>
+
+<h3>Prerequisites</h3>
 
 <h3>Client</h3>
 
-<div class="CodeRay"><div class="code"><pre><code class="language-c"></code></pre></div></div>
+<pre><code class="language-c"></code></pre>
 
 <h3>Server</h3>
 
 <h2>Additional Information</h2>
+
 	</div>
 	<div class="container">
 	<hr>

Modified: thrift/site/publish/tutorial/go/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/go/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/go/index.html (original)
+++ thrift/site/publish/tutorial/go/index.html Wed Mar  5 05:40:00 2014
@@ -68,286 +68,146 @@
   	<div class="container">
 		<h2>Go Tutorial</h2>
 
-<hr><h3>Introduction</h3>
+<hr>
+
+<h3>Introduction</h3>
 
 <p>All Apache Thrift tutorials require that you have:</p>
 
 <ol>
-<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details. </li>
+<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details.</li>
 <li>
 <p>Generated the <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file as <a href="/tutorial/">discussed here</a></p>
 
 <pre><code>thrift -r --gen go tutorial.thrift
 </code></pre>
 </li>
-<li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+<li><p>Followed all prerequesets listed</p></li>
+</ol>
+
+<h3>Prerequisites</h3>
 
 <ul>
-<li>At least Go 1.1.x is required to run the tutorial code. </li>
-<li>The GOPATH may need to be adjusted, alternatively manually put the Go Thrift library files into a suitable location. </li>
-</ul><h3>Client</h3>
-
-<p>Implements the client code which consumes the tutorial service.</p>
-
-<div class="CodeRay"><div class="code"><pre><code class="language-c">import (
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">crypto/tls</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">git.apache.org/thrift.git/lib/go/thrift</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">tutorial</span><span style="color:#710">"</span></span>
+<li>At least Go 1.1.x is required to run the tutorial code.</li>
+<li>The GOPATH may need to be adjusted, alternatively manually put the Go Thrift library files into a suitable location.</li>
+</ul>
+
+<h3>Client</h3>
+
+<pre><code class="language-cpp">import (
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">crypto/tls</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">git.apache.org/thrift.git/lib/go/thrift</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">tutorial</span><span style="color:#710">"</span></span>
 )
 
 func handleClient(client *tutorial.CalculatorClient) (err error) {
-    client.Ping()
-    fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">ping()</span><span style="color:#710">"</span></span>)
+        client.Ping()
+        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">ping()</span><span style="color:#710">"</span></span>)
 
-    sum, _ := client.Add(<span style="color:#00D">1</span>, <span style="color:#00D">1</span>)
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">1+1=</span><span style="color:#710">"</span></span>, sum, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
+        sum, _ := client.Add(<span style="color:#00D">1</span>, <span style="color:#00D">1</span>)
+        fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">1+1=</span><span style="color:#710">"</span></span>, sum, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
 
-    work := tutorial.NewWork()
-    work.Op = tutorial.Operation_DIVIDE
-    work.Num1 = <span style="color:#00D">1</span>
-    work.Num2 = <span style="color:#00D">0</span>
-    quotient, err := client.Calculate(<span style="color:#00D">1</span>, work)
-    <span style="color:#080;font-weight:bold">if</span> err != nil {
-        <span style="color:#080;font-weight:bold">switch</span> v := err.(type) {
-        <span style="color:#080;font-weight:bold">case</span> *tutorial.InvalidOperation:
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Invalid operation:</span><span style="color:#710">"</span></span>, v)
-        <span style="color:#080;font-weight:bold">default</span>:
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error during operation:</span><span style="color:#710">"</span></span>, err)
-        }
-        <span style="color:#080;font-weight:bold">return</span> err
-    } <span style="color:#080;font-weight:bold">else</span> {
-        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Whoa we can divide by 0 with new value:</span><span style="color:#710">"</span></span>, quotient)
-    }
-
-    work.Op = tutorial.Operation_SUBTRACT
-    work.Num1 = <span style="color:#00D">15</span>
-    work.Num2 = <span style="color:#00D">10</span>
-    diff, err := client.Calculate(<span style="color:#00D">1</span>, work)
-    <span style="color:#080;font-weight:bold">if</span> err != nil {
-        <span style="color:#080;font-weight:bold">switch</span> v := err.(type) {
-        <span style="color:#080;font-weight:bold">case</span> *tutorial.InvalidOperation:
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Invalid operation:</span><span style="color:#710">"</span></span>, v)
-        <span style="color:#080;font-weight:bold">default</span>:
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error during operation:</span><span style="color:#710">"</span></span>, err)
+        work := tutorial.NewWork()
+        work.Op = tutorial.Operation_DIVIDE
+        work.Num1 = <span style="color:#00D">1</span>
+        work.Num2 = <span style="color:#00D">0</span>
+        quotient, err := client.Calculate(<span style="color:#00D">1</span>, work)
+        <span style="color:#080;font-weight:bold">if</span> err != nil {
+                <span style="color:#080;font-weight:bold">switch</span> v := err.(type) {
+                <span style="color:#080;font-weight:bold">case</span> *tutorial.InvalidOperation:
+                        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Invalid operation:</span><span style="color:#710">"</span></span>, v)
+                <span style="color:#080;font-weight:bold">default</span>:
+                        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error during operation:</span><span style="color:#710">"</span></span>, err)
+                }
+                <span style="color:#080;font-weight:bold">return</span> err
+        } <span style="color:#080;font-weight:bold">else</span> {
+                fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Whoa we can divide by 0 with new value:</span><span style="color:#710">"</span></span>, quotient)
         }
-        <span style="color:#080;font-weight:bold">return</span> err
-    } <span style="color:#080;font-weight:bold">else</span> {
-        fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">15-10=</span><span style="color:#710">"</span></span>, diff, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    }
-
-    log, err := client.GetStruct(<span style="color:#00D">1</span>)
-    <span style="color:#080;font-weight:bold">if</span> err != nil {
-        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Unable to get struct:</span><span style="color:#710">"</span></span>, err)
-        <span style="color:#080;font-weight:bold">return</span> err
-    } <span style="color:#080;font-weight:bold">else</span> {
-        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Check log:</span><span style="color:#710">"</span></span>, log.Value)
-    }
-    <span style="color:#080;font-weight:bold">return</span> err
-}
-
-func runClient(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr string, secure <span style="color:#0a5;font-weight:bold">bool</span>) error {
-    var transport thrift.TTransport
-    var err error
-    <span style="color:#080;font-weight:bold">if</span> secure {
-        cfg := new(tls.Config)
-        cfg.InsecureSkipVerify = <span style="color:#069">true</span>
-        transport, err = thrift.NewTSSLSocket(addr, cfg)
-    } <span style="color:#080;font-weight:bold">else</span> {
-        transport, err = thrift.NewTSocket(addr)
-    }
-    <span style="color:#080;font-weight:bold">if</span> err != nil {
-        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error opening socket:</span><span style="color:#710">"</span></span>, err)
-        <span style="color:#080;font-weight:bold">return</span> err
-    }
-    transport = transportFactory.GetTransport(transport)
-    defer transport.Close()
-    <span style="color:#080;font-weight:bold">if</span> err := transport.Open(); err != nil {
-        <span style="color:#080;font-weight:bold">return</span> err
-    }
-    <span style="color:#080;font-weight:bold">return</span> handleClient(tutorial.NewCalculatorClientFactory(transport, protocolFactory))
-}</code></pre></div></div>
-
-<h3>Server</h3>
-
-<p>Implements a simple socket server.</p>
 
-<div class="CodeRay"><div class="code"><pre><code class="language-c">import (
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">crypto/tls</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">git.apache.org/thrift.git/lib/go/thrift</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">tutorial</span><span style="color:#710">"</span></span>
-)
+        work.Op = tutorial.Operation_SUBTRACT
+        work.Num1 = <span style="color:#00D">15</span>
+        work.Num2 = <span style="color:#00D">10</span>
+        diff, err := client.Calculate(<span style="color:#00D">1</span>, work)
+        <span style="color:#080;font-weight:bold">if</span> err != nil {
+                <span style="color:#080;font-weight:bold">switch</span> v := err.(type) {
+                <span style="color:#080;font-weight:bold">case</span> *tutorial.InvalidOperation:
+                        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Invalid operation:</span><span style="color:#710">"</span></span>, v)
+                <span style="color:#080;font-weight:bold">default</span>:
+                        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error during operation:</span><span style="color:#710">"</span></span>, err)
+                }
+                <span style="color:#080;font-weight:bold">return</span> err
+        } <span style="color:#080;font-weight:bold">else</span> {
+                fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">15-10=</span><span style="color:#710">"</span></span>, diff, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
+        }
 
-func runServer(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr string, secure <span style="color:#0a5;font-weight:bold">bool</span>) error {
-    var transport thrift.TServerTransport
-    var err error
-    <span style="color:#080;font-weight:bold">if</span> secure {
-        cfg := new(tls.Config)
-        <span style="color:#080;font-weight:bold">if</span> cert, err := tls.LoadX509KeyPair(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">server.crt</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">server.key</span><span style="color:#710">"</span></span>); err == nil {
-            cfg.Certificates = append(cfg.Certificates, cert)
+        log, err := client.GetStruct(<span style="color:#00D">1</span>)
+        <span style="color:#080;font-weight:bold">if</span> err != nil {
+                fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Unable to get struct:</span><span style="color:#710">"</span></span>, err)
+                <span style="color:#080;font-weight:bold">return</span> err
         } <span style="color:#080;font-weight:bold">else</span> {
-            <span style="color:#080;font-weight:bold">return</span> err
+                fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Check log:</span><span style="color:#710">"</span></span>, log.Value)
         }
-        transport, err = thrift.NewTSSLServerSocket(addr, cfg)
-    } <span style="color:#080;font-weight:bold">else</span> {
-        transport, err = thrift.NewTServerSocket(addr)
-    }
-    
-    <span style="color:#080;font-weight:bold">if</span> err != nil {
         <span style="color:#080;font-weight:bold">return</span> err
-    }
-    fmt.Printf(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">%T</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>, transport)
-    handler := NewCalculatorHandler()
-    processor := tutorial.NewCalculatorProcessor(handler)
-    server := thrift.NewTSimpleServer4(processor, transport, transportFactory, protocolFactory)
-
-    fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Starting the simple server... on </span><span style="color:#710">"</span></span>, addr)
-    <span style="color:#080;font-weight:bold">return</span> server.Serve()
-}</code></pre></div></div>
-
-<h3>Handler</h3>
-
-<p>The handler implements the service defined in the tutorial IDL file and exposed by the server.</p>
-
-<div class="CodeRay"><div class="code"><pre><code class="language-c">import (
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">shared</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">strconv</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">tutorial</span><span style="color:#710">"</span></span>
-)
-
-type CalculatorHandler <span style="color:#080;font-weight:bold">struct</span> {
-    log map[<span style="color:#0a5;font-weight:bold">int</span>]*shared.SharedStruct
-}
-
-func NewCalculatorHandler() *CalculatorHandler {
-    <span style="color:#080;font-weight:bold">return</span> &amp;CalculatorHandler{<span style="color:#970;font-weight:bold">log:</span> make(map[<span style="color:#0a5;font-weight:bold">int</span>]*shared.SharedStruct)}
-}
-
-func (p *CalculatorHandler) Ping() (err error) {
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">ping()</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    <span style="color:#080;font-weight:bold">return</span> nil
-}
-
-func (p *CalculatorHandler) Add(num1 int32, num2 int32) (retval17 int32, err error) {
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">add(</span><span style="color:#710">"</span></span>, num1, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">,</span><span style="color:#710">"</span></span>, num2, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">)</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    <span style="color:#080;font-weight:bold">return</span> num1 + num2, nil
 }
 
-func (p *CalculatorHandler) Calculate(logid int32, w *tutorial.Work) (val int32, err error) {
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">calculate(</span><span style="color:#710">"</span></span>, logid, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">, {</span><span style="color:#710">"</span></span>, w.Op, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">,</span><span style="color:#710">"</span></span>, w.Num1, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">,</span><span style="color:#710">"</span></span>, w.Num2, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">})</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    <span style="color:#080;font-weight:bold">switch</span> w.Op {
-    <span style="color:#080;font-weight:bold">case</span> tutorial.Operation_ADD:
-        val = w.Num1 + w.Num2
-        <span style="color:#080;font-weight:bold">break</span>
-    <span style="color:#080;font-weight:bold">case</span> tutorial.Operation_SUBTRACT:
-        val = w.Num1 - w.Num2
-        <span style="color:#080;font-weight:bold">break</span>
-    <span style="color:#080;font-weight:bold">case</span> tutorial.Operation_MULTIPLY:
-        val = w.Num1 * w.Num2
-        <span style="color:#080;font-weight:bold">break</span>
-    <span style="color:#080;font-weight:bold">case</span> tutorial.Operation_DIVIDE:
-        <span style="color:#080;font-weight:bold">if</span> w.Num2 == <span style="color:#00D">0</span> {
-            ouch := tutorial.NewInvalidOperation()
-            ouch.What = int32(w.Op)
-            ouch.Why = <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Cannot divide by 0</span><span style="color:#710">"</span></span>
-            err = ouch
-            <span style="color:#080;font-weight:bold">return</span>
+func runClient(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr <span style="color:#0a5;font-weight:bold">string</span>, secure <span style="color:#0a5;font-weight:bold">bool</span>) error {
+        var transport thrift.TTransport
+        var err error
+        <span style="color:#080;font-weight:bold">if</span> secure {
+                cfg := <span style="color:#080;font-weight:bold">new</span>(tls.Config)
+                cfg.InsecureSkipVerify = <span style="color:#069">true</span>
+                transport, err = thrift.NewTSSLSocket(addr, cfg)
+        } <span style="color:#080;font-weight:bold">else</span> {
+                transport, err = thrift.NewTSocket(addr)
         }
-        val = w.Num1 / w.Num2
-        <span style="color:#080;font-weight:bold">break</span>
-    <span style="color:#080;font-weight:bold">default</span>:
-        ouch := tutorial.NewInvalidOperation()
-        ouch.What = int32(w.Op)
-        ouch.Why = <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Unknown operation</span><span style="color:#710">"</span></span>
-        err = ouch
-        <span style="color:#080;font-weight:bold">return</span>
-    }
-    entry := shared.NewSharedStruct()
-    entry.Key = logid
-    entry.Value = strconv.Itoa(<span style="color:#0a5;font-weight:bold">int</span>(val))
-    k := <span style="color:#0a5;font-weight:bold">int</span>(logid)
-
-    p.log[k] = entry
-    <span style="color:#080;font-weight:bold">return</span> val, err
-}
+        <span style="color:#080;font-weight:bold">if</span> err != nil {
+                fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Error opening socket:</span><span style="color:#710">"</span></span>, err)
+                <span style="color:#080;font-weight:bold">return</span> err
+        }
+        transport = transportFactory.GetTransport(transport)
+        defer transport.Close()
+        <span style="color:#080;font-weight:bold">if</span> err := transport.Open(); err != nil {
+                <span style="color:#080;font-weight:bold">return</span> err
+        }
+        <span style="color:#080;font-weight:bold">return</span> handleClient(tutorial.NewCalculatorClientFactory(transport, protocolFactory))
+}</code></pre>
 
-func (p *CalculatorHandler) GetStruct(key int32) (*shared.SharedStruct, error) {
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">getStruct(</span><span style="color:#710">"</span></span>, key, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">)</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    v, _ := p.log[<span style="color:#0a5;font-weight:bold">int</span>(key)]
-    <span style="color:#080;font-weight:bold">return</span> v, nil
-}
+<h3>Server</h3>
 
-func (p *CalculatorHandler) Zip() (err error) {
-    fmt.Print(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">zip()</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    <span style="color:#080;font-weight:bold">return</span> nil
-}</code></pre></div></div>
-
-<h3>Main code</h3>
-
-<p>The main code is shared between server and client. The <code>-server</code> argument distinguishes betweeen the two modes.</p>
-
-<div class="CodeRay"><div class="code"><pre><code class="language-c">import (
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">flag</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">git.apache.org/thrift.git/lib/go/thrift</span><span style="color:#710">"</span></span>
-    <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">os</span><span style="color:#710">"</span></span>
+<pre><code class="language-cpp">import (
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">crypto/tls</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">fmt</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">git.apache.org/thrift.git/lib/go/thrift</span><span style="color:#710">"</span></span>
+        <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">tutorial</span><span style="color:#710">"</span></span>
 )
 
-func Usage() {
-    fmt.Fprint(os.Stderr, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Usage of </span><span style="color:#710">"</span></span>, os.Args[<span style="color:#00D">0</span>], <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">:</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-    flag.PrintDefaults()
-    fmt.Fprint(os.Stderr, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-}
-
-func main() {
-    flag.Usage = Usage
-    server := flag.Bool(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">server</span><span style="color:#710">"</span></span>, <span style="color:#069">false</span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Run server</span><span style="color:#710">"</span></span>)
-    protocol := flag.String(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">P</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">binary</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Specify the protocol (binary, compact, json)</span><span style="color:#710">"</span></span>)
-    framed := flag.Bool(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">framed</span><span style="color:#710">"</span></span>, <span style="color:#069">false</span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Use framed transport</span><span style="color:#710">"</span></span>)
-    buffered := flag.Bool(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">buffered</span><span style="color:#710">"</span></span>, <span style="color:#069">false</span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Use buffered transport</span><span style="color:#710">"</span></span>)
-    addr := flag.String(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">addr</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">localhost:9090</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Address to listen to</span><span style="color:#710">"</span></span>)
-    secure := flag.Bool(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">secure</span><span style="color:#710">"</span></span>, <span style="color:#069">false</span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Use tls secure transport</span><span style="color:#710">"</span></span>)
-
-    flag.Parse()
-
-    var protocolFactory thrift.TProtocolFactory
-    <span style="color:#080;font-weight:bold">switch</span> *protocol {
-    <span style="color:#080;font-weight:bold">case</span> <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">compact</span><span style="color:#710">"</span></span>:
-        protocolFactory = thrift.NewTCompactProtocolFactory()
-    <span style="color:#080;font-weight:bold">case</span> <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">json</span><span style="color:#710">"</span></span>:
-        protocolFactory = thrift.NewTJSONProtocolFactory()
-    <span style="color:#080;font-weight:bold">case</span> <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">binary</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#710">"</span></span>:
-        protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
-    <span style="color:#080;font-weight:bold">default</span>:
-        fmt.Fprint(os.Stderr, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Invalid protocol specified</span><span style="color:#710">"</span></span>, protocol, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>)
-        Usage()
-        os.Exit(<span style="color:#00D">1</span>)
-    }
-
-    var transportFactory thrift.TTransportFactory
-    <span style="color:#080;font-weight:bold">if</span> *buffered {
-        transportFactory = thrift.NewTBufferedTransportFactory(<span style="color:#00D">8192</span>)
-    } <span style="color:#080;font-weight:bold">else</span> {
-        transportFactory = thrift.NewTTransportFactory()
-    }
-
-    <span style="color:#080;font-weight:bold">if</span> *framed {
-        transportFactory = thrift.NewTFramedTransportFactory(transportFactory)
-    }
-
-    <span style="color:#080;font-weight:bold">if</span> *server {
-        <span style="color:#080;font-weight:bold">if</span> err := runServer(transportFactory, protocolFactory, *addr, *secure); err != nil {
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">error running server:</span><span style="color:#710">"</span></span>, err)
-        }
-    } <span style="color:#080;font-weight:bold">else</span> {
-        <span style="color:#080;font-weight:bold">if</span> err := runClient(transportFactory, protocolFactory, *addr, *secure); err != nil {
-            fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">error running client:</span><span style="color:#710">"</span></span>, err)
+func runServer(transportFactory thrift.TTransportFactory, protocolFactory thrift.TProtocolFactory, addr <span style="color:#0a5;font-weight:bold">string</span>, secure <span style="color:#0a5;font-weight:bold">bool</span>) error {
+        var transport thrift.TServerTransport
+        var err error
+        <span style="color:#080;font-weight:bold">if</span> secure {
+                cfg := <span style="color:#080;font-weight:bold">new</span>(tls.Config)
+                <span style="color:#080;font-weight:bold">if</span> cert, err := tls.LoadX509KeyPair(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">server.crt</span><span style="color:#710">"</span></span>, <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">server.key</span><span style="color:#710">"</span></span>); err == nil {
+                        cfg.Certificates = append(cfg.Certificates, cert)
+                } <span style="color:#080;font-weight:bold">else</span> {
+                        <span style="color:#080;font-weight:bold">return</span> err
+                }
+                transport, err = thrift.NewTSSLServerSocket(addr, cfg)
+        } <span style="color:#080;font-weight:bold">else</span> {
+                transport, err = thrift.NewTServerSocket(addr)
         }
-    }
-}</code></pre></div></div>
+        
+        <span style="color:#080;font-weight:bold">if</span> err != nil {
+                <span style="color:#080;font-weight:bold">return</span> err
+        }
+        fmt.Printf(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">%T</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>, transport)
+        handler := NewCalculatorHandler()
+        processor := tutorial.NewCalculatorProcessor(handler)
+        server := thrift.NewTSimpleServer4(processor, transport, transportFactory, protocolFactory)
+
+        fmt.Println(<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Starting the simple server... on </span><span style="color:#710">"</span></span>, addr)
+        <span style="color:#080;font-weight:bold">return</span> server.Serve()
+}</code></pre>
 
 <h2>Additional Information</h2>
 
@@ -356,6 +216,7 @@ func main() {
 <li>Try using the buffered and/or framed transport options.</li>
 <li>Note that both server and client must use the exact same protocol and transport stack.</li>
 </ul>
+
 	</div>
 	<div class="container">
 	<hr>

Modified: thrift/site/publish/tutorial/graphviz/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/graphviz/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/graphviz/index.html (original)
+++ thrift/site/publish/tutorial/graphviz/index.html Wed Mar  5 05:40:00 2014
@@ -68,20 +68,24 @@
   	<div class="container">
 		<h2>Graphviz Tutorial</h2>
 
-<hr><h3>Introduction</h3>
+<hr>
+
+<h3>Introduction</h3>
 
 <p>All Apache Thrift tutorials require that you have:</p>
 
 <ol>
-<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details. </li>
+<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details.</li>
 <li>
 <p>Generated the <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file as <a href="/tutorial/">discussed here</a></p>
 
 <pre><code>thrift -r --gen cpp tutorial.thrift
 </code></pre>
 </li>
-<li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+<li><p>Followed all prerequesets listed</p></li>
+</ol>
+
+<h3>Prerequisites</h3>
 
 <ul>
 <li>
@@ -89,7 +93,9 @@
 
 <p>The <a href="http://www.graphviz.org/">official renderers</a> can be used as a command line tool to produce a graphic from the '.gv' file</p>
 </li>
-</ul><h3>Overview</h3>
+</ul>
+
+<h3>Overview</h3>
 
 <p>The Graphviz generator is a convenient way to generate documentation diagrams
 for your API. Usage:</p>
@@ -116,6 +122,7 @@ generator to render those exceptions arr
 
 <pre><code>$ thrift -r --gen:gv:exceptions gv tutorial.thrift
 </code></pre>
+
 	</div>
 	<div class="container">
 	<hr>

Modified: thrift/site/publish/tutorial/hs/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/hs/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/hs/index.html (original)
+++ thrift/site/publish/tutorial/hs/index.html Wed Mar  5 05:40:00 2014
@@ -68,28 +68,170 @@
   	<div class="container">
 		<h2>Haskell Tutorial</h2>
 
-<hr><h3>Introduction</h3>
+<hr>
+
+<h3>Introduction</h3>
 
 <p>All Apache Thrift tutorials require that you have:</p>
 
 <ol>
-<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details. </li>
+<li>Built and installed the Apache Thrift Compiler and Libraries, see <a href="/docs/BuildingFromSource/">Building from source</a> for more details.</li>
 <li>
 <p>Generated the <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file as <a href="/tutorial/">discussed here</a></p>
 
 <pre><code>thrift -r --gen hs tutorial.thrift
 </code></pre>
 </li>
-<li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+<li><p>Followed all prerequesets listed</p></li>
+</ol>
+
+<h3>Prerequisites</h3>
 
 <h3>Client</h3>
 
-<div class="CodeRay"><div class="code"><pre><code class="language-c"></code></pre></div></div>
+<pre><code class="language-cpp">import qualified Calculator
+import qualified Calculator_Client as Client
+import qualified SharedService_Client as SClient
+import Tutorial_Types
+import SharedService_Iface
+import Shared_Types
+
+import Thrift
+import Thrift.Protocol.Binary
+import Thrift.Transport
+import Thrift.Transport.Handle
+import Thrift.Server
+
+import Data.Maybe
+import Text.Printf
+import Network
+
+main = <span style="color:#080;font-weight:bold">do</span>
+  transport  &lt;- hOpen (<span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">localhost</span><span style="color:#710">"</span></span>, PortNumber <span style="color:#00D">9090</span>)
+  let binProto = BinaryProtocol transport
+  let client = (binProto, binProto)
+
+  Client.ping client
+  print <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">ping()</span><span style="color:#710">"</span></span>
+
+  sum &lt;- Client.add client <span style="color:#00D">1</span> <span style="color:#00D">1</span>
+  printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">1+1=%d</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span> sum
+
+
+  let work = Work { f_Work_op = Just DIVIDE,
+                    f_Work_num1 = Just <span style="color:#00D">1</span>,
+                    f_Work_num2 = Just <span style="color:#00D">0</span>,
+                    f_Work_comment = Nothing
+                  }
+
+  -- TODO - get <span style="color:#963">this</span> one working
+  --<span style="color:#080;font-weight:bold">catch</span> (Client.calculate client <span style="color:#00D">1</span> work) (<span style="color:#F00;background-color:#FAA">\</span>except -&gt;
+  --     printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">InvalidOp %s</span><span style="color:#710">"</span></span> (show except))
+
+
+  let work = Work { f_Work_op = Just SUBTRACT,
+                    f_Work_num1 = Just <span style="color:#00D">15</span>,
+                    f_Work_num2 = Just <span style="color:#00D">10</span>,
+                    f_Work_comment = Nothing
+                  }
+
+  diff &lt;- Client.calculate client <span style="color:#00D">1</span> work
+  printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">15-10=%d</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span> diff
+
+  log &lt;- SClient.getStruct client <span style="color:#00D">1</span>
+  printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Check log: %s</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span>  $ fromJust $ f_SharedStruct_value log
+
+  -- Close!
+  tClose transport</code></pre>
 
 <h3>Server</h3>
 
+<pre><code class="language-cpp">import qualified Calculator
+import Calculator_Iface
+import Tutorial_Types
+import SharedService_Iface
+import Shared_Types
+
+import Thrift
+import Thrift.Protocol.Binary
+import Thrift.Transport
+import Thrift.Server
+
+import Data.Maybe
+import Text.Printf
+import Control.Exception (<span style="color:#080;font-weight:bold">throw</span>)
+import Control.Concurrent.MVar
+import qualified Data.Map as M
+import Data.Map ((!))
+import Data.Monoid
+
+data CalculatorHandler = CalculatorHandler {mathLog :: MVar (M.Map Int SharedStruct)}
+
+newCalculatorHandler = <span style="color:#080;font-weight:bold">do</span>
+  log &lt;- newMVar mempty
+  <span style="color:#080;font-weight:bold">return</span> $ CalculatorHandler log
+
+instance SharedService_Iface CalculatorHandler where
+  getStruct self k = <span style="color:#080;font-weight:bold">do</span>
+    myLog &lt;- readMVar (mathLog self)
+    <span style="color:#080;font-weight:bold">return</span> $ (myLog ! (fromJust k))
+
+
+instance Calculator_Iface CalculatorHandler where
+  ping _ =
+    print <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">ping()</span><span style="color:#710">"</span></span>
+
+  add _ n1 n2 = <span style="color:#080;font-weight:bold">do</span>
+    printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">add(%d,%d)</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span> (fromJust n1) (fromJust n2)
+    <span style="color:#080;font-weight:bold">return</span> ((fromJust n1)+(fromJust n2))
+
+  calculate self mlogid mwork = <span style="color:#080;font-weight:bold">do</span>
+    printf <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">calculate(%d, %s)</span><span style="color:#b0b">\n</span><span style="color:#710">"</span></span> logid (show work)
+
+    let val = <span style="color:#080;font-weight:bold">case</span> op work of
+                ADD -&gt;
+                    num1 work + num2 work
+                SUBTRACT -&gt;
+                    num1 work - num2 work
+                MULTIPLY -&gt;
+                    num1 work * num2 work
+                DIVIDE -&gt;
+                    <span style="color:#080;font-weight:bold">if</span> num2 work == <span style="color:#00D">0</span> then
+                        <span style="color:#080;font-weight:bold">throw</span> $
+                              InvalidOperation {
+                                 f_InvalidOperation_what = Just $ fromEnum $ op work,
+                                 f_InvalidOperation_why = Just <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Cannot divide by 0</span><span style="color:#710">"</span></span>
+                                            }
+                    <span style="color:#080;font-weight:bold">else</span>
+                        num1 work <span style="color:#F00;background-color:#FAA">`</span>div<span style="color:#F00;background-color:#FAA">`</span> num2 work
+
+    let logEntry = SharedStruct (Just logid) (Just (show val))
+    modifyMVar_ (mathLog self) $ <span style="color:#080;font-weight:bold">return</span> .(M.insert logid logEntry)
+
+    <span style="color:#080;font-weight:bold">return</span> val
+
+   where
+     -- stupid dynamic languages f<span style="color:#D20">'i</span>ng it up
+     num1 = fromJust . f_Work_num1
+     num2 = fromJust . f_Work_num2
+     op = fromJust . f_Work_op
+     logid = fromJust mlogid
+     work = fromJust mwork
+
+
+    --<span style="color:#080;font-weight:bold">return</span> val
+
+  zip _ =
+    print <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">zip()</span><span style="color:#710">"</span></span>
+
+main =  <span style="color:#080;font-weight:bold">do</span>
+  handler &lt;- newCalculatorHandler
+  print <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">Starting the server...</span><span style="color:#710">"</span></span>
+  runBasicServer handler Calculator.process <span style="color:#00D">9090</span>
+  print <span style="background-color:hsla(0,100%,50%,0.05)"><span style="color:#710">"</span><span style="color:#D20">done.</span><span style="color:#710">"</span></span></code></pre>
+
 <h2>Additional Information</h2>
+
 	</div>
 	<div class="container">
 	<hr>

Modified: thrift/site/publish/tutorial/index.html
URL: http://svn.apache.org/viewvc/thrift/site/publish/tutorial/index.html?rev=1574384&r1=1574383&r2=1574384&view=diff
==============================================================================
--- thrift/site/publish/tutorial/index.html (original)
+++ thrift/site/publish/tutorial/index.html Wed Mar  5 05:40:00 2014
@@ -68,7 +68,9 @@
   	<div class="container">
 		<h2>Apache Thrift Tutorial</h2>
 
-<hr><ul>
+<hr>
+
+<ul>
 <li>
 <h3>Download Apache Thrift</h3>
 
@@ -88,28 +90,23 @@ See the <a href="/docs/BuildingFromSourc
 <li>
 <h3>Writing a .thrift file</h3>
 
-<p>After the Thrift compiler is installed you will need to create a thrift file. This file is an <a href="/docs/idl/">interface definition</a> made up of <a href="/docs/types/">thrift types</a> and Services. The services you define in this file are implemented by the server and are called by any clients. </p>
+<p>After the Thrift compiler is installed you will need to create a thrift file. This file is an <a href="/docs/idl/">interface definition</a> made up of <a href="/docs/types/">thrift types</a> and Services. The services you define in this file are implemented by the server and are called by any clients.</p>
 </li>
 <li>
 <h3>Generate Thrift file to source code</h3>
 
 <p>The Thrift compiler is used to generate your Thrift File into source code which is used by the different client libraries and the server you write. To generate the source from a thrift file run</p>
 
-<pre><code>thrift --gen &lt;language&gt; &lt;Thrift filename&gt; 
+<pre><code>thrift --gen &lt;language&gt; &lt;Thrift filename&gt;
 </code></pre>
 
-<p>The sample <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file defines a basic calculator service. This will be used to demonstrate both the client and server.  </p>
+<p>The sample <a href="https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift">tutorial.thrift</a> file defines a basic calculator service. This will be used to demonstrate both the client and server.</p>
 </li>
-</ul><h2>Examples Clients and Servers</h2>
+</ul>
 
-<ul>
-<li>
-        <a href="/tutorial/as3/">As3</a>
-    </li>
+<h2>Examples Clients and Servers</h2>
 
-    <li>
-        <a href="/tutorial/c_glib/">C Glib</a>
-    </li>
+<ul>
 
     <li>
         <a href="/tutorial/cpp/">C++</a>
@@ -128,10 +125,6 @@ See the <a href="/docs/BuildingFromSourc
     </li>
 
     <li>
-        <a href="/tutorial/erl/">Erlang</a>
-    </li>
-
-    <li>
         <a href="/tutorial/go/">Go</a>
     </li>
 
@@ -148,10 +141,6 @@ See the <a href="/docs/BuildingFromSourc
     </li>
 
     <li>
-        <a href="/tutorial/javame/">Java Me</a>
-    </li>
-
-    <li>
         <a href="/tutorial/js/">Javascript</a>
     </li>
 
@@ -160,10 +149,6 @@ See the <a href="/docs/BuildingFromSourc
     </li>
 
     <li>
-        <a href="/tutorial/cocoa/">Objective-c</a>
-    </li>
-
-    <li>
         <a href="/tutorial/ocaml/">OCaml</a>
     </li>
 
@@ -188,6 +173,7 @@ See the <a href="/docs/BuildingFromSourc
     </li>
 
 </ul>
+
 	</div>
 	<div class="container">
 	<hr>