1// Autogenerated by Thrift Compiler (0.11.0)
2// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
3
4package main
5
6import (
7	"context"
8	"flag"
9	"fmt"
10	"math"
11	"net"
12	"net/url"
13	"os"
14	"strconv"
15	"strings"
16
17	"go.opentelemetry.io/otel/exporters/trace/jaeger/internal/third_party/thrift/lib/go/thrift"
18
19	"go.opentelemetry.io/otel/exporters/trace/jaeger/internal/gen-go/jaeger"
20)
21
22func Usage() {
23	fmt.Fprintln(os.Stderr, "Usage of ", os.Args[0], " [-h host:port] [-u url] [-f[ramed]] function [arg1 [arg2...]]:")
24	flag.PrintDefaults()
25	fmt.Fprintln(os.Stderr, "\nFunctions:")
26	fmt.Fprintln(os.Stderr, "   submitBatches( batches)")
27	fmt.Fprintln(os.Stderr)
28	os.Exit(0)
29}
30
31func main() {
32	flag.Usage = Usage
33	var host string
34	var port int
35	var protocol string
36	var urlString string
37	var framed bool
38	var useHTTP bool
39	var parsedURL *url.URL
40	var trans thrift.TTransport
41	_ = strconv.Atoi
42	_ = math.Abs
43	flag.Usage = Usage
44	flag.StringVar(&host, "h", "localhost", "Specify host and port")
45	flag.IntVar(&port, "p", 9090, "Specify port")
46	flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson, json)")
47	flag.StringVar(&urlString, "u", "", "Specify the url")
48	flag.BoolVar(&framed, "framed", false, "Use framed transport")
49	flag.BoolVar(&useHTTP, "http", false, "Use http")
50	flag.Parse()
51
52	if len(urlString) > 0 {
53		var err error
54		parsedURL, err = url.Parse(urlString)
55		if err != nil {
56			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
57			flag.Usage()
58		}
59		host = parsedURL.Host
60		useHTTP = len(parsedURL.Scheme) <= 0 || parsedURL.Scheme == "http"
61	} else if useHTTP {
62		_, err := url.Parse(fmt.Sprint("http://", host, ":", port))
63		if err != nil {
64			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
65			flag.Usage()
66		}
67	}
68
69	cmd := flag.Arg(0)
70	var err error
71	if useHTTP {
72		trans, err = thrift.NewTHttpClient(parsedURL.String())
73	} else {
74		portStr := fmt.Sprint(port)
75		if strings.Contains(host, ":") {
76			host, portStr, err = net.SplitHostPort(host)
77			if err != nil {
78				fmt.Fprintln(os.Stderr, "error with host:", err)
79				os.Exit(1)
80			}
81		}
82		trans, err = thrift.NewTSocket(net.JoinHostPort(host, portStr))
83		if err != nil {
84			fmt.Fprintln(os.Stderr, "error resolving address:", err)
85			os.Exit(1)
86		}
87		if framed {
88			trans = thrift.NewTFramedTransport(trans)
89		}
90	}
91	if err != nil {
92		fmt.Fprintln(os.Stderr, "Error creating transport", err)
93		os.Exit(1)
94	}
95	defer trans.Close()
96	var protocolFactory thrift.TProtocolFactory
97	switch protocol {
98	case "compact":
99		protocolFactory = thrift.NewTCompactProtocolFactory()
100		break
101	case "simplejson":
102		protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
103		break
104	case "json":
105		protocolFactory = thrift.NewTJSONProtocolFactory()
106		break
107	case "binary", "":
108		protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
109		break
110	default:
111		fmt.Fprintln(os.Stderr, "Invalid protocol specified: ", protocol)
112		Usage()
113		os.Exit(1)
114	}
115	iprot := protocolFactory.GetProtocol(trans)
116	oprot := protocolFactory.GetProtocol(trans)
117	client := jaeger.NewCollectorClient(thrift.NewTStandardClient(iprot, oprot))
118	if err := trans.Open(); err != nil {
119		fmt.Fprintln(os.Stderr, "Error opening socket to ", host, ":", port, " ", err)
120		os.Exit(1)
121	}
122
123	switch cmd {
124	case "submitBatches":
125		if flag.NArg()-1 != 1 {
126			fmt.Fprintln(os.Stderr, "SubmitBatches requires 1 args")
127			flag.Usage()
128		}
129		arg12 := flag.Arg(1)
130		mbTrans13 := thrift.NewTMemoryBufferLen(len(arg12))
131		defer mbTrans13.Close()
132		_, err14 := mbTrans13.WriteString(arg12)
133		if err14 != nil {
134			Usage()
135			return
136		}
137		factory15 := thrift.NewTSimpleJSONProtocolFactory()
138		jsProt16 := factory15.GetProtocol(mbTrans13)
139		containerStruct0 := jaeger.NewCollectorSubmitBatchesArgs()
140		err17 := containerStruct0.ReadField1(jsProt16)
141		if err17 != nil {
142			Usage()
143			return
144		}
145		argvalue0 := containerStruct0.Batches
146		value0 := argvalue0
147		fmt.Print(client.SubmitBatches(context.Background(), value0))
148		fmt.Print("\n")
149		break
150	case "":
151		Usage()
152		break
153	default:
154		fmt.Fprintln(os.Stderr, "Invalid function ", cmd)
155	}
156}
157