in misc/homework_assignment_1337/src/main.go [39:106]
func main() {
flag.Usage = Usage
server := flag.Bool("server", false, "Run server")
protocol := flag.String("P", "binary", "Specify the protocol (binary, compact, json, simplejson)")
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")
key := flag.String("flag", "flag{this_is_this_flag}", "Set the flag value")
test := flag.Bool("test", false, "Test-solve the challenge")
flush := flag.Bool("flush", false, "Flush the entries")
flag.Parse()
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)
}
var transportFactory thrift.TTransportFactory
if *buffered {
transportFactory = thrift.NewTBufferedTransportFactory(8192)
} else {
transportFactory = thrift.NewTTransportFactory()
}
if *framed {
transportFactory = thrift.NewTFramedTransportFactory(transportFactory)
}
if *server {
go func() {
time.Sleep(3 * time.Second)
for {
fmt.Println("Flushing...")
if err := runClient(transportFactory, protocolFactory, *addr, *secure, *test, FlushKey); err != nil {
fmt.Println("error running client:", err)
}
if err := runClient(transportFactory, protocolFactory, *addr, *secure, *test, *key); err != nil {
fmt.Println("error running client:", err)
}
time.Sleep(30 * time.Second)
}
}()
if err := runServer(transportFactory, protocolFactory, *addr, *secure); err != nil {
fmt.Println("error running server:", err)
}
} else if *flush {
if err := runClient(transportFactory, protocolFactory, *addr, *secure, *test, FlushKey); err != nil {
fmt.Println("error running client:", err)
}
} else {
if err := runClient(transportFactory, protocolFactory, *addr, *secure, *test, *key); err != nil {
fmt.Println("error running client:", err)
}
}
}