Author: jensg
Date: Wed Feb  5 20:34:16 2014
New Revision: 1564918

URL: http://svn.apache.org/r1564918
Log:
Updated Go tutorial according to THRIFT-2349

Modified:
    thrift/site/content/tutorial/go.md
    thrift/site/publish/tutorial/go/index.html

Modified: thrift/site/content/tutorial/go.md
URL: 
http://svn.apache.org/viewvc/thrift/site/content/tutorial/go.md?rev=1564918&r1=1564917&r2=1564918&view=diff
==============================================================================
--- thrift/site/content/tutorial/go.md (original)
+++ thrift/site/content/tutorial/go.md Wed Feb  5 20:34:16 2014
@@ -15,6 +15,7 @@ Implements the client code which consume
 
 <pre><code class="language-c"> 
 import (
+       "crypto/tls"
        "fmt"
        "git.apache.org/thrift.git/lib/go/thrift"
        "tutorial"
@@ -31,12 +32,15 @@ func handleClient(client *tutorial.Calcu
        work.Op = tutorial.Operation_DIVIDE
        work.Num1 = 1
        work.Num2 = 0
-       quotient, ouch, err := client.Calculate(1, work)
+       quotient, err := client.Calculate(1, work)
        if err != nil {
-               fmt.Println("Error during operation:", err)
+               switch v := err.(type) {
+               case *tutorial.InvalidOperation:
+                       fmt.Println("Invalid operation:", v)
+               default:
+                       fmt.Println("Error during operation:", err)
+               }
                return err
-       } else if ouch != nil {
-               fmt.Println("Invalid operation:", ouch)
        } else {
                fmt.Println("Whoa we can divide by 0 with new value:", quotient)
        }
@@ -44,12 +48,15 @@ func handleClient(client *tutorial.Calcu
        work.Op = tutorial.Operation_SUBTRACT
        work.Num1 = 15
        work.Num2 = 10
-       diff, ouch, err := client.Calculate(1, work)
+       diff, err := client.Calculate(1, work)
        if err != nil {
-               fmt.Println("Error during operation:", err)
+               switch v := err.(type) {
+               case *tutorial.InvalidOperation:
+                       fmt.Println("Invalid operation:", v)
+               default:
+                       fmt.Println("Error during operation:", err)
+               }
                return err
-       } else if ouch != nil {
-               fmt.Println("Invalid operation:", ouch)
        } else {
                fmt.Print("15-10=", diff, "\n")
        }
@@ -64,9 +71,16 @@ func handleClient(client *tutorial.Calcu
        return err
 }
 
-func runClient(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string) error {
+func runClient(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string, secure bool) error {
        var transport thrift.TTransport
-       transport, err := thrift.NewTSocket(addr)
+       var err error
+       if secure {
+               cfg := new(tls.Config)
+               cfg.InsecureSkipVerify = true
+               transport, err = thrift.NewTSSLSocket(addr, cfg)
+       } else {
+               transport, err = thrift.NewTSocket(addr)
+       }
        if err != nil {
                fmt.Println("Error opening socket:", err)
                return err
@@ -86,21 +100,36 @@ Implements a simple socket server.
 
 <pre><code class="language-c"> 
 import (
+       "crypto/tls"
        "fmt"
        "git.apache.org/thrift.git/lib/go/thrift"
        "tutorial"
 )
 
-func runServer(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string) error {
-       transport, err := thrift.NewTServerSocket(addr)
+func runServer(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string, secure bool) error {
+       var transport thrift.TServerTransport
+       var err error
+       if secure {
+               cfg := new(tls.Config)
+               if cert, err := tls.LoadX509KeyPair("server.crt", 
"server.key"); err == nil {
+                       cfg.Certificates = append(cfg.Certificates, cert)
+               } else {
+                       return err
+               }
+               transport, err = thrift.NewTSSLServerSocket(addr, cfg)
+       } else {
+               transport, err = thrift.NewTServerSocket(addr)
+       }
+       
        if err != nil {
                return err
        }
+       fmt.Printf("%T\n", transport)
        handler := NewCalculatorHandler()
        processor := tutorial.NewCalculatorProcessor(handler)
        server := thrift.NewTSimpleServer4(processor, transport, 
transportFactory, protocolFactory)
 
-       fmt.Println("Starting the simple server... on ", transport.Addr())
+       fmt.Println("Starting the simple server... on ", addr)
        return server.Serve()
 }
 </code></pre>
@@ -136,7 +165,7 @@ func (p *CalculatorHandler) Add(num1 int
        return num1 + num2, nil
 }
 
-func (p *CalculatorHandler) Calculate(logid int32, w *tutorial.Work) (val 
int32, ouch *tutorial.InvalidOperation, err error) {
+func (p *CalculatorHandler) Calculate(logid int32, w *tutorial.Work) (val 
int32, err error) {
        fmt.Print("calculate(", logid, ", {", w.Op, ",", w.Num1, ",", w.Num2, 
"})\n")
        switch w.Op {
        case tutorial.Operation_ADD:
@@ -150,17 +179,19 @@ func (p *CalculatorHandler) Calculate(lo
                break
        case tutorial.Operation_DIVIDE:
                if w.Num2 == 0 {
-                       ouch = tutorial.NewInvalidOperation()
+                       ouch := tutorial.NewInvalidOperation()
                        ouch.What = int32(w.Op)
                        ouch.Why = "Cannot divide by 0"
+                       err = ouch
                        return
                }
                val = w.Num1 / w.Num2
                break
        default:
-               ouch = tutorial.NewInvalidOperation()
+               ouch := tutorial.NewInvalidOperation()
                ouch.What = int32(w.Op)
                ouch.Why = "Unknown operation"
+               err = ouch
                return
        }
        entry := shared.NewSharedStruct()
@@ -169,7 +200,7 @@ func (p *CalculatorHandler) Calculate(lo
        k := int(logid)
 
        p.log[k] = entry
-       return val, ouch, err
+       return val, err
 }
 
 func (p *CalculatorHandler) GetStruct(key int32) (*shared.SharedStruct, error) 
{
@@ -205,10 +236,11 @@ func Usage() {
 func main() {
        flag.Usage = Usage
        server := flag.Bool("server", false, "Run server")
-       protocol := flag.String("P", "binary", "Specify the protocol (binary, 
compact, simplejson)")
+       protocol := flag.String("P", "binary", "Specify the protocol (binary, 
compact, json)")
        framed := flag.Bool("framed", false, "Use framed transport")
        buffered := flag.Bool("buffered", false, "Use buffered transport")
        addr := flag.String("addr", "localhost:9090", "Address to listen to")
+       secure := flag.Bool("secure", false, "Use tls secure transport")
 
        flag.Parse()
 
@@ -216,8 +248,6 @@ func main() {
        switch *protocol {
        case "compact":
                protocolFactory = thrift.NewTCompactProtocolFactory()
-       case "simplejson":
-               protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
        case "json":
                protocolFactory = thrift.NewTJSONProtocolFactory()
        case "binary", "":
@@ -240,11 +270,11 @@ func main() {
        }
 
        if *server {
-               if err := runServer(transportFactory, protocolFactory, *addr); 
err != nil {
+               if err := runServer(transportFactory, protocolFactory, *addr, 
*secure); err != nil {
                        fmt.Println("error running server:", err)
                }
        } else {
-               if err := runClient(transportFactory, protocolFactory, *addr); 
err != nil {
+               if err := runClient(transportFactory, protocolFactory, *addr, 
*secure); err != nil {
                        fmt.Println("error running client:", err)
                }
        }

Modified: thrift/site/publish/tutorial/go/index.html
URL: 
http://svn.apache.org/viewvc/thrift/site/publish/tutorial/go/index.html?rev=1564918&r1=1564917&r2=1564918&view=diff
==============================================================================
--- thrift/site/publish/tutorial/go/index.html (original)
+++ thrift/site/publish/tutorial/go/index.html Wed Feb  5 20:34:16 2014
@@ -68,7 +68,9 @@
        <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>
 
@@ -81,16 +83,21 @@
 </code></pre>
 </li>
 <li><p>Followed all prerequesets listed </p></li>
-</ol><h3>Prerequisites</h3>
+</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>
+</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>
@@ -107,12 +114,15 @@ func handleClient(client *tutorial.Calcu
     work.Op = tutorial.Operation_DIVIDE
     work.Num1 = <span style="color:#00D">1</span>
     work.Num2 = <span style="color:#00D">0</span>
-    quotient, ouch, err := client.Calculate(<span style="color:#00D">1</span>, 
work)
+    quotient, err := client.Calculate(<span style="color:#00D">1</span>, work)
     <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 during 
operation:</span><span style="color:#710">"</span></span>, err)
+        <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> <span 
style="color:#080;font-weight:bold">if</span> ouch != nil {
-        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>, ouch)
     } <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)
     }
@@ -120,12 +130,15 @@ func handleClient(client *tutorial.Calcu
     work.Op = tutorial.Operation_SUBTRACT
     work.Num1 = <span style="color:#00D">15</span>
     work.Num2 = <span style="color:#00D">10</span>
-    diff, ouch, err := client.Calculate(<span style="color:#00D">1</span>, 
work)
+    diff, err := client.Calculate(<span style="color:#00D">1</span>, work)
     <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 during 
operation:</span><span style="color:#710">"</span></span>, err)
+        <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> <span 
style="color:#080;font-weight:bold">if</span> ouch != nil {
-        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>, ouch)
     } <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>)
     }
@@ -140,9 +153,16 @@ func handleClient(client *tutorial.Calcu
     <span style="color:#080;font-weight:bold">return</span> err
 }
 
-func runClient(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string) error {
+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
-    transport, err := thrift.NewTSocket(addr)
+    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
@@ -160,21 +180,36 @@ func runClient(transportFactory thrift.T
 <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>
 )
 
-func runServer(transportFactory thrift.TTransportFactory, protocolFactory 
thrift.TProtocolFactory, addr string) error {
-    transport, err := thrift.NewTServerSocket(addr)
+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)
+        } <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)
+    }
+    
     <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>, transport.Addr())
+    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>
 
@@ -207,7 +242,7 @@ func (p *CalculatorHandler) Add(num1 int
     <span style="color:#080;font-weight:bold">return</span> num1 + num2, nil
 }
 
-func (p *CalculatorHandler) Calculate(logid int32, w *tutorial.Work) (val 
int32, ouch *tutorial.InvalidOperation, err error) {
+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:
@@ -221,17 +256,19 @@ func (p *CalculatorHandler) Calculate(lo
         <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 := 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>
         }
         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 := 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()
@@ -240,7 +277,7 @@ func (p *CalculatorHandler) Calculate(lo
     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, ouch, err
+    <span style="color:#080;font-weight:bold">return</span> val, err
 }
 
 func (p *CalculatorHandler) GetStruct(key int32) (*shared.SharedStruct, error) 
{
@@ -274,10 +311,11 @@ func Usage() {
 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, simplejson)</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()
 
@@ -285,8 +323,6 @@ func main() {
     <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">simplejson</span><span 
style="color:#710">"</span></span>:
-        protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
     <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>:
@@ -309,11 +345,11 @@ func main() {
     }
 
     <span style="color:#080;font-weight:bold">if</span> *server {
-        <span style="color:#080;font-weight:bold">if</span> err := 
runServer(transportFactory, protocolFactory, *addr); err != nil {
+        <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); err != nil {
+        <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)
         }
     }
@@ -326,6 +362,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>


Reply via email to