Rather than employ the typeurl package, we now generate code to correctly allocate the incoming types from the caller. As a side-effect of this activity, the services definitions have been split out into a separate type that handles the full resolution and dispatch of the method, incuding correctly mapping the RPC status. This work is a pre-cursor to larger protocol change that will allow us to handle multiple, concurrent requests. Signed-off-by: Stephen J Day <stephen.day@docker.com>
		
			
				
	
	
		
			750 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			750 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Code generated by protoc-gen-gogo. DO NOT EDIT.
 | 
						|
// source: github.com/stevvooe/ttrpc/example/example.proto
 | 
						|
 | 
						|
/*
 | 
						|
	Package example is a generated protocol buffer package.
 | 
						|
 | 
						|
	It is generated from these files:
 | 
						|
		github.com/stevvooe/ttrpc/example/example.proto
 | 
						|
 | 
						|
	It has these top-level messages:
 | 
						|
		Method1Request
 | 
						|
		Method1Response
 | 
						|
		Method2Request
 | 
						|
*/
 | 
						|
package example
 | 
						|
 | 
						|
import proto "github.com/gogo/protobuf/proto"
 | 
						|
import fmt "fmt"
 | 
						|
import math "math"
 | 
						|
import google_protobuf "github.com/gogo/protobuf/types"
 | 
						|
import _ "github.com/gogo/protobuf/gogoproto"
 | 
						|
 | 
						|
import strings "strings"
 | 
						|
import reflect "reflect"
 | 
						|
 | 
						|
import context "context"
 | 
						|
import github_com_stevvooe_ttrpc "github.com/stevvooe/ttrpc"
 | 
						|
 | 
						|
import io "io"
 | 
						|
 | 
						|
// Reference imports to suppress errors if they are not otherwise used.
 | 
						|
var _ = proto.Marshal
 | 
						|
var _ = fmt.Errorf
 | 
						|
var _ = math.Inf
 | 
						|
 | 
						|
// This is a compile-time assertion to ensure that this generated file
 | 
						|
// is compatible with the proto package it is being compiled against.
 | 
						|
// A compilation error at this line likely means your copy of the
 | 
						|
// proto package needs to be updated.
 | 
						|
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
 | 
						|
 | 
						|
