blob: 30b5d528429f412029b9a13830a01043cebb2d84 [file] [log] [blame]
package main;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import (
"flag"
"fmt"
"os"
"thrift"
)
func Usage() {
fmt.Fprint(os.Stderr, "Usage of ", os.Args[0], " <--server | --client>:\n")
flag.PrintDefaults()
fmt.Fprint(os.Stderr, "\n")
os.Exit(0)
}
func main() {
flag.Usage = Usage
var client bool
var server bool
var protocol string
var framed bool
var useHttp bool
var help bool
flag.BoolVar(&client, "client", false, "Run client")
flag.BoolVar(&server, "server", false, "Run server")
flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson)")
flag.BoolVar(&framed, "framed", false, "Use framed transport")
flag.BoolVar(&useHttp, "http", false, "Use http")
flag.BoolVar(&help, "help", false, "See usage string")
flag.Parse()
if help || (client && server) || !(client || server) {
fmt.Print("flag.NArg() == ", flag.NArg(), "\n")
flag.Usage()
}
var protocolFactory thrift.TProtocolFactory
switch protocol {
case "compact":
protocolFactory = thrift.NewTCompactProtocolFactory()
case "simplejson":
protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
case "json":
protocolFactory = thrift.NewTJSONProtocolFactory()
case "binary", "":
protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
default:
fmt.Fprint(os.Stderr, "Invalid protocol specified", protocol, "\n")
Usage()
os.Exit(1)
}
transportFactory := thrift.NewTTransportFactory()
if framed {
transportFactory = thrift.NewTFramedTransportFactory(transportFactory)
}
if(client) {
RunClient(transportFactory, protocolFactory)
} else if(server) {
RunServer(transportFactory, protocolFactory)
} else {
flag.Usage()
}
os.Exit(0)
}