blob: cb5eebc16ae1a5a3b61bbfd349a7c05a937d272f [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
// Do not modify!
// Generated by codergen
////////////////////////////////////////////////////////////////////////////////
package test
import (
"fmt"
"io"
"android.googlesource.com/platform/tools/gpu/framework/binary"
"android.googlesource.com/platform/tools/gpu/framework/log"
"android.googlesource.com/platform/tools/gpu/framework/rpc"
)
// Server is the server interface for service calls.
type Server interface {
// Server exposes all the service interface methods.
RPC
}
// BindServer starts a service on the stream s, delegating all RPC calls on to server.
func BindServer(ctx log.Context, s io.ReadWriteCloser, mtu int, server Server) {
rpc.Serve(ctx, s, mtu, Handler(server))
}
// Handler returns an rpc.Handler wrapping the given server.
func Handler(server Server) rpc.Handler {
return func(ctx log.Context, in interface{}) (res binary.Object, err error) {
ty := fmt.Sprintf("%T", in)
ctx = ctx.Enter(ty)
defer func() {
if r := recover(); r == nil {
if err != nil {
ctx.Tag("rpc").LogError(err)
}
} else {
var ok bool
if err, ok = r.(error); !ok {
err = fmt.Errorf("%v", r)
}
ctx.Fail(err, "")
err = &rpc.ErrPanic{Msg: err.Error()}
}
}()
switch call := in.(type) {
case *callAdd:
res, err := server.Add(ctx, call.a, call.b);
if err != nil {
return nil, err
}
return &resultAdd{value: res}, nil
case *callEnumToString:
res, err := server.EnumToString(ctx, call.e);
if err != nil {
return nil, err
}
return &resultEnumToString{value: res}, nil
case *callGetListNodeChain:
res, err := server.GetListNodeChain(ctx);
if err != nil {
return nil, err
}
return &resultGetListNodeChain{value: res}, nil
case *callGetListNodeChainArray:
res, err := server.GetListNodeChainArray(ctx);
if err != nil {
return nil, err
}
return &resultGetListNodeChainArray{value: res}, nil
case *callGetResource:
res, err := server.GetResource(ctx);
if err != nil {
return nil, err
}
return &resultGetResource{value: res}, nil
case *callGetSingleListNode:
res, err := server.GetSingleListNode(ctx);
if err != nil {
return nil, err
}
return &resultGetSingleListNode{value: res}, nil
case *callGetStruct:
res, err := server.GetStruct(ctx);
if err != nil {
return nil, err
}
return &resultGetStruct{value: res}, nil
case *callResolveResource:
res, err := server.ResolveResource(ctx, call.r);
if err != nil {
return nil, err
}
return &resultResolveResource{value: res}, nil
case *callSetStruct:
err := server.SetStruct(ctx, call.s);
if err != nil {
return nil, err
}
return &resultSetStruct{}, nil
case *callUseResource:
err := server.UseResource(ctx, call.r);
if err != nil {
return nil, err
}
return &resultUseResource{}, nil
default:
return nil, &rpc.ErrUnknownFunction{Function: ty}
}
}
}