blob: 329780f4298d1b512e8aff5c60f6cc40ce4dc24d [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This file was auto-generated by the vanadium vdl tool.
// Source: builtin.vdl
package vdl
import (
"fmt"
"reflect"
)
// WireError is the wire representation for the built-in error type. Errors and
// exceptions in each programming environment are converted to this type to
// ensure wire compatibility. Generated code for each environment provides
// automatic conversions into idiomatic native representations.
type WireError struct {
Id string // Error Id, used to uniquely identify each error.
RetryCode WireRetryCode // Retry behavior suggested for the receiver.
Msg string // Error message, may be empty.
ParamList []*Value // Variadic parameters contained in the error.
}
func (WireError) __VDLReflect(struct {
Name string `vdl:"v.io/v23/vdl.WireError"`
}) {
}
func (m *WireError) FillVDLTarget(t Target, tt *Type) error {
if __VDLType_builtin_v_io_v23_vdl_WireError == nil || __VDLTypebuiltin0 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
if err != ErrFieldNoExist && err != nil {
return err
}
if err != ErrFieldNoExist {
if err := fieldTarget3.FromString(string(m.Id), StringType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
return err
}
}
keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("RetryCode")
if err != ErrFieldNoExist && err != nil {
return err
}
if err != ErrFieldNoExist {
if err := m.RetryCode.FillVDLTarget(fieldTarget5, __VDLType_builtin_v_io_v23_vdl_WireRetryCode); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
return err
}
}
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Msg")
if err != ErrFieldNoExist && err != nil {
return err
}
if err != ErrFieldNoExist {
if err := fieldTarget7.FromString(string(m.Msg), StringType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ParamList")
if err != ErrFieldNoExist && err != nil {
return err
}
if err != ErrFieldNoExist {
listTarget10, err := fieldTarget9.StartList(__VDLTypebuiltin1, len(m.ParamList))
if err != nil {
return err
}
for i, elem12 := range m.ParamList {
elemTarget11, err := listTarget10.StartElem(i)
if err != nil {
return err
}
if elem12 == nil {
if err := elemTarget11.FromNil(AnyType); err != nil {
return err
}
} else {
if err := FromValue(elemTarget11, elem12); err != nil {
return err
}
}
if err := listTarget10.FinishElem(elemTarget11); err != nil {
return err
}
}
if err := fieldTarget9.FinishList(listTarget10); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
return err
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *WireError) MakeVDLTarget() Target {
return &WireErrorTarget{Value: m}
}
type WireErrorTarget struct {
Value *WireError
TargetBase
FieldsTargetBase
}
func (t *WireErrorTarget) StartFields(tt *Type) (FieldsTarget, error) {
if !Compatible(tt, __VDLType_builtin_v_io_v23_vdl_WireError) {
return nil, fmt.Errorf("type %v incompatible with %v", tt, __VDLType_builtin_v_io_v23_vdl_WireError)
}
return t, nil
}
func (t *WireErrorTarget) StartField(name string) (key, field Target, _ error) {
switch name {
case "Id":
val, err := &StringTarget{Value: &t.Value.Id}, error(nil)
return nil, val, err
case "RetryCode":
val, err := &WireRetryCodeTarget{Value: &t.Value.RetryCode}, error(nil)
return nil, val, err
case "Msg":
val, err := &StringTarget{Value: &t.Value.Msg}, error(nil)
return nil, val, err
case "ParamList":
val, err := &builtin5b5d616e79Target{Value: &t.Value.ParamList}, error(nil)
return nil, val, err
default:
return nil, nil, fmt.Errorf("field %s not in struct %v", name, __VDLType_builtin_v_io_v23_vdl_WireError)
}
}
func (t *WireErrorTarget) FinishField(_, _ Target) error {
return nil
}
func (t *WireErrorTarget) FinishFields(_ FieldsTarget) error {
return nil
}
type WireRetryCodeTarget struct {
Value *WireRetryCode
TargetBase
}
func (t *WireRetryCodeTarget) FromEnumLabel(src string, tt *Type) error {
if !Compatible(tt, __VDLType_builtin_v_io_v23_vdl_WireRetryCode) {
return fmt.Errorf("type %v incompatible with %v", tt, __VDLType_builtin_v_io_v23_vdl_WireRetryCode)
}
switch src {
case "NoRetry":
*t.Value = 0
case "RetryConnection":
*t.Value = 1
case "RetryRefetch":
*t.Value = 2
case "RetryBackoff":
*t.Value = 3
default:
return fmt.Errorf("label %s not in enum %v", src, __VDLType_builtin_v_io_v23_vdl_WireRetryCode)
}
return nil
}
type builtin5b5d616e79Target struct {
Value *[]*Value
TargetBase
ListTargetBase
}
func (t *builtin5b5d616e79Target) StartList(tt *Type, len int) (ListTarget, error) {
if !Compatible(tt, __VDLTypebuiltin1) {
return nil, fmt.Errorf("type %v incompatible with %v", tt, __VDLTypebuiltin1)
}
if cap(*t.Value) < len {
*t.Value = make([]*Value, len)
} else {
*t.Value = (*t.Value)[:len]
}
return t, nil
}
func (t *builtin5b5d616e79Target) StartElem(index int) (elem Target, _ error) {
return ReflectTarget(reflect.ValueOf(&(*t.Value)[index]))
}
func (t *builtin5b5d616e79Target) FinishElem(elem Target) error {
return nil
}
func (t *builtin5b5d616e79Target) FinishList(elem ListTarget) error {
return nil
}
// WireRetryCode is the suggested retry behavior for the receiver of an error.
// If the receiver doesn't know how to handle the specific error, it should
// attempt the suggested retry behavior.
type WireRetryCode int
const (
WireRetryCodeNoRetry WireRetryCode = iota
WireRetryCodeRetryConnection
WireRetryCodeRetryRefetch
WireRetryCodeRetryBackoff
)
// WireRetryCodeAll holds all labels for WireRetryCode.
var WireRetryCodeAll = [...]WireRetryCode{WireRetryCodeNoRetry, WireRetryCodeRetryConnection, WireRetryCodeRetryRefetch, WireRetryCodeRetryBackoff}
// WireRetryCodeFromString creates a WireRetryCode from a string label.
func WireRetryCodeFromString(label string) (x WireRetryCode, err error) {
err = x.Set(label)
return
}
// Set assigns label to x.
func (x *WireRetryCode) Set(label string) error {
switch label {
case "NoRetry", "noretry":
*x = WireRetryCodeNoRetry
return nil
case "RetryConnection", "retryconnection":
*x = WireRetryCodeRetryConnection
return nil
case "RetryRefetch", "retryrefetch":
*x = WireRetryCodeRetryRefetch
return nil
case "RetryBackoff", "retrybackoff":
*x = WireRetryCodeRetryBackoff
return nil
}
*x = -1
return fmt.Errorf("unknown label %q in vdl.WireRetryCode", label)
}
// String returns the string label of x.
func (x WireRetryCode) String() string {
switch x {
case WireRetryCodeNoRetry:
return "NoRetry"
case WireRetryCodeRetryConnection:
return "RetryConnection"
case WireRetryCodeRetryRefetch:
return "RetryRefetch"
case WireRetryCodeRetryBackoff:
return "RetryBackoff"
}
return ""
}
func (WireRetryCode) __VDLReflect(struct {
Name string `vdl:"v.io/v23/vdl.WireRetryCode"`
Enum struct{ NoRetry, RetryConnection, RetryRefetch, RetryBackoff string }
}) {
}
func (m *WireRetryCode) FillVDLTarget(t Target, tt *Type) error {
if err := t.FromEnumLabel((*m).String(), __VDLType_builtin_v_io_v23_vdl_WireRetryCode); err != nil {
return err
}
return nil
}
func (m *WireRetryCode) MakeVDLTarget() Target {
return &WireRetryCodeTarget{Value: m}
}
func init() {
Register((*WireError)(nil))
Register((*WireRetryCode)(nil))
}
var __VDLTypebuiltin0 *Type = TypeOf((*WireError)(nil))
var __VDLTypebuiltin1 *Type = TypeOf([]*Value(nil))
var __VDLType_builtin_v_io_v23_vdl_WireError *Type = TypeOf(WireError{})
var __VDLType_builtin_v_io_v23_vdl_WireRetryCode *Type = TypeOf(WireRetryCodeNoRetry)
func __VDLEnsureNativeBuilt_builtin() {
}