blob: 1f1851bdb4c7f8768425841634f8ecc3fe9f50ac [file] [log] [blame]
// Copyright 2016 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.
// Package: allocator
package allocator
import (
"time"
"v.io/v23"
"v.io/v23/context"
"v.io/v23/rpc"
"v.io/v23/vdl"
vdltime "v.io/v23/vdlroot/time"
)
var _ = __VDLInit() // Must be first; see __VDLInit comments for details.
//////////////////////////////////////////////////
// Type definitions
// Instance describes a service instance.
type Instance struct {
Handle string
MountName string
BlessingNames []string
CreationTime time.Time
Replicas int32
}
func (Instance) __VDLReflect(struct {
Name string `vdl:"v.io/x/ref/services/allocator.Instance"`
}) {
}
func (x Instance) VDLIsZero() bool {
if x.Handle != "" {
return false
}
if x.MountName != "" {
return false
}
if len(x.BlessingNames) != 0 {
return false
}
if !x.CreationTime.IsZero() {
return false
}
if x.Replicas != 0 {
return false
}
return true
}
func (x Instance) VDLWrite(enc vdl.Encoder) error {
if err := enc.StartValue(__VDLType_struct_1); err != nil {
return err
}
if x.Handle != "" {
if err := enc.NextFieldValueString("Handle", vdl.StringType, x.Handle); err != nil {
return err
}
}
if x.MountName != "" {
if err := enc.NextFieldValueString("MountName", vdl.StringType, x.MountName); err != nil {
return err
}
}
if len(x.BlessingNames) != 0 {
if err := enc.NextField("BlessingNames"); err != nil {
return err
}
if err := __VDLWriteAnon_list_1(enc, x.BlessingNames); err != nil {
return err
}
}
if !x.CreationTime.IsZero() {
if err := enc.NextField("CreationTime"); err != nil {
return err
}
var wire vdltime.Time
if err := vdltime.TimeFromNative(&wire, x.CreationTime); err != nil {
return err
}
if err := wire.VDLWrite(enc); err != nil {
return err
}
}
if x.Replicas != 0 {
if err := enc.NextFieldValueInt("Replicas", vdl.Int32Type, int64(x.Replicas)); err != nil {
return err
}
}
if err := enc.NextField(""); err != nil {
return err
}
return enc.FinishValue()
}
func __VDLWriteAnon_list_1(enc vdl.Encoder, x []string) error {
if err := enc.StartValue(__VDLType_list_2); err != nil {
return err
}
if err := enc.SetLenHint(len(x)); err != nil {
return err
}
for _, elem := range x {
if err := enc.NextEntryValueString(vdl.StringType, elem); err != nil {
return err
}
}
if err := enc.NextEntry(true); err != nil {
return err
}
return enc.FinishValue()
}
func (x *Instance) VDLRead(dec vdl.Decoder) error {
*x = Instance{}
if err := dec.StartValue(__VDLType_struct_1); err != nil {
return err
}
for {
f, err := dec.NextField()
if err != nil {
return err
}
switch f {
case "":
return dec.FinishValue()
case "Handle":
switch value, err := dec.ReadValueString(); {
case err != nil:
return err
default:
x.Handle = value
}
case "MountName":
switch value, err := dec.ReadValueString(); {
case err != nil:
return err
default:
x.MountName = value
}
case "BlessingNames":
if err := __VDLReadAnon_list_1(dec, &x.BlessingNames); err != nil {
return err
}
case "CreationTime":
var wire vdltime.Time
if err := wire.VDLRead(dec); err != nil {
return err
}
if err := vdltime.TimeToNative(wire, &x.CreationTime); err != nil {
return err
}
case "Replicas":
switch value, err := dec.ReadValueInt(32); {
case err != nil:
return err
default:
x.Replicas = int32(value)
}
default:
if err := dec.SkipValue(); err != nil {
return err
}
}
}
}
func __VDLReadAnon_list_1(dec vdl.Decoder, x *[]string) error {
if err := dec.StartValue(__VDLType_list_2); err != nil {
return err
}
if len := dec.LenHint(); len > 0 {
*x = make([]string, 0, len)
} else {
*x = nil
}
for {
switch done, elem, err := dec.NextEntryValueString(); {
case err != nil:
return err
case done:
return dec.FinishValue()
default:
*x = append(*x, elem)
}
}
}
//////////////////////////////////////////////////
// Interface definitions
// AllocatorClientMethods is the client interface
// containing Allocator methods.
type AllocatorClientMethods interface {
// Create creates a new instance of the service.
// It returns a handle for the new instance.
Create(*context.T, ...rpc.CallOpt) (handle string, _ error)
// Destroy destroys the instance with the given handle.
Destroy(_ *context.T, handle string, _ ...rpc.CallOpt) error
// List returns a list of all the instances owned by the caller.
List(*context.T, ...rpc.CallOpt) (instances []Instance, _ error)
}
// AllocatorClientStub adds universal methods to AllocatorClientMethods.
type AllocatorClientStub interface {
AllocatorClientMethods
rpc.UniversalServiceMethods
}
// AllocatorClient returns a client stub for Allocator.
func AllocatorClient(name string) AllocatorClientStub {
return implAllocatorClientStub{name}
}
type implAllocatorClientStub struct {
name string
}
func (c implAllocatorClientStub) Create(ctx *context.T, opts ...rpc.CallOpt) (o0 string, err error) {
err = v23.GetClient(ctx).Call(ctx, c.name, "Create", nil, []interface{}{&o0}, opts...)
return
}
func (c implAllocatorClientStub) Destroy(ctx *context.T, i0 string, opts ...rpc.CallOpt) (err error) {
err = v23.GetClient(ctx).Call(ctx, c.name, "Destroy", []interface{}{i0}, nil, opts...)
return
}
func (c implAllocatorClientStub) List(ctx *context.T, opts ...rpc.CallOpt) (o0 []Instance, err error) {
err = v23.GetClient(ctx).Call(ctx, c.name, "List", nil, []interface{}{&o0}, opts...)
return
}
// AllocatorServerMethods is the interface a server writer
// implements for Allocator.
type AllocatorServerMethods interface {
// Create creates a new instance of the service.
// It returns a handle for the new instance.
Create(*context.T, rpc.ServerCall) (handle string, _ error)
// Destroy destroys the instance with the given handle.
Destroy(_ *context.T, _ rpc.ServerCall, handle string) error
// List returns a list of all the instances owned by the caller.
List(*context.T, rpc.ServerCall) (instances []Instance, _ error)
}
// AllocatorServerStubMethods is the server interface containing
// Allocator methods, as expected by rpc.Server.
// There is no difference between this interface and AllocatorServerMethods
// since there are no streaming methods.
type AllocatorServerStubMethods AllocatorServerMethods
// AllocatorServerStub adds universal methods to AllocatorServerStubMethods.
type AllocatorServerStub interface {
AllocatorServerStubMethods
// Describe the Allocator interfaces.
Describe__() []rpc.InterfaceDesc
}
// AllocatorServer returns a server stub for Allocator.
// It converts an implementation of AllocatorServerMethods into
// an object that may be used by rpc.Server.
func AllocatorServer(impl AllocatorServerMethods) AllocatorServerStub {
stub := implAllocatorServerStub{
impl: impl,
}
// Initialize GlobState; always check the stub itself first, to handle the
// case where the user has the Glob method defined in their VDL source.
if gs := rpc.NewGlobState(stub); gs != nil {
stub.gs = gs
} else if gs := rpc.NewGlobState(impl); gs != nil {
stub.gs = gs
}
return stub
}
type implAllocatorServerStub struct {
impl AllocatorServerMethods
gs *rpc.GlobState
}
func (s implAllocatorServerStub) Create(ctx *context.T, call rpc.ServerCall) (string, error) {
return s.impl.Create(ctx, call)
}
func (s implAllocatorServerStub) Destroy(ctx *context.T, call rpc.ServerCall, i0 string) error {
return s.impl.Destroy(ctx, call, i0)
}
func (s implAllocatorServerStub) List(ctx *context.T, call rpc.ServerCall) ([]Instance, error) {
return s.impl.List(ctx, call)
}
func (s implAllocatorServerStub) Globber() *rpc.GlobState {
return s.gs
}
func (s implAllocatorServerStub) Describe__() []rpc.InterfaceDesc {
return []rpc.InterfaceDesc{AllocatorDesc}
}
// AllocatorDesc describes the Allocator interface.
var AllocatorDesc rpc.InterfaceDesc = descAllocator
// descAllocator hides the desc to keep godoc clean.
var descAllocator = rpc.InterfaceDesc{
Name: "Allocator",
PkgPath: "v.io/x/ref/services/allocator",
Methods: []rpc.MethodDesc{
{
Name: "Create",
Doc: "// Create creates a new instance of the service.\n// It returns a handle for the new instance.",
OutArgs: []rpc.ArgDesc{
{"handle", ``}, // string
},
},
{
Name: "Destroy",
Doc: "// Destroy destroys the instance with the given handle.",
InArgs: []rpc.ArgDesc{
{"handle", ``}, // string
},
},
{
Name: "List",
Doc: "// List returns a list of all the instances owned by the caller.",
OutArgs: []rpc.ArgDesc{
{"instances", ``}, // []Instance
},
},
},
}
// Hold type definitions in package-level variables, for better performance.
var (
__VDLType_struct_1 *vdl.Type
__VDLType_list_2 *vdl.Type
__VDLType_struct_3 *vdl.Type
)
var __VDLInitCalled bool
// __VDLInit performs vdl initialization. It is safe to call multiple times.
// If you have an init ordering issue, just insert the following line verbatim
// into your source files in this package, right after the "package foo" clause:
//
// var _ = __VDLInit()
//
// The purpose of this function is to ensure that vdl initialization occurs in
// the right order, and very early in the init sequence. In particular, vdl
// registration and package variable initialization needs to occur before
// functions like vdl.TypeOf will work properly.
//
// This function returns a dummy value, so that it can be used to initialize the
// first var in the file, to take advantage of Go's defined init order.
func __VDLInit() struct{} {
if __VDLInitCalled {
return struct{}{}
}
__VDLInitCalled = true
// Register types.
vdl.Register((*Instance)(nil))
// Initialize type definitions.
__VDLType_struct_1 = vdl.TypeOf((*Instance)(nil)).Elem()
__VDLType_list_2 = vdl.TypeOf((*[]string)(nil))
__VDLType_struct_3 = vdl.TypeOf((*vdltime.Time)(nil)).Elem()
return struct{}{}
}