Author: buildbot
Date: Sat Mar 22 23:32:50 2014
New Revision: 903012

Log:
Staging update by buildbot for thrift

Modified:
    websites/staging/thrift/trunk/content/   (props changed)
    websites/staging/thrift/trunk/content/tutorial/cpp.html

Propchange: websites/staging/thrift/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Mar 22 23:32:50 2014
@@ -1 +1 @@
-1580365
+1580368

Modified: websites/staging/thrift/trunk/content/tutorial/cpp.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/cpp.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/cpp.html Sat Mar 22 23:32:50 
2014
@@ -152,7 +152,141 @@
 </pre></div>
 
 <h3 id="server">Server</h3>
-<p>[XXXsnippet:path=tutorial/cpp/CppServer.cpp:lang=cpp:lines=20,152]</p>
+<div class="codehilite"><pre><span class="cp">#include 
&lt;thrift/concurrency/ThreadManager.h&gt;</span>
+<span class="cp">#include 
&lt;thrift/concurrency/PosixThreadFactory.h&gt;</span>
+<span class="cp">#include &lt;thrift/protocol/TBinaryProtocol.h&gt;</span>
+<span class="cp">#include &lt;thrift/server/TSimpleServer.h&gt;</span>
+<span class="cp">#include &lt;thrift/server/TThreadPoolServer.h&gt;</span>
+<span class="cp">#include &lt;thrift/server/TThreadedServer.h&gt;</span>
+<span class="cp">#include &lt;thrift/transport/TServerSocket.h&gt;</span>
+<span class="cp">#include &lt;thrift/transport/TTransportUtils.h&gt;</span>
+
+<span class="cp">#include &lt;iostream&gt;</span>
+<span class="cp">#include &lt;stdexcept&gt;</span>
+<span class="cp">#include &lt;sstream&gt;</span>
+
+<span class="cp">#include &quot;../gen-cpp/Calculator.h&quot;</span>
+
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">std</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">apache</span><span class="o">::</span><span 
class="n">thrift</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">apache</span><span class="o">::</span><span 
class="n">thrift</span><span class="o">::</span><span 
class="n">protocol</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">apache</span><span class="o">::</span><span 
class="n">thrift</span><span class="o">::</span><span 
class="n">transport</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">apache</span><span class="o">::</span><span 
class="n">thrift</span><span class="o">::</span><span 
class="n">server</span><span class="p">;</span>
+
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">tutorial</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span 
class="n">shared</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">CalculatorHandler</span> <span 
class="o">:</span> <span class="k">public</span> <span 
class="n">CalculatorIf</span> <span class="p">{</span>
+ <span class="k">public</span><span class="o">:</span>
+  <span class="n">CalculatorHandler</span><span class="p">()</span> <span 
class="p">{}</span>
+
+  <span class="kt">void</span> <span class="n">ping</span><span 
class="p">()</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;ping()</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">int32_t</span> <span class="n">add</span><span 
class="p">(</span><span class="k">const</span> <span class="n">int32_t</span> 
<span class="n">n1</span><span class="p">,</span> <span class="k">const</span> 
<span class="n">int32_t</span> <span class="n">n2</span><span 
class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;add(%d,%d)</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">,</span> <span class="n">n1</span><span 
class="p">,</span> <span class="n">n2</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">n1</span> <span 
class="o">+</span> <span class="n">n2</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">int32_t</span> <span class="n">calculate</span><span 
class="p">(</span><span class="k">const</span> <span class="n">int32_t</span> 
<span class="n">logid</span><span class="p">,</span> <span 
class="k">const</span> <span class="n">Work</span> <span 
class="o">&amp;</span><span class="n">work</span><span class="p">)</span> <span 
class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;calculate(%d,{%d,%d,%d})</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">,</span> <span 
class="n">logid</span><span class="p">,</span> <span class="n">work</span><span 
class="p">.</span><span class="n">op</span><span class="p">,</span> <span 
class="n">work</span><span class="p">.</span><span class="n">num1</span><span 
class="p">,</span> <span class="n">work</span><span class="p">.</span><span 
class="n">num2</span><span class="p">);</span>
+    <span class="n">int32_t</span> <span class="n">val</span><span 
class="p">;</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span 
class="n">work</span><span class="p">.</span><span class="n">op</span><span 
class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">Operation</span><span 
class="o">::</span><span class="nl">ADD:</span>
+      <span class="n">val</span> <span class="o">=</span> <span 
class="n">work</span><span class="p">.</span><span class="n">num1</span> <span 
class="o">+</span> <span class="n">work</span><span class="p">.</span><span 
class="n">num2</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">Operation</span><span 
class="o">::</span><span class="nl">SUBTRACT:</span>
+      <span class="n">val</span> <span class="o">=</span> <span 
class="n">work</span><span class="p">.</span><span class="n">num1</span> <span 
class="o">-</span> <span class="n">work</span><span class="p">.</span><span 
class="n">num2</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">Operation</span><span 
class="o">::</span><span class="nl">MULTIPLY:</span>
+      <span class="n">val</span> <span class="o">=</span> <span 
class="n">work</span><span class="p">.</span><span class="n">num1</span> <span 
class="o">*</span> <span class="n">work</span><span class="p">.</span><span 
class="n">num2</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">Operation</span><span 
class="o">::</span><span class="nl">DIVIDE:</span>
+      <span class="k">if</span> <span class="p">(</span><span 
class="n">work</span><span class="p">.</span><span class="n">num2</span> <span 
class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span 
class="p">{</span>
+        <span class="n">InvalidOperation</span> <span class="n">io</span><span 
class="p">;</span>
+        <span class="n">io</span><span class="p">.</span><span 
class="n">what</span> <span class="o">=</span> <span class="n">work</span><span 
class="p">.</span><span class="n">op</span><span class="p">;</span>
+        <span class="n">io</span><span class="p">.</span><span 
class="n">why</span> <span class="o">=</span> <span class="s">&quot;Cannot 
divide by 0&quot;</span><span class="p">;</span>
+        <span class="k">throw</span> <span class="n">io</span><span 
class="p">;</span>
+      <span class="p">}</span>
+      <span class="n">val</span> <span class="o">=</span> <span 
class="n">work</span><span class="p">.</span><span class="n">num1</span> <span 
class="o">/</span> <span class="n">work</span><span class="p">.</span><span 
class="n">num2</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">default</span><span class="o">:</span>
+      <span class="n">InvalidOperation</span> <span class="n">io</span><span 
class="p">;</span>
+      <span class="n">io</span><span class="p">.</span><span 
class="n">what</span> <span class="o">=</span> <span class="n">work</span><span 
class="p">.</span><span class="n">op</span><span class="p">;</span>
+      <span class="n">io</span><span class="p">.</span><span 
class="n">why</span> <span class="o">=</span> <span class="s">&quot;Invalid 
Operation&quot;</span><span class="p">;</span>
+      <span class="k">throw</span> <span class="n">io</span><span 
class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">SharedStruct</span> <span class="n">ss</span><span 
class="p">;</span>
+    <span class="n">ss</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="kt">char</span> <span class="n">buffer</span><span 
class="p">[</span><span class="mi">12</span><span class="p">];</span>
+    <span class="n">snprintf</span><span class="p">(</span><span 
class="n">buffer</span><span class="p">,</span> <span 
class="k">sizeof</span><span class="p">(</span><span 
class="n">buffer</span><span class="p">),</span> <span 
class="s">&quot;%d&quot;</span><span class="p">,</span> <span 
class="n">val</span><span class="p">);</span>
+    <span class="n">ss</span><span class="p">.</span><span 
class="n">value</span> <span class="o">=</span> <span 
class="n">buffer</span><span class="p">;</span>
+
+    <span class="n">log</span><span class="p">[</span><span 
class="n">logid</span><span class="p">]</span> <span class="o">=</span> <span 
class="n">ss</span><span class="p">;</span>
+
+    <span class="k">return</span> <span class="n">val</span><span 
class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">getStruct</span><span 
class="p">(</span><span class="n">SharedStruct</span> <span 
class="o">&amp;</span><span class="n">ret</span><span class="p">,</span> <span 
class="k">const</span> <span class="n">int32_t</span> <span 
class="n">logid</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;getStruct(%d)</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">,</span> <span 
class="n">logid</span><span class="p">);</span>
+    <span class="n">ret</span> <span class="o">=</span> <span 
class="n">log</span><span class="p">[</span><span class="n">logid</span><span 
class="p">];</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">zip</span><span 
class="p">()</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;zip()</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="k">protected</span><span class="o">:</span>
+  <span class="n">map</span><span class="o">&lt;</span><span 
class="n">int32_t</span><span class="p">,</span> <span 
class="n">SharedStruct</span><span class="o">&gt;</span> <span 
class="n">log</span><span class="p">;</span>
+
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="n">main</span><span 
class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span 
class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span 
class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+
+  <span class="n">boost</span><span class="o">::</span><span 
class="n">shared_ptr</span><span class="o">&lt;</span><span 
class="n">TProtocolFactory</span><span class="o">&gt;</span> <span 
class="n">protocolFactory</span><span class="p">(</span><span 
class="k">new</span> <span class="n">TBinaryProtocolFactory</span><span 
class="p">());</span>
+  <span class="n">boost</span><span class="o">::</span><span 
class="n">shared_ptr</span><span class="o">&lt;</span><span 
class="n">CalculatorHandler</span><span class="o">&gt;</span> <span 
class="n">handler</span><span class="p">(</span><span class="k">new</span> 
<span class="n">CalculatorHandler</span><span class="p">());</span>
+  <span class="n">boost</span><span class="o">::</span><span 
class="n">shared_ptr</span><span class="o">&lt;</span><span 
class="n">TProcessor</span><span class="o">&gt;</span> <span 
class="n">processor</span><span class="p">(</span><span class="k">new</span> 
<span class="n">CalculatorProcessor</span><span class="p">(</span><span 
class="n">handler</span><span class="p">));</span>
+  <span class="n">boost</span><span class="o">::</span><span 
class="n">shared_ptr</span><span class="o">&lt;</span><span 
class="n">TServerTransport</span><span class="o">&gt;</span> <span 
class="n">serverTransport</span><span class="p">(</span><span 
class="k">new</span> <span class="n">TServerSocket</span><span 
class="p">(</span><span class="mi">9090</span><span class="p">));</span>
+  <span class="n">boost</span><span class="o">::</span><span 
class="n">shared_ptr</span><span class="o">&lt;</span><span 
class="n">TTransportFactory</span><span class="o">&gt;</span> <span 
class="n">transportFactory</span><span class="p">(</span><span 
class="k">new</span> <span class="n">TBufferedTransportFactory</span><span 
class="p">());</span>
+
+  <span class="n">TSimpleServer</span> <span class="n">server</span><span 
class="p">(</span><span class="n">processor</span><span class="p">,</span>
+                       <span class="n">serverTransport</span><span 
class="p">,</span>
+                       <span class="n">transportFactory</span><span 
class="p">,</span>
+                       <span class="n">protocolFactory</span><span 
class="p">);</span>
+
+
+  <span class="cm">/**</span>
+<span class="cm">   * Or you could do one of these</span>
+
+<span class="cm">  boost::shared_ptr&lt;ThreadManager&gt; threadManager 
=</span>
+<span class="cm">    ThreadManager::newSimpleThreadManager(workerCount);</span>
+<span class="cm">  boost::shared_ptr&lt;PosixThreadFactory&gt; threadFactory 
=</span>
+<span class="cm">    boost::shared_ptr&lt;PosixThreadFactory&gt;(new 
PosixThreadFactory());</span>
+<span class="cm">  threadManager-&gt;threadFactory(threadFactory);</span>
+<span class="cm">  threadManager-&gt;start();</span>
+<span class="cm">  TThreadPoolServer server(processor,</span>
+<span class="cm">                           serverTransport,</span>
+<span class="cm">                           transportFactory,</span>
+<span class="cm">                           protocolFactory,</span>
+<span class="cm">                           threadManager);</span>
+
+<span class="cm">  TThreadedServer server(processor,</span>
+<span class="cm">                         serverTransport,</span>
+<span class="cm">                         transportFactory,</span>
+<span class="cm">                         protocolFactory);</span>
+
+<span class="cm">  */</span>
+
+  <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;Starting the server...</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+  <span class="n">server</span><span class="p">.</span><span 
class="n">serve</span><span class="p">();</span>
+  <span class="n">printf</span><span class="p">(</span><span 
class="s">&quot;done.</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span 
class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
 <h2 id="additional-information">Additional Information</h2>
 <h3 id="example-threadpool-server">Example ThreadPool Server</h3>
 <div class="codehilite"><pre>  <span class="n">boost</span><span 
class="o">::</span><span class="n">shared_ptr</span><span 
class="o">&lt;</span><span class="n">ThreadManager</span><span 
class="o">&gt;</span> <span class="n">threadManager</span> <span 
class="o">=</span>


Reply via email to