blob: 891f8c2930151f7a324541234b53d8c876b0bfbc [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
// Do not modify!
// Generated by rpcapi
////////////////////////////////////////////////////////////////////////////////
package test
import (
"fmt"
"io"
"runtime/debug"
"android.googlesource.com/platform/tools/gpu/binary"
"android.googlesource.com/platform/tools/gpu/config"
"android.googlesource.com/platform/tools/gpu/log"
"android.googlesource.com/platform/tools/gpu/rpc"
)
func BindServer(r io.Reader, w io.Writer, mtu int, l log.Logger, server RPC) {
rpc.Serve(l, r, w, mtu, func(in interface{}) (res binary.Object) {
l := l.Fork().Enter(fmt.Sprintf("%v", in))
defer func() {
if err := recover(); err == nil {
if config.DebugRPCCalls {
l.Infof("returned: %v", res)
}
} else {
msg := fmt.Sprintf("Panic: %v\n%v", err, string(debug.Stack()))
l.Errorf(msg)
res = rpc.NewError(msg)
}
}()
switch call := in.(type) {
case *callAdd:
if res, err := server.Add(l, call.a, call.b); err == nil {
return &resultAdd{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callEnumToString:
if res, err := server.EnumToString(l, call.e); err == nil {
return &resultEnumToString{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetStruct:
if res, err := server.GetStruct(l); err == nil {
return &resultGetStruct{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callSetStruct:
if err := server.SetStruct(l, call.s); err == nil {
return &resultSetStruct{}
} else {
return rpc.NewError(err.Error())
}
case *callGetResource:
if res, err := server.GetResource(l); err == nil {
return &resultGetResource{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callUseResource:
if err := server.UseResource(l, call.r); err == nil {
return &resultUseResource{}
} else {
return rpc.NewError(err.Error())
}
case *callResolveResource:
if res, err := server.ResolveResource(l, call.r); err == nil {
return &resultResolveResource{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetSingleListNode:
if res, err := server.GetSingleListNode(l); err == nil {
return &resultGetSingleListNode{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetListNodeChain:
if res, err := server.GetListNodeChain(l); err == nil {
return &resultGetListNodeChain{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetListNodeChainArray:
if res, err := server.GetListNodeChainArray(l); err == nil {
return &resultGetListNodeChainArray{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetBase:
if res, err := server.GetBase(l); err == nil {
return &resultGetBase{value: res}
} else {
return rpc.NewError(err.Error())
}
case *callGetDerived:
if res, err := server.GetDerived(l); err == nil {
return &resultGetDerived{value: res}
} else {
return rpc.NewError(err.Error())
}
default:
return rpc.NewError("Unexpected RPC function: %T", call)
}
})
}