type Method1Request struct {
 | 
						|
	Foo string `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 | 
						|
	Bar string `protobuf:"bytes,2,opt,name=bar,proto3" json:"bar,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Request) Reset()                    { *m = Method1Request{} }
 | 
						|
func (*Method1Request) ProtoMessage()               {}
 | 
						|
func (*Method1Request) Descriptor() ([]byte, []int) { return fileDescriptorExample, []int{0} }
 | 
						|
 | 
						|
type Method1Response struct {
 | 
						|
	Foo string `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
 | 
						|
	Bar string `protobuf:"bytes,2,opt,name=bar,proto3" json:"bar,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Response) Reset()                    { *m = Method1Response{} }
 | 
						|
func (*Method1Response) ProtoMessage()               {}
 | 
						|
func (*Method1Response) Descriptor() ([]byte, []int) { return fileDescriptorExample, []int{1} }
 | 
						|
 | 
						|
type Method2Request struct {
 | 
						|
	Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method2Request) Reset()                    { *m = Method2Request{} }
 | 
						|
func (*Method2Request) ProtoMessage()               {}
 | 
						|
func (*Method2Request) Descriptor() ([]byte, []int) { return fileDescriptorExample, []int{2} }
 | 
						|
 | 
						|
func init() {
 | 
						|
	proto.RegisterType((*Method1Request)(nil), "ttrpc.example.v1.Method1Request")
 | 
						|
	proto.RegisterType((*Method1Response)(nil), "ttrpc.example.v1.Method1Response")
 | 
						|
	proto.RegisterType((*Method2Request)(nil), "ttrpc.example.v1.Method2Request")
 | 
						|
}
 | 
						|
func (m *Method1Request) Marshal() (dAtA []byte, err error) {
 | 
						|
	size := m.Size()
 | 
						|
	dAtA = make([]byte, size)
 | 
						|
	n, err := m.MarshalTo(dAtA)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return dAtA[:n], nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Request) MarshalTo(dAtA []byte) (int, error) {
 | 
						|
	var i int
 | 
						|
	_ = i
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	if len(m.Foo) > 0 {
 | 
						|
		dAtA[i] = 0xa
 | 
						|
		i++
 | 
						|
		i = encodeVarintExample(dAtA, i, uint64(len(m.Foo)))
 | 
						|
		i += copy(dAtA[i:], m.Foo)
 | 
						|
	}
 | 
						|
	if len(m.Bar) > 0 {
 | 
						|
		dAtA[i] = 0x12
 | 
						|
		i++
 | 
						|
		i = encodeVarintExample(dAtA, i, uint64(len(m.Bar)))
 | 
						|
		i += copy(dAtA[i:], m.Bar)
 | 
						|
	}
 | 
						|
	return i, nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Response) Marshal() (dAtA []byte, err error) {
 | 
						|
	size := m.Size()
 | 
						|
	dAtA = make([]byte, size)
 | 
						|
	n, err := m.MarshalTo(dAtA)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return dAtA[:n], nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Response) MarshalTo(dAtA []byte) (int, error) {
 | 
						|
	var i int
 | 
						|
	_ = i
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	if len(m.Foo) > 0 {
 | 
						|
		dAtA[i] = 0xa
 | 
						|
		i++
 | 
						|
		i = encodeVarintExample(dAtA, i, uint64(len(m.Foo)))
 | 
						|
		i += copy(dAtA[i:], m.Foo)
 | 
						|
	}
 | 
						|
	if len(m.Bar) > 0 {
 | 
						|
		dAtA[i] = 0x12
 | 
						|
		i++
 | 
						|
		i = encodeVarintExample(dAtA, i, uint64(len(m.Bar)))
 | 
						|
		i += copy(dAtA[i:], m.Bar)
 | 
						|
	}
 | 
						|
	return i, nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method2Request) Marshal() (dAtA []byte, err error) {
 | 
						|
	size := m.Size()
 | 
						|
	dAtA = make([]byte, size)
 | 
						|
	n, err := m.MarshalTo(dAtA)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return dAtA[:n], nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method2Request) MarshalTo(dAtA []byte) (int, error) {
 | 
						|
	var i int
 | 
						|
	_ = i
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	if len(m.Action) > 0 {
 | 
						|
		dAtA[i] = 0xa
 | 
						|
		i++
 | 
						|
		i = encodeVarintExample(dAtA, i, uint64(len(m.Action)))
 | 
						|
		i += copy(dAtA[i:], m.Action)
 | 
						|
	}
 | 
						|
	return i, nil
 | 
						|
}
 | 
						|
 | 
						|
func encodeFixed64Example(dAtA []byte, offset int, v uint64) int {
 | 
						|
	dAtA[offset] = uint8(v)
 | 
						|
	dAtA[offset+1] = uint8(v >> 8)
 | 
						|
	dAtA[offset+2] = uint8(v >> 16)
 | 
						|
	dAtA[offset+3] = uint8(v >> 24)
 | 
						|
	dAtA[offset+4] = uint8(v >> 32)
 | 
						|
	dAtA[offset+5] = uint8(v >> 40)
 | 
						|
	dAtA[offset+6] = uint8(v >> 48)
 | 
						|
	dAtA[offset+7] = uint8(v >> 56)
 | 
						|
	return offset + 8
 | 
						|
}
 | 
						|
func encodeFixed32Example(dAtA []byte, offset int, v uint32) int {
 | 
						|
	dAtA[offset] = uint8(v)
 | 
						|
	dAtA[offset+1] = uint8(v >> 8)
 | 
						|
	dAtA[offset+2] = uint8(v >> 16)
 | 
						|
	dAtA[offset+3] = uint8(v >> 24)
 | 
						|
	return offset + 4
 | 
						|
}
 | 
						|
func encodeVarintExample(dAtA []byte, offset int, v uint64) int {
 | 
						|
	for v >= 1<<7 {
 | 
						|
		dAtA[offset] = uint8(v&0x7f | 0x80)
 | 
						|
		v >>= 7
 | 
						|
		offset++
 | 
						|
	}
 | 
						|
	dAtA[offset] = uint8(v)
 | 
						|
	return offset + 1
 | 
						|
}
 | 
						|
func (m *Method1Request) Size() (n int) {
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	l = len(m.Foo)
 | 
						|
	if l > 0 {
 | 
						|
		n += 1 + l + sovExample(uint64(l))
 | 
						|
	}
 | 
						|
	l = len(m.Bar)
 | 
						|
	if l > 0 {
 | 
						|
		n += 1 + l + sovExample(uint64(l))
 | 
						|
	}
 | 
						|
	return n
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method1Response) Size() (n int) {
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	l = len(m.Foo)
 | 
						|
	if l > 0 {
 | 
						|
		n += 1 + l + sovExample(uint64(l))
 | 
						|
	}
 | 
						|
	l = len(m.Bar)
 | 
						|
	if l > 0 {
 | 
						|
		n += 1 + l + sovExample(uint64(l))
 | 
						|
	}
 | 
						|
	return n
 | 
						|
}
 | 
						|
 | 
						|
func (m *Method2Request) Size() (n int) {
 | 
						|
	var l int
 | 
						|
	_ = l
 | 
						|
	l = len(m.Action)
 | 
						|
	if l > 0 {
 | 
						|
		n += 1 + l + sovExample(uint64(l))
 | 
						|
	}
 | 
						|
	return n
 | 
						|
}
 | 
						|
 | 
						|
func sovExample(x uint64) (n int) {
 | 
						|
	for {
 | 
						|
		n++
 | 
						|
		x >>= 7
 | 
						|
		if x == 0 {
 | 
						|
			break
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return n
 | 
						|
}
 | 
						|
func sozExample(x uint64) (n int) {
 | 
						|
	return sovExample(uint64((x << 1) ^ uint64((int64(x) >> 63))))
 | 
						|
}
 | 
						|
func (this *Method1Request) String() string {
 | 
						|
	if this == nil {
 | 
						|
		return "nil"
 | 
						|
	}
 | 
						|
	s := strings.Join([]string{`&Method1Request{`,
 | 
						|
		`Foo:` + fmt.Sprintf("%v", this.Foo) + `,`,
 | 
						|
		`Bar:` + fmt.Sprintf("%v", this.Bar) + `,`,
 | 
						|
		`}`,
 | 
						|
	}, "")
 | 
						|
	return s
 | 
						|
}
 | 
						|
func (this *Method1Response) String() string {
 | 
						|
	if this == nil {
 | 
						|
		return "nil"
 | 
						|
	}
 | 
						|
	s := strings.Join([]string{`&Method1Response{`,
 | 
						|
		`Foo:` + fmt.Sprintf("%v", this.Foo) + `,`,
 | 
						|
		`Bar:` + fmt.Sprintf("%v", this.Bar) + `,`,
 | 
						|
		`}`,
 | 
						|
	}, "")
 | 
						|
	return s
 | 
						|
}
 | 
						|
func (this *Method2Request) String() string {
 | 
						|
	if this == nil {
 | 
						|
		return "nil"
 | 
						|
	}
 | 
						|
	s := strings.Join([]string{`&Method2Request{`,
 | 
						|
		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
 | 
						|
		`}`,
 | 
						|
	}, "")
 | 
						|
	return s
 | 
						|
}
 | 
						|
func valueToStringExample(v interface{}) string {
 | 
						|
	rv := reflect.ValueOf(v)
 | 
						|
	if rv.IsNil() {
 | 
						|
		return "nil"
 | 
						|
	}
 | 
						|
	pv := reflect.Indirect(rv).Interface()
 | 
						|
	return fmt.Sprintf("*%v", pv)
 | 
						|
}
 | 
						|
 | 
						|
type ExampleService interface {
 | 
						|
	Method1(ctx context.Context, req *Method1Request) (*Method1Response, error)
 | 
						|
	Method2(ctx context.Context, req *Method1Request) (*google_protobuf.Empty, error)
 | 
						|
}
 | 
						|
 | 
						|
func RegisterExampleService(srv *github_com_stevvooe_ttrpc.Server, svc ExampleService) {
 | 
						|
	srv.Register("ttrpc.example.v1.Example", map[string]github_com_stevvooe_ttrpc.Method{
 | 
						|
		"Method1": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {
 | 
						|
			var req Method1Request
 | 
						|
			if err := unmarshal(&req); err != nil {
 | 
						|
				return nil, err
 | 
						|
			}
 | 
						|
			return svc.Method1(ctx, &req)
 | 
						|
		},
 | 
						|
		"Method2": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {
 | 
						|
			var req Method1Request
 | 
						|
			if err := unmarshal(&req); err != nil {
 | 
						|
				return nil, err
 | 
						|
			}
 | 
						|
			return svc.Method2(ctx, &req)
 | 
						|
		},
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
type exampleClient struct {
 | 
						|
	client *github_com_stevvooe_ttrpc.Client
 | 
						|
}
 | 
						|
 | 
						|
func NewExampleClient(client *github_com_stevvooe_ttrpc.Client) ExampleService {
 | 
						|
	return &exampleClient{
 | 
						|
		client: client,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (c *exampleClient) Method1(ctx context.Context, req *Method1Request) (*Method1Response, error) {
 | 
						|
	var resp Method1Response
 | 
						|
	if err := c.client.Call(ctx, "ttrpc.example.v1.Example", "Method1", req, &resp); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &resp, nil
 | 
						|
}
 | 
						|
 | 
						|
func (c *exampleClient) Method2(ctx context.Context, req *Method1Request) (*google_protobuf.Empty, error) {
 | 
						|
	var resp google_protobuf.Empty
 | 
						|
	if err := c.client.Call(ctx, "ttrpc.example.v1.Example", "Method2", req, &resp); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &resp, nil
 | 
						|
}
 | 
						|
func (m *Method1Request) Unmarshal(dAtA []byte) error {
 | 
						|
	l := len(dAtA)
 | 
						|
	iNdEx := 0
 | 
						|
	for iNdEx < l {
 | 
						|
		preIndex := iNdEx
 | 
						|
		var wire uint64
 | 
						|
		for shift := uint(0); ; shift += 7 {
 | 
						|
			if shift >= 64 {
 | 
						|
				return ErrIntOverflowExample
 | 
						|
			}
 | 
						|
			if iNdEx >= l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			b := dAtA[iNdEx]
 | 
						|
			iNdEx++
 | 
						|
			wire |= (uint64(b) & 0x7F) << shift
 | 
						|
			if b < 0x80 {
 | 
						|
				break
 | 
						|
			}
 | 
						|
		}
 | 
						|
		fieldNum := int32(wire >> 3)
 | 
						|
		wireType := int(wire & 0x7)
 | 
						|
		if wireType == 4 {
 | 
						|
			return fmt.Errorf("proto: Method1Request: wiretype end group for non-group")
 | 
						|
		}
 | 
						|
		if fieldNum <= 0 {
 | 
						|
			return fmt.Errorf("proto: Method1Request: illegal tag %d (wire type %d)", fieldNum, wire)
 | 
						|
		}
 | 
						|
		switch fieldNum {
 | 
						|
		case 1:
 | 
						|
			if wireType != 2 {
 | 
						|
				return fmt.Errorf("proto: wrong wireType = %d for field Foo", wireType)
 | 
						|
			}
 | 
						|
			var stringLen uint64
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			intStringLen := int(stringLen)
 | 
						|
			if intStringLen < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			postIndex := iNdEx + intStringLen
 | 
						|
			if postIndex > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			m.Foo = string(dAtA[iNdEx:postIndex])
 | 
						|
			iNdEx = postIndex
 | 
						|
		case 2:
 | 
						|
			if wireType != 2 {
 | 
						|
				return fmt.Errorf("proto: wrong wireType = %d for field Bar", wireType)
 | 
						|
			}
 | 
						|
			var stringLen uint64
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			intStringLen := int(stringLen)
 | 
						|
			if intStringLen < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			postIndex := iNdEx + intStringLen
 | 
						|
			if postIndex > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			m.Bar = string(dAtA[iNdEx:postIndex])
 | 
						|
			iNdEx = postIndex
 | 
						|
		default:
 | 
						|
			iNdEx = preIndex
 | 
						|
			skippy, err := skipExample(dAtA[iNdEx:])
 | 
						|
			if err != nil {
 | 
						|
				return err
 | 
						|
			}
 | 
						|
			if skippy < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			if (iNdEx + skippy) > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			iNdEx += skippy
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if iNdEx > l {
 | 
						|
		return io.ErrUnexpectedEOF
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
func (m *Method1Response) Unmarshal(dAtA []byte) error {
 | 
						|
	l := len(dAtA)
 | 
						|
	iNdEx := 0
 | 
						|
	for iNdEx < l {
 | 
						|
		preIndex := iNdEx
 | 
						|
		var wire uint64
 | 
						|
		for shift := uint(0); ; shift += 7 {
 | 
						|
			if shift >= 64 {
 | 
						|
				return ErrIntOverflowExample
 | 
						|
			}
 | 
						|
			if iNdEx >= l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			b := dAtA[iNdEx]
 | 
						|
			iNdEx++
 | 
						|
			wire |= (uint64(b) & 0x7F) << shift
 | 
						|
			if b < 0x80 {
 | 
						|
				break
 | 
						|
			}
 | 
						|
		}
 | 
						|
		fieldNum := int32(wire >> 3)
 | 
						|
		wireType := int(wire & 0x7)
 | 
						|
		if wireType == 4 {
 | 
						|
			return fmt.Errorf("proto: Method1Response: wiretype end group for non-group")
 | 
						|
		}
 | 
						|
		if fieldNum <= 0 {
 | 
						|
			return fmt.Errorf("proto: Method1Response: illegal tag %d (wire type %d)", fieldNum, wire)
 | 
						|
		}
 | 
						|
		switch fieldNum {
 | 
						|
		case 1:
 | 
						|
			if wireType != 2 {
 | 
						|
				return fmt.Errorf("proto: wrong wireType = %d for field Foo", wireType)
 | 
						|
			}
 | 
						|
			var stringLen uint64
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			intStringLen := int(stringLen)
 | 
						|
			if intStringLen < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			postIndex := iNdEx + intStringLen
 | 
						|
			if postIndex > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			m.Foo = string(dAtA[iNdEx:postIndex])
 | 
						|
			iNdEx = postIndex
 | 
						|
		case 2:
 | 
						|
			if wireType != 2 {
 | 
						|
				return fmt.Errorf("proto: wrong wireType = %d for field Bar", wireType)
 | 
						|
			}
 | 
						|
			var stringLen uint64
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			intStringLen := int(stringLen)
 | 
						|
			if intStringLen < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			postIndex := iNdEx + intStringLen
 | 
						|
			if postIndex > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			m.Bar = string(dAtA[iNdEx:postIndex])
 | 
						|
			iNdEx = postIndex
 | 
						|
		default:
 | 
						|
			iNdEx = preIndex
 | 
						|
			skippy, err := skipExample(dAtA[iNdEx:])
 | 
						|
			if err != nil {
 | 
						|
				return err
 | 
						|
			}
 | 
						|
			if skippy < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			if (iNdEx + skippy) > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			iNdEx += skippy
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if iNdEx > l {
 | 
						|
		return io.ErrUnexpectedEOF
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
func (m *Method2Request) Unmarshal(dAtA []byte) error {
 | 
						|
	l := len(dAtA)
 | 
						|
	iNdEx := 0
 | 
						|
	for iNdEx < l {
 | 
						|
		preIndex := iNdEx
 | 
						|
		var wire uint64
 | 
						|
		for shift := uint(0); ; shift += 7 {
 | 
						|
			if shift >= 64 {
 | 
						|
				return ErrIntOverflowExample
 | 
						|
			}
 | 
						|
			if iNdEx >= l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			b := dAtA[iNdEx]
 | 
						|
			iNdEx++
 | 
						|
			wire |= (uint64(b) & 0x7F) << shift
 | 
						|
			if b < 0x80 {
 | 
						|
				break
 | 
						|
			}
 | 
						|
		}
 | 
						|
		fieldNum := int32(wire >> 3)
 | 
						|
		wireType := int(wire & 0x7)
 | 
						|
		if wireType == 4 {
 | 
						|
			return fmt.Errorf("proto: Method2Request: wiretype end group for non-group")
 | 
						|
		}
 | 
						|
		if fieldNum <= 0 {
 | 
						|
			return fmt.Errorf("proto: Method2Request: illegal tag %d (wire type %d)", fieldNum, wire)
 | 
						|
		}
 | 
						|
		switch fieldNum {
 | 
						|
		case 1:
 | 
						|
			if wireType != 2 {
 | 
						|
				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
 | 
						|
			}
 | 
						|
			var stringLen uint64
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			intStringLen := int(stringLen)
 | 
						|
			if intStringLen < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			postIndex := iNdEx + intStringLen
 | 
						|
			if postIndex > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			m.Action = string(dAtA[iNdEx:postIndex])
 | 
						|
			iNdEx = postIndex
 | 
						|
		default:
 | 
						|
			iNdEx = preIndex
 | 
						|
			skippy, err := skipExample(dAtA[iNdEx:])
 | 
						|
			if err != nil {
 | 
						|
				return err
 | 
						|
			}
 | 
						|
			if skippy < 0 {
 | 
						|
				return ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			if (iNdEx + skippy) > l {
 | 
						|
				return io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			iNdEx += skippy
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if iNdEx > l {
 | 
						|
		return io.ErrUnexpectedEOF
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
func skipExample(dAtA []byte) (n int, err error) {
 | 
						|
	l := len(dAtA)
 | 
						|
	iNdEx := 0
 | 
						|
	for iNdEx < l {
 | 
						|
		var wire uint64
 | 
						|
		for shift := uint(0); ; shift += 7 {
 | 
						|
			if shift >= 64 {
 | 
						|
				return 0, ErrIntOverflowExample
 | 
						|
			}
 | 
						|
			if iNdEx >= l {
 | 
						|
				return 0, io.ErrUnexpectedEOF
 | 
						|
			}
 | 
						|
			b := dAtA[iNdEx]
 | 
						|
			iNdEx++
 | 
						|
			wire |= (uint64(b) & 0x7F) << shift
 | 
						|
			if b < 0x80 {
 | 
						|
				break
 | 
						|
			}
 | 
						|
		}
 | 
						|
		wireType := int(wire & 0x7)
 | 
						|
		switch wireType {
 | 
						|
		case 0:
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return 0, ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return 0, io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				iNdEx++
 | 
						|
				if dAtA[iNdEx-1] < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			return iNdEx, nil
 | 
						|
		case 1:
 | 
						|
			iNdEx += 8
 | 
						|
			return iNdEx, nil
 | 
						|
		case 2:
 | 
						|
			var length int
 | 
						|
			for shift := uint(0); ; shift += 7 {
 | 
						|
				if shift >= 64 {
 | 
						|
					return 0, ErrIntOverflowExample
 | 
						|
				}
 | 
						|
				if iNdEx >= l {
 | 
						|
					return 0, io.ErrUnexpectedEOF
 | 
						|
				}
 | 
						|
				b := dAtA[iNdEx]
 | 
						|
				iNdEx++
 | 
						|
				length |= (int(b) & 0x7F) << shift
 | 
						|
				if b < 0x80 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
			}
 | 
						|
			iNdEx += length
 | 
						|
			if length < 0 {
 | 
						|
				return 0, ErrInvalidLengthExample
 | 
						|
			}
 | 
						|
			return iNdEx, nil
 | 
						|
		case 3:
 | 
						|
			for {
 | 
						|
				var innerWire uint64
 | 
						|
				var start int = iNdEx
 | 
						|
				for shift := uint(0); ; shift += 7 {
 | 
						|
					if shift >= 64 {
 | 
						|
						return 0, ErrIntOverflowExample
 | 
						|
					}
 | 
						|
					if iNdEx >= l {
 | 
						|
						return 0, io.ErrUnexpectedEOF
 | 
						|
					}
 | 
						|
					b := dAtA[iNdEx]
 | 
						|
					iNdEx++
 | 
						|
					innerWire |= (uint64(b) & 0x7F) << shift
 | 
						|
					if b < 0x80 {
 | 
						|
						break
 | 
						|
					}
 | 
						|
				}
 | 
						|
				innerWireType := int(innerWire & 0x7)
 | 
						|
				if innerWireType == 4 {
 | 
						|
					break
 | 
						|
				}
 | 
						|
				next, err := skipExample(dAtA[start:])
 | 
						|
				if err != nil {
 | 
						|
					return 0, err
 | 
						|
				}
 | 
						|
				iNdEx = start + next
 | 
						|
			}
 | 
						|
			return iNdEx, nil
 | 
						|
		case 4:
 | 
						|
			return iNdEx, nil
 | 
						|
		case 5:
 | 
						|
			iNdEx += 4
 | 
						|
			return iNdEx, nil
 | 
						|
		default:
 | 
						|
			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	panic("unreachable")
 | 
						|
}
 | 
						|
 | 
						|
var (
 | 
						|
	ErrInvalidLengthExample = fmt.Errorf("proto: negative length found during unmarshaling")
 | 
						|
	ErrIntOverflowExample   = fmt.Errorf("proto: integer overflow")
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	proto.RegisterFile("github.com/stevvooe/ttrpc/example/example.proto", fileDescriptorExample)
 | 
						|
}
 | 
						|
 | 
						|
var fileDescriptorExample = []byte{
 | 
						|
	// 277 bytes of a gzipped FileDescriptorProto
 | 
						|
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9,
 | 
						|
	0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x2f, 0x2e, 0x49, 0x2d, 0x2b, 0xcb, 0xcf, 0x4f, 0xd5,
 | 
						|
	0x2f, 0x29, 0x29, 0x2a, 0x48, 0xd6, 0x4f, 0xad, 0x48, 0xcc, 0x2d, 0xc8, 0x49, 0x85, 0xd1, 0x7a,
 | 
						|
	0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x02, 0x60, 0x49, 0x3d, 0x98, 0x60, 0x99, 0xa1, 0x94, 0x74,
 | 
						|
	0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x3e, 0x58, 0x3e, 0xa9, 0x34, 0x4d, 0x3f, 0x35, 0xb7, 0xa0,
 | 
						|
	0xa4, 0x12, 0xa2, 0x5c, 0x4a, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, 0xcc, 0xd4, 0x07, 0xb1, 0x20, 0xa2,
 | 
						|
	0x4a, 0x26, 0x5c, 0x7c, 0xbe, 0xa9, 0x25, 0x19, 0xf9, 0x29, 0x86, 0x41, 0xa9, 0x85, 0xa5, 0xa9,
 | 
						|
	0xc5, 0x25, 0x42, 0x02, 0x5c, 0xcc, 0x69, 0xf9, 0xf9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41,
 | 
						|
	0x20, 0x26, 0x48, 0x24, 0x29, 0xb1, 0x48, 0x82, 0x09, 0x22, 0x92, 0x94, 0x58, 0xa4, 0x64, 0xca,
 | 
						|
	0xc5, 0x0f, 0xd7, 0x55, 0x5c, 0x90, 0x9f, 0x57, 0x9c, 0x4a, 0x94, 0x36, 0x0d, 0x98, 0x65, 0x46,
 | 
						|
	0x30, 0xcb, 0xc4, 0xb8, 0xd8, 0x12, 0x93, 0x4b, 0x32, 0xf3, 0xf3, 0xa0, 0x1a, 0xa1, 0x3c, 0xa3,
 | 
						|
	0x79, 0x8c, 0x5c, 0xec, 0xae, 0x10, 0x8f, 0x09, 0xf9, 0x71, 0xb1, 0x43, 0x2d, 0x13, 0x52, 0xd0,
 | 
						|
	0x43, 0xf7, 0xb3, 0x1e, 0xaa, 0xeb, 0xa5, 0x14, 0xf1, 0xa8, 0x80, 0xba, 0xd4, 0x19, 0x66, 0x9e,
 | 
						|
	0x11, 0x11, 0xe6, 0x89, 0xe9, 0x41, 0xc2, 0x54, 0x0f, 0x16, 0xa6, 0x7a, 0xae, 0xa0, 0x30, 0x75,
 | 
						|
	0x72, 0x3e, 0xf1, 0x50, 0x8e, 0xe1, 0xc6, 0x43, 0x39, 0x86, 0x86, 0x47, 0x72, 0x8c, 0x27, 0x1e,
 | 
						|
	0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0x63, 0x94, 0x26, 0xc1, 0x78, 0xb4,
 | 
						|
	0x86, 0xd2, 0x49, 0x6c, 0x60, 0x43, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x52, 0xaa, 0xf2,
 | 
						|
	0x1c, 0xfb, 0x01, 0x00, 0x00,
 | 
						|
}
 |