|  | /* | 
|  | * 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. | 
|  | */ | 
|  |  | 
|  | package tests | 
|  |  | 
|  | import ( | 
|  | "context" | 
|  | "errors" | 
|  | "time" | 
|  |  | 
|  | "github.com/apache/thrift/lib/go/test/gopath/src/thrifttest" | 
|  | "github.com/apache/thrift/lib/go/thrift" | 
|  | ) | 
|  |  | 
|  | type SecondServiceHandler struct { | 
|  | } | 
|  |  | 
|  | func NewSecondServiceHandler() *SecondServiceHandler { | 
|  | return &SecondServiceHandler{} | 
|  | } | 
|  |  | 
|  | func (p *SecondServiceHandler) BlahBlah(ctx context.Context) (err error) { | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func (p *SecondServiceHandler) SecondtestString(ctx context.Context, thing string) (r string, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | type ThriftTestHandler struct { | 
|  | } | 
|  |  | 
|  | func NewThriftTestHandler() *ThriftTestHandler { | 
|  | return &ThriftTestHandler{} | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestVoid(ctx context.Context) (err error) { | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestString(ctx context.Context, thing string) (r string, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestBool(ctx context.Context, thing bool) (r bool, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestByte(ctx context.Context, thing int8) (r int8, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestI32(ctx context.Context, thing int32) (r int32, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestI64(ctx context.Context, thing int64) (r int64, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestDouble(ctx context.Context, thing float64) (r float64, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestBinary(ctx context.Context, thing []byte) (r []byte, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestUuid(ctx context.Context, thing thrift.Tuuid) (r thrift.Tuuid, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestStruct(ctx context.Context, thing *thrifttest.Xtruct) (r *thrifttest.Xtruct, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestNest(ctx context.Context, thing *thrifttest.Xtruct2) (r *thrifttest.Xtruct2, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestMap(ctx context.Context, thing map[int32]int32) (r map[int32]int32, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestStringMap(ctx context.Context, thing map[string]string) (r map[string]string, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestSet(ctx context.Context, thing []int32) (r []int32, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestList(ctx context.Context, thing []int32) (r []int32, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestEnum(ctx context.Context, thing thrifttest.Numberz) (r thrifttest.Numberz, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestTypedef(ctx context.Context, thing thrifttest.UserId) (r thrifttest.UserId, err error) { | 
|  | return thing, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestMapMap(ctx context.Context, hello int32) (r map[int32]map[int32]int32, err error) { | 
|  | r = make(map[int32]map[int32]int32) | 
|  | pos := make(map[int32]int32) | 
|  | neg := make(map[int32]int32) | 
|  |  | 
|  | for i := int32(1); i < 5; i++ { | 
|  | pos[i] = i | 
|  | neg[-i] = -i | 
|  | } | 
|  | r[4] = pos | 
|  | r[-4] = neg | 
|  |  | 
|  | return r, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestInsanity(ctx context.Context, argument *thrifttest.Insanity) (r map[thrifttest.UserId]map[thrifttest.Numberz]*thrifttest.Insanity, err error) { | 
|  | hello := thrifttest.NewXtruct() | 
|  | hello.StringThing = "Hello2" | 
|  | hello.ByteThing = 2 | 
|  | hello.I32Thing = 2 | 
|  | hello.I64Thing = 2 | 
|  |  | 
|  | goodbye := thrifttest.NewXtruct() | 
|  | goodbye.StringThing = "Goodbye4" | 
|  | goodbye.ByteThing = 4 | 
|  | goodbye.I32Thing = 4 | 
|  | goodbye.I64Thing = 4 | 
|  |  | 
|  | crazy := thrifttest.NewInsanity() | 
|  | crazy.UserMap = make(map[thrifttest.Numberz]thrifttest.UserId) | 
|  | crazy.UserMap[thrifttest.Numberz_EIGHT] = 8 | 
|  | crazy.UserMap[thrifttest.Numberz_FIVE] = 5 | 
|  | crazy.Xtructs = []*thrifttest.Xtruct{goodbye, hello} | 
|  |  | 
|  | first_map := make(map[thrifttest.Numberz]*thrifttest.Insanity) | 
|  | second_map := make(map[thrifttest.Numberz]*thrifttest.Insanity) | 
|  |  | 
|  | first_map[thrifttest.Numberz_TWO] = crazy | 
|  | first_map[thrifttest.Numberz_THREE] = crazy | 
|  |  | 
|  | looney := thrifttest.NewInsanity() | 
|  | second_map[thrifttest.Numberz_SIX] = looney | 
|  |  | 
|  | var insane = make(map[thrifttest.UserId]map[thrifttest.Numberz]*thrifttest.Insanity) | 
|  | insane[1] = first_map | 
|  | insane[2] = second_map | 
|  |  | 
|  | return insane, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestMulti(ctx context.Context, arg0 int8, arg1 int32, arg2 int64, arg3 map[int16]string, arg4 thrifttest.Numberz, arg5 thrifttest.UserId) (r *thrifttest.Xtruct, err error) { | 
|  | r = thrifttest.NewXtruct() | 
|  | r.StringThing = "Hello2" | 
|  | r.ByteThing = arg0 | 
|  | r.I32Thing = arg1 | 
|  | r.I64Thing = arg2 | 
|  | return r, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestException(ctx context.Context, arg string) (err error) { | 
|  | if arg == "Xception" { | 
|  | x := thrifttest.NewXception() | 
|  | x.ErrorCode = 1001 | 
|  | x.Message = arg | 
|  | return x | 
|  | } else if arg == "TException" { | 
|  | return thrift.WrapTException(errors.New(arg)) | 
|  | } else { | 
|  | return nil | 
|  | } | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestMultiException(ctx context.Context, arg0 string, arg1 string) (r *thrifttest.Xtruct, err error) { | 
|  | if arg0 == "Xception" { | 
|  | x := thrifttest.NewXception() | 
|  | x.ErrorCode = 1001 | 
|  | x.Message = "This is an Xception" | 
|  | return nil, x | 
|  | } else if arg0 == "Xception2" { | 
|  | x2 := thrifttest.NewXception2() | 
|  | x2.ErrorCode = 2002 | 
|  | x2.StructThing = thrifttest.NewXtruct() | 
|  | x2.StructThing.StringThing = "This is an Xception2" | 
|  | return nil, x2 | 
|  | } | 
|  |  | 
|  | res := thrifttest.NewXtruct() | 
|  | res.StringThing = arg1 | 
|  | return res, nil | 
|  | } | 
|  |  | 
|  | func (p *ThriftTestHandler) TestOneway(ctx context.Context, secondsToSleep int32) (err error) { | 
|  | time.Sleep(time.Second * time.Duration(secondsToSleep)) | 
|  | return nil | 
|  | } |