You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by bu...@apache.org on 2014/03/23 00:24:13 UTC

svn commit: r903008 - in /websites/staging/thrift/trunk/content: ./ tutorial/cpp.html

Author: buildbot
Date: Sat Mar 22 23:24:13 2014
New Revision: 903008

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:24:13 2014
@@ -1 +1 @@
-1580364
+1580365

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:24:13 2014
@@ -86,9 +86,70 @@
 </ol>
 <h3 id="prerequisites">Prerequisites</h3>
 <h3 id="client">Client</h3>
-<div class="codehilite"><pre><span class="p">[</span><span class="n">XXXsnippet</span><span class="p">:</span><span class="n">path</span><span class="p">=</span><span class="n">tutorial</span><span class="o">/</span><span class="n">cpp</span><span class="o">/</span><span class="n">CppClient</span><span class="p">.</span><span class="n">cpp</span><span class="p">:</span><span class="n">lang</span><span class="p">=</span><span class="n">cpp</span><span class="p">:</span><span class="n">lines</span><span class="p">=</span>20<span class="p">,</span>82<span class="p">]</span>
-</pre></div>
+<div class="codehilite"><pre><span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;unistd.h&gt;</span>
+<span class="cp">#include &lt;sys/time.h&gt;</span>
+
+<span class="cp">#include &lt;thrift/protocol/TBinaryProtocol.h&gt;</span>
+<span class="cp">#include &lt;thrift/transport/TSocket.h&gt;</span>
+<span class="cp">#include &lt;thrift/transport/TTransportUtils.h&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">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="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">TTransport</span><span class="o">&gt;</span> <span class="n">socket</span><span class="p">(</span><span class="k">new</span> <span class="n">TSocket</span><span class="p">(</span><span class="s">&quot;localhost&quot;</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">TTransport</span><span class="o">&gt;</span> <span class="n">transport</span><span class="p">(</span><span class="k">new</span> <span class="n">TBufferedTransport</span><span class="p">(</span><span class="n">socket</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">TProtocol</span><span class="o">&gt;</span> <span class="n">protocol</span><span class="p">(</span><span class="k">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">));</span>
+  <span class="n">CalculatorClient</span> <span class="n">client</span><span class="p">(</span><span class="n">protocol</span><span class="p">);</span>
+
+  <span class="k">try</span> <span class="p">{</span>
+    <span class="n">transport</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">();</span>
+
+    <span class="n">client</span><span class="p">.</span><span class="n">ping</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="n">int32_t</span> <span class="n">sum</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;1+1=%d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sum</span><span class="p">);</span>
+
+    <span class="n">Work</span> <span class="n">work</span><span class="p">;</span>
+    <span class="n">work</span><span class="p">.</span><span class="n">op</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">::</span><span class="n">DIVIDE</span><span class="p">;</span>
+    <span class="n">work</span><span class="p">.</span><span class="n">num1</span> <span class="o">=</span> <span class="mi">1</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="k">try</span> <span class="p">{</span>
+      <span class="n">client</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">work</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Whoa? We can divide by zero!</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">InvalidOperation</span> <span class="o">&amp;</span><span class="n">io</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;InvalidOperation: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">io</span><span class="p">.</span><span class="n">why</span><span class="p">.</span><span class="n">c_str</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="n">work</span><span class="p">.</span><span class="n">op</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">::</span><span class="n">SUBTRACT</span><span class="p">;</span>
+    <span class="n">work</span><span class="p">.</span><span class="n">num1</span> <span class="o">=</span> <span class="mi">15</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">10</span><span class="p">;</span>
+    <span class="n">int32_t</span> <span class="n">diff</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">work</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;15-10=%d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">diff</span><span class="p">);</span>
+
+    <span class="c1">// Note that C++ uses return by reference for complex types to avoid</span>
+    <span class="c1">// costly copy construction</span>
+    <span class="n">SharedStruct</span> <span class="n">ss</span><span class="p">;</span>
+    <span class="n">client</span><span class="p">.</span><span class="n">getStruct</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Check log: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">ss</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">c_str</span><span class="p">());</span>
+
+    <span class="n">transport</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
+  <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">TException</span> <span class="o">&amp;</span><span class="n">tx</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">tx</span><span class="p">.</span><span class="n">what</span><span class="p">());</span>
+  <span class="p">}</span>
+
+<span class="p">}</span>
+</pre></div>
 
 <h3 id="server">Server</h3>
 <p>[XXXsnippet:path=tutorial/cpp/CppServer.cpp:lang=cpp:lines=20,152]</p>