veyron2/vdl: New API for generated Go interfaces.
The main change is for generated streaming methods on the server side. Here's
how they used to look:
Count(ctx ipc.ServerContext, start int32, stream ArithServiceCountStream) error
Here's the new way:
Count(ctx ArithCountContext, start int32) error
Instead of passing in a context and stream separately, we're now
passing them together. This keeps the client and server
interfaces more uniform, which helps simplify the generator
logic, and may be useful for the new Signature implementation.
There's also lots of renaming. In the new scheme, if the user
creates a VDL interface Arith, all generated funcs and interfaces
start with Arith. This means we'll support unexported VDL
interfaces "for free", and also improves generated godoc by
grouping things together.
Here's a renaming cheatsheet; given a VDL interface Foo with one
streaming and one non-streaming method:
type Foo interface {
XXX()
YYY() stream<a, b>
}
type Foo_ExcludingUniversal -> FooClientMethods
type Foo -> FooClientStub
func BindFoo() -> FooClient()
type FooService -> FooServerMethods
type ServerStubFoo -> FooServerStub
func NewServerFoo() -> FooServer()
type FooYYYCall -> FooYYYCall
-> FooYYYClientStream
type FooServiceYYYStream -> FooYYYServerStream
-> FooYYYContext
Change-Id: I48e9dd2ab676da50f9c989368ed849e2d0e95256
diff --git a/lib/signals/signals_test.go b/lib/signals/signals_test.go
index cfe3f16..5588610 100644
--- a/lib/signals/signals_test.go
+++ b/lib/signals/signals_test.go
@@ -317,7 +317,7 @@
if ep, err = server.Listen(profiles.LocalListenSpec); err != nil {
t.Fatalf("Got error: %v", err)
}
- if err := server.Serve("", node.NewServerConfig(&configServer{ch}), vflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve("", node.ConfigServer(&configServer{ch}), vflag.NewAuthorizerOrDie()); err != nil {
t.Fatalf("Got error: %v", err)
}
return server, naming.JoinAddressName(ep.String(), ""), ch
@@ -350,10 +350,7 @@
s := expect.NewSession(t, h.Stdout(), time.Minute)
appCycleName := <-ch
s.Expect("ready")
- appCycle, err := appcycle.BindAppCycle(appCycleName)
- if err != nil {
- t.Fatalf("Got error: %v", err)
- }
+ appCycle := appcycle.AppCycleClient(appCycleName)
stream, err := appCycle.Stop(r.NewContext())
if err != nil {
t.Fatalf("Got error: %v", err)
diff --git a/runtimes/google/appcycle/appcycle.go b/runtimes/google/appcycle/appcycle.go
index 85979e2..e434523 100644
--- a/runtimes/google/appcycle/appcycle.go
+++ b/runtimes/google/appcycle/appcycle.go
@@ -12,52 +12,68 @@
"veyron.io/veyron/veyron2/ipc"
)
-// AppCycleService is the interface the server implements.
-type AppCycleService interface {
-
- // Stop initiates shutdown of the server. It streams back periodic updates
- // to give the client an idea of how the shutdown is progressing.
- Stop(context ipc.ServerContext, stream AppCycleServiceStopStream) (err error)
- // ForceStop tells the server to shut down right away. It can be issued while
- // a Stop is outstanding if for example the client does not want to wait any
- // longer.
- ForceStop(context ipc.ServerContext) (err error)
+// AppCycleServerMethods is the interface a server writer
+// implements for AppCycle.
+//
+// AppCycle interfaces with the process running a veyron runtime.
+type AppCycleServerMethods interface {
+ // Stop initiates shutdown of the server. It streams back periodic
+ // updates to give the client an idea of how the shutdown is
+ // progressing.
+ Stop(AppCycleStopContext) error
+ // ForceStop tells the server to shut down right away. It can be issued
+ // while a Stop is outstanding if for example the client does not want
+ // to wait any longer.
+ ForceStop(ipc.ServerContext) error
}
-// NewServerAppCycle creates a new receiver from the given AppCycleService.
-func NewServerAppCycle(server AppCycleService) interface{} {
- return &ServerStubAppCycle{
- service: server,
+// AppCycleServer returns a server stub for AppCycle.
+// It converts an implementation of AppCycleServerMethods into
+// an object that may be used by ipc.Server.
+func AppCycleServer(impl AppCycleServerMethods) AppCycleServerStub {
+ return AppCycleServerStub{impl}
+}
+
+type AppCycleServerStub struct {
+ impl AppCycleServerMethods
+}
+
+func (s AppCycleServerStub) Stop(call ipc.ServerCall) error {
+ ctx := &implAppCycleStopContext{call, implAppCycleStopServerSend{call}}
+ return s.impl.Stop(ctx)
+}
+
+func (s AppCycleServerStub) ForceStop(call ipc.ServerCall) error {
+ return s.impl.ForceStop(call)
+}
+
+// AppCycleStopContext represents the context passed to AppCycle.Stop.
+type AppCycleStopContext interface {
+ ipc.ServerContext
+ // SendStream returns the send side of the server stream.
+ SendStream() interface {
+ // Send places the item onto the output stream. Returns errors encountered
+ // while sending. Blocks if there is no buffer space; will unblock when
+ // buffer space is available.
+ Send(item veyron2.Task) error
}
}
-type AppCycleServiceStopStream interface {
- // Send places the item onto the output stream, blocking if there is no buffer
- // space available.
+type implAppCycleStopServerSend struct {
+ call ipc.ServerCall
+}
+
+func (s *implAppCycleStopServerSend) Send(item veyron2.Task) error {
+ return s.call.Send(item)
+}
+
+type implAppCycleStopContext struct {
+ ipc.ServerContext
+ send implAppCycleStopServerSend
+}
+
+func (s *implAppCycleStopContext) SendStream() interface {
Send(item veyron2.Task) error
-}
-
-// Implementation of the AppCycleServiceStopStream interface that is not exported.
-type implAppCycleServiceStopStream struct {
- serverCall ipc.ServerCall
-}
-
-func (s *implAppCycleServiceStopStream) Send(item veyron2.Task) error {
- return s.serverCall.Send(item)
-}
-
-// ServerStubAppCycle wraps a server that implements
-// AppCycleService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubAppCycle struct {
- service AppCycleService
-}
-
-func (s *ServerStubAppCycle) Stop(call ipc.ServerCall) error {
- stream := &implAppCycleServiceStopStream{serverCall: call}
- return s.service.Stop(call, stream)
-}
-
-func (s *ServerStubAppCycle) ForceStop(call ipc.ServerCall) error {
- return s.service.ForceStop(call)
+} {
+ return &s.send
}
diff --git a/runtimes/google/ipc/benchmarks/client.go b/runtimes/google/ipc/benchmarks/client.go
index 7d7c871..1ed3a21 100644
--- a/runtimes/google/ipc/benchmarks/client.go
+++ b/runtimes/google/ipc/benchmarks/client.go
@@ -19,11 +19,7 @@
payload[i] = byte(i & 0xff)
}
- stub, err := BindBenchmark(address)
- if err != nil {
- vlog.Fatalf("BindBenchmark(%q) failed: %v", address, err)
- }
-
+ stub := BenchmarkClient(address)
for i := 0; i < iterations; i++ {
start := time.Now()
result, err := stub.Echo(ctx, payload)
@@ -49,11 +45,7 @@
payload[i] = byte(i & 0xff)
}
- stub, err := BindBenchmark(address)
- if err != nil {
- vlog.Fatalf("BindBenchmark(%q) failed: %v", address, err)
- }
-
+ stub := BenchmarkClient(address)
for i := 0; i < rpcCount; i++ {
start := time.Now()
ctx, _ := rt.R().NewContext().WithTimeout(time.Hour)
diff --git a/runtimes/google/ipc/benchmarks/service.vdl.go b/runtimes/google/ipc/benchmarks/service.vdl.go
index 646f0b0..d3f44ee 100644
--- a/runtimes/google/ipc/benchmarks/service.vdl.go
+++ b/runtimes/google/ipc/benchmarks/service.vdl.go
@@ -6,149 +6,186 @@
package benchmarks
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_io "io"
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __io "io"
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
-// Benchmark is the interface the client binds and uses.
-// Benchmark_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Benchmark_ExcludingUniversal interface {
+// BenchmarkClientMethods is the client interface
+// containing Benchmark methods.
+type BenchmarkClientMethods interface {
// Echo returns the payload that it receives.
- Echo(ctx _gen_context.T, Payload []byte, opts ..._gen_ipc.CallOpt) (reply []byte, err error)
+ Echo(ctx __context.T, Payload []byte, opts ...__ipc.CallOpt) ([]byte, error)
// EchoStream returns the payload that it receives via the stream.
- EchoStream(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply BenchmarkEchoStreamCall, err error)
-}
-type Benchmark interface {
- _gen_ipc.UniversalServiceMethods
- Benchmark_ExcludingUniversal
+ EchoStream(__context.T, ...__ipc.CallOpt) (BenchmarkEchoStreamCall, error)
}
-// BenchmarkService is the interface the server implements.
-type BenchmarkService interface {
-
- // Echo returns the payload that it receives.
- Echo(context _gen_ipc.ServerContext, Payload []byte) (reply []byte, err error)
- // EchoStream returns the payload that it receives via the stream.
- EchoStream(context _gen_ipc.ServerContext, stream BenchmarkServiceEchoStreamStream) (err error)
+// BenchmarkClientStub adds universal methods to BenchmarkClientMethods.
+type BenchmarkClientStub interface {
+ BenchmarkClientMethods
+ __ipc.UniversalServiceMethods
}
-// BenchmarkEchoStreamCall is the interface for call object of the method
-// EchoStream in the service interface Benchmark.
-type BenchmarkEchoStreamCall interface {
- // RecvStream returns the recv portion of the stream
+// BenchmarkClient returns a client stub for Benchmark.
+func BenchmarkClient(name string, opts ...__ipc.BindOpt) BenchmarkClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
+ client = clientOpt
+ }
+ }
+ return implBenchmarkClientStub{name, client}
+}
+
+type implBenchmarkClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implBenchmarkClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implBenchmarkClientStub) Echo(ctx __context.T, i0 []byte, opts ...__ipc.CallOpt) (o0 []byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Echo", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implBenchmarkClientStub) EchoStream(ctx __context.T, opts ...__ipc.CallOpt) (ocall BenchmarkEchoStreamCall, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoStream", nil, opts...); err != nil {
+ return
+ }
+ ocall = &implBenchmarkEchoStreamCall{call, implBenchmarkEchoStreamClientRecv{call: call}, implBenchmarkEchoStreamClientSend{call}}
+ return
+}
+
+func (c implBenchmarkClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implBenchmarkClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// BenchmarkEchoStreamClientStream is the client stream for Benchmark.EchoStream.
+type BenchmarkEchoStreamClientStream interface {
+ // RecvStream returns the receiver side of the client stream.
RecvStream() interface {
- // Advance stages an element so the client can retrieve it
- // with Value. Advance returns true iff there is an
- // element to retrieve. The client must call Advance before
- // calling Value. Advance may block if an element is not
- // immediately available.
+ // Advance stages an item so that it may be retrieved via Value. Returns
+ // true iff there is an item to retrieve. Advance must be called before
+ // Value is called. May block if an item is not available.
Advance() bool
-
- // Value returns the element that was staged by Advance.
- // Value may panic if Advance returned false or was not
- // called at all. Value does not block.
+ // Value returns the item that was staged by Advance. May panic if Advance
+ // returned false or was not called. Never blocks.
Value() []byte
-
- // Err returns a non-nil error iff the stream encountered
- // any errors. Err does not block.
+ // Err returns any error encountered by Advance. Never blocks.
Err() error
}
-
- // SendStream returns the send portion of the stream
+ // SendStream returns the send side of the client stream.
SendStream() interface {
- // Send places the item onto the output stream, blocking if there is no
- // buffer space available. Calls to Send after having called Close
- // or Cancel will fail. Any blocked Send calls will be unblocked upon
- // calling Cancel.
+ // Send places the item onto the output stream. Returns errors encountered
+ // while sending, or if Send is called after Close or Cancel. Blocks if
+ // there is no buffer space; will unblock when buffer space is available or
+ // after Cancel.
Send(item []byte) error
-
- // Close indicates to the server that no more items will be sent;
- // server Recv calls will receive io.EOF after all sent items. This is
- // an optional call - it's used by streaming clients that need the
- // server to receive the io.EOF terminator before the client calls
- // Finish (for example, if the client needs to continue receiving items
- // from the server after having finished sending).
- // Calls to Close after having called Cancel will fail.
- // Like Send, Close blocks when there's no buffer space available.
+ // Close indicates to the server that no more items will be sent; server
+ // Recv calls will receive io.EOF after all sent items. This is an optional
+ // call - e.g. a client might call Close if it needs to continue receiving
+ // items from the server after it's done sending. Returns errors
+ // encountered while closing, or if Close is called after Cancel. Like
+ // Send, blocks if there is no buffer space available.
Close() error
}
+}
- // Finish performs the equivalent of SendStream().Close, then blocks until the server
- // is done, and returns the positional return values for call.
- // If Cancel has been called, Finish will return immediately; the output of
- // Finish could either be an error signalling cancelation, or the correct
- // positional return values from the server depending on the timing of the
- // call.
+// BenchmarkEchoStreamCall represents the call returned from Benchmark.EchoStream.
+type BenchmarkEchoStreamCall interface {
+ BenchmarkEchoStreamClientStream
+ // Finish performs the equivalent of SendStream().Close, then blocks until
+ // the server is done, and returns the positional return values for the call.
+ //
+ // Finish returns immediately if Cancel has been called; depending on the
+ // timing the output could either be an error signaling cancelation, or the
+ // valid positional return values from the server.
//
// Calling Finish is mandatory for releasing stream resources, unless Cancel
- // has been called or any of the other methods return an error.
- // Finish should be called at most once.
- Finish() (err error)
-
- // Cancel cancels the RPC, notifying the server to stop processing. It
- // is safe to call Cancel concurrently with any of the other stream methods.
+ // has been called or any of the other methods return an error. Finish should
+ // be called at most once.
+ Finish() error
+ // Cancel cancels the RPC, notifying the server to stop processing. It is
+ // safe to call Cancel concurrently with any of the other stream methods.
// Calling Cancel after Finish has returned is a no-op.
Cancel()
}
-type implBenchmarkEchoStreamStreamSender struct {
- clientCall _gen_ipc.Call
+type implBenchmarkEchoStreamClientRecv struct {
+ call __ipc.Call
+ val []byte
+ err error
}
-func (c *implBenchmarkEchoStreamStreamSender) Send(item []byte) error {
- return c.clientCall.Send(item)
-}
-
-func (c *implBenchmarkEchoStreamStreamSender) Close() error {
- return c.clientCall.CloseSend()
-}
-
-type implBenchmarkEchoStreamStreamIterator struct {
- clientCall _gen_ipc.Call
- val []byte
- err error
-}
-
-func (c *implBenchmarkEchoStreamStreamIterator) Advance() bool {
- c.err = c.clientCall.Recv(&c.val)
+func (c *implBenchmarkEchoStreamClientRecv) Advance() bool {
+ c.err = c.call.Recv(&c.val)
return c.err == nil
}
-
-func (c *implBenchmarkEchoStreamStreamIterator) Value() []byte {
+func (c *implBenchmarkEchoStreamClientRecv) Value() []byte {
return c.val
}
-
-func (c *implBenchmarkEchoStreamStreamIterator) Err() error {
- if c.err == _gen_io.EOF {
+func (c *implBenchmarkEchoStreamClientRecv) Err() error {
+ if c.err == __io.EOF {
return nil
}
return c.err
}
-// Implementation of the BenchmarkEchoStreamCall interface that is not exported.
-type implBenchmarkEchoStreamCall struct {
- clientCall _gen_ipc.Call
- writeStream implBenchmarkEchoStreamStreamSender
- readStream implBenchmarkEchoStreamStreamIterator
+type implBenchmarkEchoStreamClientSend struct {
+ call __ipc.Call
}
-func (c *implBenchmarkEchoStreamCall) SendStream() interface {
- Send(item []byte) error
- Close() error
-} {
- return &c.writeStream
+func (c *implBenchmarkEchoStreamClientSend) Send(item []byte) error {
+ return c.call.Send(item)
+}
+func (c *implBenchmarkEchoStreamClientSend) Close() error {
+ return c.call.CloseSend()
+}
+
+type implBenchmarkEchoStreamCall struct {
+ call __ipc.Call
+ recv implBenchmarkEchoStreamClientRecv
+ send implBenchmarkEchoStreamClientSend
}
func (c *implBenchmarkEchoStreamCall) RecvStream() interface {
@@ -156,245 +193,91 @@
Value() []byte
Err() error
} {
- return &c.readStream
+ return &c.recv
}
-
+func (c *implBenchmarkEchoStreamCall) SendStream() interface {
+ Send(item []byte) error
+ Close() error
+} {
+ return &c.send
+}
func (c *implBenchmarkEchoStreamCall) Finish() (err error) {
- if ierr := c.clientCall.Finish(&err); ierr != nil {
+ if ierr := c.call.Finish(&err); ierr != nil {
err = ierr
}
return
}
-
func (c *implBenchmarkEchoStreamCall) Cancel() {
- c.clientCall.Cancel()
+ c.call.Cancel()
}
-type implBenchmarkServiceEchoStreamStreamSender struct {
- serverCall _gen_ipc.ServerCall
+// BenchmarkServerMethods is the interface a server writer
+// implements for Benchmark.
+type BenchmarkServerMethods interface {
+ // Echo returns the payload that it receives.
+ Echo(ctx __ipc.ServerContext, Payload []byte) ([]byte, error)
+ // EchoStream returns the payload that it receives via the stream.
+ EchoStream(BenchmarkEchoStreamContext) error
}
-func (s *implBenchmarkServiceEchoStreamStreamSender) Send(item []byte) error {
- return s.serverCall.Send(item)
+// BenchmarkServerStubMethods is the server interface containing
+// Benchmark methods, as expected by ipc.Server. The difference between
+// this interface and BenchmarkServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type BenchmarkServerStubMethods interface {
+ // Echo returns the payload that it receives.
+ Echo(call __ipc.ServerCall, Payload []byte) ([]byte, error)
+ // EchoStream returns the payload that it receives via the stream.
+ EchoStream(__ipc.ServerCall) error
}
-type implBenchmarkServiceEchoStreamStreamIterator struct {
- serverCall _gen_ipc.ServerCall
- val []byte
- err error
+// BenchmarkServerStub adds universal methods to BenchmarkServerStubMethods.
+type BenchmarkServerStub interface {
+ BenchmarkServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
}
-func (s *implBenchmarkServiceEchoStreamStreamIterator) Advance() bool {
- s.err = s.serverCall.Recv(&s.val)
- return s.err == nil
-}
-
-func (s *implBenchmarkServiceEchoStreamStreamIterator) Value() []byte {
- return s.val
-}
-
-func (s *implBenchmarkServiceEchoStreamStreamIterator) Err() error {
- if s.err == _gen_io.EOF {
- return nil
+// BenchmarkServer returns a server stub for Benchmark.
+// It converts an implementation of BenchmarkServerMethods into
+// an object that may be used by ipc.Server.
+func BenchmarkServer(impl BenchmarkServerMethods) BenchmarkServerStub {
+ stub := implBenchmarkServerStub{
+ impl: impl,
}
- return s.err
-}
-
-// BenchmarkServiceEchoStreamStream is the interface for streaming responses of the method
-// EchoStream in the service interface Benchmark.
-type BenchmarkServiceEchoStreamStream interface {
- // SendStream returns the send portion of the stream.
- SendStream() interface {
- // Send places the item onto the output stream, blocking if there is no buffer
- // space available. If the client has canceled, an error is returned.
- Send(item []byte) error
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // RecvStream returns the recv portion of the stream
- RecvStream() interface {
- // Advance stages an element so the client can retrieve it
- // with Value. Advance returns true iff there is an
- // element to retrieve. The client must call Advance before
- // calling Value. Advance may block if an element is not
- // immediately available.
- Advance() bool
-
- // Value returns the element that was staged by Advance.
- // Value may panic if Advance returned false or was not
- // called at all. Value does not block.
- Value() []byte
-
- // Err returns a non-nil error iff the stream encountered
- // any errors. Err does not block.
- Err() error
- }
-}
-
-// Implementation of the BenchmarkServiceEchoStreamStream interface that is not exported.
-type implBenchmarkServiceEchoStreamStream struct {
- writer implBenchmarkServiceEchoStreamStreamSender
- reader implBenchmarkServiceEchoStreamStreamIterator
-}
-
-func (s *implBenchmarkServiceEchoStreamStream) SendStream() interface {
- // Send places the item onto the output stream, blocking if there is no buffer
- // space available. If the client has canceled, an error is returned.
- Send(item []byte) error
-} {
- return &s.writer
-}
-
-func (s *implBenchmarkServiceEchoStreamStream) RecvStream() interface {
- // Advance stages an element so the client can retrieve it
- // with Value. Advance returns true iff there is an
- // element to retrieve. The client must call Advance before
- // calling Value. The client must call Cancel if it does
- // not iterate through all elements (i.e. until Advance
- // returns false). Advance may block if an element is not
- // immediately available.
- Advance() bool
-
- // Value returns the element that was staged by Advance.
- // Value may panic if Advance returned false or was not
- // called at all. Value does not block.
- Value() []byte
-
- // Err returns a non-nil error iff the stream encountered
- // any errors. Err does not block.
- Err() error
-} {
- return &s.reader
-}
-
-// BindBenchmark returns the client stub implementing the Benchmark
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindBenchmark(name string, opts ..._gen_ipc.BindOpt) (Benchmark, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
- client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
- }
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
- }
- stub := &clientStubBenchmark{defaultClient: client, name: name}
-
- return stub, nil
-}
-
-// NewServerBenchmark creates a new server stub.
-//
-// It takes a regular server implementing the BenchmarkService
-// interface, and returns a new server stub.
-func NewServerBenchmark(server BenchmarkService) interface{} {
- stub := &ServerStubBenchmark{
- service: server,
- }
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubBenchmark implements Benchmark.
-type clientStubBenchmark struct {
- defaultClient _gen_ipc.Client
- name string
+type implBenchmarkServerStub struct {
+ impl BenchmarkServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubBenchmark) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implBenchmarkServerStub) Echo(call __ipc.ServerCall, i0 []byte) ([]byte, error) {
+ return s.impl.Echo(call, i0)
}
-func (__gen_c *clientStubBenchmark) Echo(ctx _gen_context.T, Payload []byte, opts ..._gen_ipc.CallOpt) (reply []byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Echo", []interface{}{Payload}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implBenchmarkServerStub) EchoStream(call __ipc.ServerCall) error {
+ ctx := &implBenchmarkEchoStreamContext{call, implBenchmarkEchoStreamServerRecv{call: call}, implBenchmarkEchoStreamServerSend{call}}
+ return s.impl.EchoStream(ctx)
}
-func (__gen_c *clientStubBenchmark) EchoStream(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply BenchmarkEchoStreamCall, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoStream", nil, opts...); err != nil {
- return
- }
- reply = &implBenchmarkEchoStreamCall{clientCall: call, writeStream: implBenchmarkEchoStreamStreamSender{clientCall: call}, readStream: implBenchmarkEchoStreamStreamIterator{clientCall: call}}
- return
+func (s implBenchmarkServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubBenchmark) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubBenchmark) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubBenchmark) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubBenchmark wraps a server that implements
-// BenchmarkService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubBenchmark struct {
- service BenchmarkService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubBenchmark) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implBenchmarkServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Echo":
return []interface{}{}, nil
@@ -405,61 +288,105 @@
}
}
-func (__gen_s *ServerStubBenchmark) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Echo"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implBenchmarkServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Echo"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Payload", Type: 66},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 66},
{Name: "", Type: 67},
},
}
- result.Methods["EchoStream"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoStream"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 67},
},
InStream: 66,
OutStream: 66,
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-func (__gen_s *ServerStubBenchmark) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
+// BenchmarkEchoStreamServerStream is the server stream for Benchmark.EchoStream.
+type BenchmarkEchoStreamServerStream interface {
+ // RecvStream returns the receiver side of the server stream.
+ RecvStream() interface {
+ // Advance stages an item so that it may be retrieved via Value. Returns
+ // true iff there is an item to retrieve. Advance must be called before
+ // Value is called. May block if an item is not available.
+ Advance() bool
+ // Value returns the item that was staged by Advance. May panic if Advance
+ // returned false or was not called. Never blocks.
+ Value() []byte
+ // Err returns any error encountered by Advance. Never blocks.
+ Err() error
}
- if call.Server() == nil {
- return
+ // SendStream returns the send side of the server stream.
+ SendStream() interface {
+ // Send places the item onto the output stream. Returns errors encountered
+ // while sending. Blocks if there is no buffer space; will unblock when
+ // buffer space is available.
+ Send(item []byte) error
}
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
}
-func (__gen_s *ServerStubBenchmark) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
+// BenchmarkEchoStreamContext represents the context passed to Benchmark.EchoStream.
+type BenchmarkEchoStreamContext interface {
+ __ipc.ServerContext
+ BenchmarkEchoStreamServerStream
}
-func (__gen_s *ServerStubBenchmark) Echo(call _gen_ipc.ServerCall, Payload []byte) (reply []byte, err error) {
- reply, err = __gen_s.service.Echo(call, Payload)
- return
+type implBenchmarkEchoStreamServerRecv struct {
+ call __ipc.ServerCall
+ val []byte
+ err error
}
-func (__gen_s *ServerStubBenchmark) EchoStream(call _gen_ipc.ServerCall) (err error) {
- stream := &implBenchmarkServiceEchoStreamStream{reader: implBenchmarkServiceEchoStreamStreamIterator{serverCall: call}, writer: implBenchmarkServiceEchoStreamStreamSender{serverCall: call}}
- err = __gen_s.service.EchoStream(call, stream)
- return
+func (s *implBenchmarkEchoStreamServerRecv) Advance() bool {
+ s.err = s.call.Recv(&s.val)
+ return s.err == nil
+}
+func (s *implBenchmarkEchoStreamServerRecv) Value() []byte {
+ return s.val
+}
+func (s *implBenchmarkEchoStreamServerRecv) Err() error {
+ if s.err == __io.EOF {
+ return nil
+ }
+ return s.err
+}
+
+type implBenchmarkEchoStreamServerSend struct {
+ call __ipc.ServerCall
+}
+
+func (s *implBenchmarkEchoStreamServerSend) Send(item []byte) error {
+ return s.call.Send(item)
+}
+
+type implBenchmarkEchoStreamContext struct {
+ __ipc.ServerContext
+ recv implBenchmarkEchoStreamServerRecv
+ send implBenchmarkEchoStreamServerSend
+}
+
+func (s *implBenchmarkEchoStreamContext) RecvStream() interface {
+ Advance() bool
+ Value() []byte
+ Err() error
+} {
+ return &s.recv
+}
+func (s *implBenchmarkEchoStreamContext) SendStream() interface {
+ Send(item []byte) error
+} {
+ return &s.send
}
diff --git a/runtimes/google/naming/namespace/all_test.go b/runtimes/google/naming/namespace/all_test.go
index da85431..8a10577 100644
--- a/runtimes/google/naming/namespace/all_test.go
+++ b/runtimes/google/naming/namespace/all_test.go
@@ -466,7 +466,7 @@
mu sync.Mutex
}
-func (g *GlobbableServer) Glob(ipc.ServerContext, string, mounttable.GlobbableServiceGlobStream) error {
+func (g *GlobbableServer) Glob(mounttable.GlobbableGlobContext, string) error {
g.mu.Lock()
defer g.mu.Unlock()
g.callCount++
@@ -492,7 +492,7 @@
globServer := &GlobbableServer{}
name := naming.JoinAddressName(mts["mt4/foo/bar"].name, "glob")
- runningGlobServer := runServer(t, r, ipc.LeafDispatcher(mounttable.NewServerGlobbable(globServer), nil), name)
+ runningGlobServer := runServer(t, r, ipc.LeafDispatcher(mounttable.GlobbableServer(globServer), nil), name)
defer runningGlobServer.server.Stop()
ns := r.Namespace()
diff --git a/runtimes/google/naming/namespace/resolve.go b/runtimes/google/naming/namespace/resolve.go
index 1d6e572..7d700e9 100644
--- a/runtimes/google/naming/namespace/resolve.go
+++ b/runtimes/google/naming/namespace/resolve.go
@@ -181,6 +181,7 @@
return newNames, unresolveErr
}
+// TODO(caprita): UnresolveStep no longer exists.
func unresolveAgainstServer(ctx context.T, client ipc.Client, names []string) ([]string, error) {
finalErr := errors.New("no servers to unresolve")
for _, name := range names {
diff --git a/runtimes/google/rt/mgmt.go b/runtimes/google/rt/mgmt.go
index a6cac2a..33dc8c2 100644
--- a/runtimes/google/rt/mgmt.go
+++ b/runtimes/google/rt/mgmt.go
@@ -69,7 +69,7 @@
if err != nil {
return err
}
- if err := m.server.Serve("", appcycle.NewServerAppCycle(m), nil); err != nil {
+ if err := m.server.Serve("", appcycle.AppCycleServer(m), nil); err != nil {
return err
}
return m.callbackToParent(parentName, naming.JoinAddressName(ep.String(), ""))
@@ -174,7 +174,7 @@
rt.advanceTask(delta, 0)
}
-func (m *mgmtImpl) Stop(_ ipc.ServerContext, stream appcycle.AppCycleServiceStopStream) error {
+func (m *mgmtImpl) Stop(ctx appcycle.AppCycleStopContext) error {
// The size of the channel should be reasonably sized to expect not to
// miss updates while we're waiting for the stream to unblock.
ch := make(chan veyron2.Task, 10)
@@ -187,7 +187,7 @@
// Channel closed, meaning process shutdown is imminent.
break
}
- stream.Send(task)
+ ctx.SendStream().Send(task)
}
return nil
}
diff --git a/runtimes/google/rt/mgmt_test.go b/runtimes/google/rt/mgmt_test.go
index 002cc2e..512303c 100644
--- a/runtimes/google/rt/mgmt_test.go
+++ b/runtimes/google/rt/mgmt_test.go
@@ -273,14 +273,14 @@
if ep, err = server.Listen(profiles.LocalListenSpec); err != nil {
t.Fatalf("Got error: %v", err)
}
- if err := server.Serve("", node.NewServerConfig(&configServer{ch}), vflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve("", node.ConfigServer(&configServer{ch}), vflag.NewAuthorizerOrDie()); err != nil {
t.Fatalf("Got error: %v", err)
}
return server, naming.JoinAddressName(ep.String(), ""), ch
}
-func setupRemoteAppCycleMgr(t *testing.T) (veyron2.Runtime, modules.Handle, appcycle.AppCycle, func()) {
+func setupRemoteAppCycleMgr(t *testing.T) (veyron2.Runtime, modules.Handle, appcycle.AppCycleClientMethods, func()) {
// We need to use the public API since stubs are used below (and they
// refer to the global rt.R() function), but we take care to make sure
// that the "google" runtime we are trying to test in this package is
@@ -300,10 +300,7 @@
}
appCycleName := <-ch
- appCycle, err := appcycle.BindAppCycle(appCycleName)
- if err != nil {
- t.Fatalf("Got error: %v", err)
- }
+ appCycle := appcycle.AppCycleClient(appCycleName)
return r, h, appCycle, func() {
configServer.Stop()
sh.Cleanup(os.Stderr, os.Stderr)
diff --git a/security/acl/authorizer_test.go b/security/acl/authorizer_test.go
index 59137b5..f5c88f7 100644
--- a/security/acl/authorizer_test.go
+++ b/security/acl/authorizer_test.go
@@ -208,7 +208,7 @@
}
func methodTags(method string) []interface{} {
- server := &test.ServerStubMyObject{}
+ server := test.MyObjectServer(nil)
tags, _ := server.GetMethodTags(nil, method)
return tags
}
diff --git a/security/acl/test/vdl.vdl.go b/security/acl/test/vdl.vdl.go
index 91e5790..92ed7fb 100644
--- a/security/acl/test/vdl.vdl.go
+++ b/security/acl/test/vdl.vdl.go
@@ -5,15 +5,19 @@
package test
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
+// TODO(toddw): Remove this line once the new signature support is done.
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
+// bootstrap types are used on interfaces.
+const _ = __wiretype.TypeIDInvalid
+
// Any package can define tags (of arbitrary types) to be attached to methods.
// This type can be used to index into a TaggedACLMap.
type MyTag string
@@ -26,201 +30,206 @@
const Execute = MyTag("X")
-// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
-// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
-
+// MyObjectClientMethods is the client interface
+// containing MyObject methods.
+//
// MyObject demonstrates how tags are attached to methods.
-// MyObject is the interface the client binds and uses.
-// MyObject_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type MyObject_ExcludingUniversal interface {
- Get(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
- Put(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
- Resolve(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
- NoTags(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) // No tags attached to this.
- AllTags(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
-}
-type MyObject interface {
- _gen_ipc.UniversalServiceMethods
- MyObject_ExcludingUniversal
+type MyObjectClientMethods interface {
+ Get(__context.T, ...__ipc.CallOpt) error
+ Put(__context.T, ...__ipc.CallOpt) error
+ Resolve(__context.T, ...__ipc.CallOpt) error
+ NoTags(__context.T, ...__ipc.CallOpt) error // No tags attached to this.
+ AllTags(__context.T, ...__ipc.CallOpt) error
}
-// MyObjectService is the interface the server implements.
-type MyObjectService interface {
- Get(context _gen_ipc.ServerContext) (err error)
- Put(context _gen_ipc.ServerContext) (err error)
- Resolve(context _gen_ipc.ServerContext) (err error)
- NoTags(context _gen_ipc.ServerContext) (err error) // No tags attached to this.
- AllTags(context _gen_ipc.ServerContext) (err error)
+// MyObjectClientStub adds universal methods to MyObjectClientMethods.
+type MyObjectClientStub interface {
+ MyObjectClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindMyObject returns the client stub implementing the MyObject
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindMyObject(name string, opts ..._gen_ipc.BindOpt) (MyObject, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// MyObjectClient returns a client stub for MyObject.
+func MyObjectClient(name string, opts ...__ipc.BindOpt) MyObjectClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubMyObject{defaultClient: client, name: name}
-
- return stub, nil
+ return implMyObjectClientStub{name, client}
}
-// NewServerMyObject creates a new server stub.
+type implMyObjectClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implMyObjectClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implMyObjectClientStub) Get(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Get", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) Put(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Put", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) Resolve(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Resolve", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) NoTags(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "NoTags", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) AllTags(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "AllTags", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMyObjectClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// MyObjectServerMethods is the interface a server writer
+// implements for MyObject.
//
-// It takes a regular server implementing the MyObjectService
-// interface, and returns a new server stub.
-func NewServerMyObject(server MyObjectService) interface{} {
- stub := &ServerStubMyObject{
- service: server,
+// MyObject demonstrates how tags are attached to methods.
+type MyObjectServerMethods interface {
+ Get(__ipc.ServerContext) error
+ Put(__ipc.ServerContext) error
+ Resolve(__ipc.ServerContext) error
+ NoTags(__ipc.ServerContext) error // No tags attached to this.
+ AllTags(__ipc.ServerContext) error
+}
+
+// MyObjectServerStubMethods is the server interface containing
+// MyObject methods, as expected by ipc.Server. The difference between
+// this interface and MyObjectServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type MyObjectServerStubMethods interface {
+ Get(__ipc.ServerCall) error
+ Put(__ipc.ServerCall) error
+ Resolve(__ipc.ServerCall) error
+ NoTags(__ipc.ServerCall) error // No tags attached to this.
+ AllTags(__ipc.ServerCall) error
+}
+
+// MyObjectServerStub adds universal methods to MyObjectServerStubMethods.
+type MyObjectServerStub interface {
+ MyObjectServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// MyObjectServer returns a server stub for MyObject.
+// It converts an implementation of MyObjectServerMethods into
+// an object that may be used by ipc.Server.
+func MyObjectServer(impl MyObjectServerMethods) MyObjectServerStub {
+ stub := implMyObjectServerStub{
+ impl: impl,
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubMyObject implements MyObject.
-type clientStubMyObject struct {
- defaultClient _gen_ipc.Client
- name string
+type implMyObjectServerStub struct {
+ impl MyObjectServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubMyObject) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implMyObjectServerStub) Get(call __ipc.ServerCall) error {
+ return s.impl.Get(call)
}
-func (__gen_c *clientStubMyObject) Get(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Get", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implMyObjectServerStub) Put(call __ipc.ServerCall) error {
+ return s.impl.Put(call)
}
-func (__gen_c *clientStubMyObject) Put(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Put", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implMyObjectServerStub) Resolve(call __ipc.ServerCall) error {
+ return s.impl.Resolve(call)
}
-func (__gen_c *clientStubMyObject) Resolve(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Resolve", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implMyObjectServerStub) NoTags(call __ipc.ServerCall) error {
+ return s.impl.NoTags(call)
}
-func (__gen_c *clientStubMyObject) NoTags(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "NoTags", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implMyObjectServerStub) AllTags(call __ipc.ServerCall) error {
+ return s.impl.AllTags(call)
}
-func (__gen_c *clientStubMyObject) AllTags(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "AllTags", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implMyObjectServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubMyObject) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubMyObject) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubMyObject) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubMyObject wraps a server that implements
-// MyObjectService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubMyObject struct {
- service MyObjectService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubMyObject) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implMyObjectServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Get":
return []interface{}{MyTag("R")}, nil
@@ -237,88 +246,42 @@
}
}
-func (__gen_s *ServerStubMyObject) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["AllTags"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+func (s implMyObjectServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["AllTags"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["Get"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Get"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["NoTags"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["NoTags"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["Put"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Put"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["Resolve"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Resolve"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubMyObject) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubMyObject) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubMyObject) Get(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.Get(call)
- return
-}
-
-func (__gen_s *ServerStubMyObject) Put(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.Put(call)
- return
-}
-
-func (__gen_s *ServerStubMyObject) Resolve(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.Resolve(call)
- return
-}
-
-func (__gen_s *ServerStubMyObject) NoTags(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.NoTags(call)
- return
-}
-
-func (__gen_s *ServerStubMyObject) AllTags(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.AllTags(call)
- return
-}
diff --git a/security/agent/pingpong/main.go b/security/agent/pingpong/main.go
index 1fa34fb..e09ef7b 100644
--- a/security/agent/pingpong/main.go
+++ b/security/agent/pingpong/main.go
@@ -26,11 +26,7 @@
log := runtime.Logger()
log.Info("Pinging...")
- s, err := BindPingPong("pingpong")
- if err != nil {
- log.Fatal("error binding to server: ", err)
- }
-
+ s := PingPongClient("pingpong")
pong, err := s.Ping(runtime.NewContext(), "ping")
if err != nil {
log.Fatal("error pinging: ", err)
@@ -47,7 +43,7 @@
}
log.Info("Waiting for ping")
- serverPong := NewServerPingPong(&pongd{})
+ serverPong := PingPongServer(&pongd{})
if endpoint, err := s.Listen(ipc.ListenSpec{Protocol: "tcp", Address: "127.0.0.1:0"}); err == nil {
fmt.Printf("Listening at: %v\n", endpoint)
diff --git a/security/agent/pingpong/wire.vdl.go b/security/agent/pingpong/wire.vdl.go
index 35862ff..5b969bd 100644
--- a/security/agent/pingpong/wire.vdl.go
+++ b/security/agent/pingpong/wire.vdl.go
@@ -4,158 +4,147 @@
package main
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// PingPongClientMethods is the client interface
+// containing PingPong methods.
+//
// Simple service used in the agent tests.
-// PingPong is the interface the client binds and uses.
-// PingPong_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type PingPong_ExcludingUniversal interface {
- Ping(ctx _gen_context.T, message string, opts ..._gen_ipc.CallOpt) (reply string, err error)
-}
-type PingPong interface {
- _gen_ipc.UniversalServiceMethods
- PingPong_ExcludingUniversal
+type PingPongClientMethods interface {
+ Ping(ctx __context.T, message string, opts ...__ipc.CallOpt) (string, error)
}
-// PingPongService is the interface the server implements.
-type PingPongService interface {
- Ping(context _gen_ipc.ServerContext, message string) (reply string, err error)
+// PingPongClientStub adds universal methods to PingPongClientMethods.
+type PingPongClientStub interface {
+ PingPongClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindPingPong returns the client stub implementing the PingPong
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindPingPong(name string, opts ..._gen_ipc.BindOpt) (PingPong, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// PingPongClient returns a client stub for PingPong.
+func PingPongClient(name string, opts ...__ipc.BindOpt) PingPongClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubPingPong{defaultClient: client, name: name}
-
- return stub, nil
+ return implPingPongClientStub{name, client}
}
-// NewServerPingPong creates a new server stub.
+type implPingPongClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implPingPongClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implPingPongClientStub) Ping(ctx __context.T, i0 string, opts ...__ipc.CallOpt) (o0 string, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Ping", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implPingPongClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implPingPongClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// PingPongServerMethods is the interface a server writer
+// implements for PingPong.
//
-// It takes a regular server implementing the PingPongService
-// interface, and returns a new server stub.
-func NewServerPingPong(server PingPongService) interface{} {
- stub := &ServerStubPingPong{
- service: server,
+// Simple service used in the agent tests.
+type PingPongServerMethods interface {
+ Ping(ctx __ipc.ServerContext, message string) (string, error)
+}
+
+// PingPongServerStubMethods is the server interface containing
+// PingPong methods, as expected by ipc.Server. The difference between
+// this interface and PingPongServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type PingPongServerStubMethods interface {
+ Ping(call __ipc.ServerCall, message string) (string, error)
+}
+
+// PingPongServerStub adds universal methods to PingPongServerStubMethods.
+type PingPongServerStub interface {
+ PingPongServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// PingPongServer returns a server stub for PingPong.
+// It converts an implementation of PingPongServerMethods into
+// an object that may be used by ipc.Server.
+func PingPongServer(impl PingPongServerMethods) PingPongServerStub {
+ stub := implPingPongServerStub{
+ impl: impl,
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubPingPong implements PingPong.
-type clientStubPingPong struct {
- defaultClient _gen_ipc.Client
- name string
+type implPingPongServerStub struct {
+ impl PingPongServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubPingPong) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implPingPongServerStub) Ping(call __ipc.ServerCall, i0 string) (string, error) {
+ return s.impl.Ping(call, i0)
}
-func (__gen_c *clientStubPingPong) Ping(ctx _gen_context.T, message string, opts ..._gen_ipc.CallOpt) (reply string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Ping", []interface{}{message}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implPingPongServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubPingPong) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubPingPong) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubPingPong) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubPingPong wraps a server that implements
-// PingPongService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubPingPong struct {
- service PingPongService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubPingPong) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implPingPongServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Ping":
return []interface{}{}, nil
@@ -164,47 +153,21 @@
}
}
-func (__gen_s *ServerStubPingPong) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Ping"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implPingPongServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Ping"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "message", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 3},
{Name: "", Type: 65},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubPingPong) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubPingPong) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubPingPong) Ping(call _gen_ipc.ServerCall, message string) (reply string, err error) {
- reply, err = __gen_s.service.Ping(call, message)
- return
-}
diff --git a/security/agent/server/server.go b/security/agent/server/server.go
index 9cfb422..a59effb 100644
--- a/security/agent/server/server.go
+++ b/security/agent/server/server.go
@@ -170,7 +170,7 @@
func startAgent(conn *net.UnixConn, runtime veyron2.Runtime, principal security.Principal) error {
agent := &agentd{principal: principal}
- serverAgent := NewServerAgent(agent)
+ serverAgent := AgentServer(agent)
go func() {
buf := make([]byte, 1)
for {
diff --git a/security/agent/server/wire.vdl.go b/security/agent/server/wire.vdl.go
index 2870d8e..dbc8646 100644
--- a/security/agent/server/wire.vdl.go
+++ b/security/agent/server/wire.vdl.go
@@ -6,326 +6,377 @@
import (
"veyron.io/veyron/veyron2/security"
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
-// Agent is the interface the client binds and uses.
-// Agent_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Agent_ExcludingUniversal interface {
- Bless(ctx _gen_context.T, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
- BlessSelf(ctx _gen_context.T, name string, caveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
- Sign(ctx _gen_context.T, message []byte, opts ..._gen_ipc.CallOpt) (reply security.Signature, err error)
- MintDischarge(ctx _gen_context.T, tp _gen_vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error)
- PublicKey(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error)
- AddToRoots(ctx _gen_context.T, blessing security.WireBlessings, opts ..._gen_ipc.CallOpt) (err error)
- BlessingStoreSet(ctx _gen_context.T, blessings security.WireBlessings, forPeers security.BlessingPattern, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
- BlessingStoreForPeer(ctx _gen_context.T, peerBlessings []string, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
- BlessingStoreSetDefault(ctx _gen_context.T, blessings security.WireBlessings, opts ..._gen_ipc.CallOpt) (err error)
- BlessingStoreDefault(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
- BlessingStoreDebugString(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply string, err error)
- BlessingRootsAdd(ctx _gen_context.T, root []byte, pattern security.BlessingPattern, opts ..._gen_ipc.CallOpt) (err error)
- BlessingRootsRecognized(ctx _gen_context.T, root []byte, blessing string, opts ..._gen_ipc.CallOpt) (err error)
- BlessingRootsDebugString(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply string, err error)
-}
-type Agent interface {
- _gen_ipc.UniversalServiceMethods
- Agent_ExcludingUniversal
+// AgentClientMethods is the client interface
+// containing Agent methods.
+type AgentClientMethods interface {
+ Bless(ctx __context.T, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat, opts ...__ipc.CallOpt) (security.WireBlessings, error)
+ BlessSelf(ctx __context.T, name string, caveats []security.Caveat, opts ...__ipc.CallOpt) (security.WireBlessings, error)
+ Sign(ctx __context.T, message []byte, opts ...__ipc.CallOpt) (security.Signature, error)
+ MintDischarge(ctx __context.T, tp __vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat, opts ...__ipc.CallOpt) (__vdlutil.Any, error)
+ PublicKey(__context.T, ...__ipc.CallOpt) ([]byte, error)
+ AddToRoots(ctx __context.T, blessing security.WireBlessings, opts ...__ipc.CallOpt) error
+ BlessingStoreSet(ctx __context.T, blessings security.WireBlessings, forPeers security.BlessingPattern, opts ...__ipc.CallOpt) (security.WireBlessings, error)
+ BlessingStoreForPeer(ctx __context.T, peerBlessings []string, opts ...__ipc.CallOpt) (security.WireBlessings, error)
+ BlessingStoreSetDefault(ctx __context.T, blessings security.WireBlessings, opts ...__ipc.CallOpt) error
+ BlessingStoreDefault(__context.T, ...__ipc.CallOpt) (security.WireBlessings, error)
+ BlessingStoreDebugString(__context.T, ...__ipc.CallOpt) (string, error)
+ BlessingRootsAdd(ctx __context.T, root []byte, pattern security.BlessingPattern, opts ...__ipc.CallOpt) error
+ BlessingRootsRecognized(ctx __context.T, root []byte, blessing string, opts ...__ipc.CallOpt) error
+ BlessingRootsDebugString(__context.T, ...__ipc.CallOpt) (string, error)
}
-// AgentService is the interface the server implements.
-type AgentService interface {
- Bless(context _gen_ipc.ServerContext, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat) (reply security.WireBlessings, err error)
- BlessSelf(context _gen_ipc.ServerContext, name string, caveats []security.Caveat) (reply security.WireBlessings, err error)
- Sign(context _gen_ipc.ServerContext, message []byte) (reply security.Signature, err error)
- MintDischarge(context _gen_ipc.ServerContext, tp _gen_vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat) (reply _gen_vdlutil.Any, err error)
- PublicKey(context _gen_ipc.ServerContext) (reply []byte, err error)
- AddToRoots(context _gen_ipc.ServerContext, blessing security.WireBlessings) (err error)
- BlessingStoreSet(context _gen_ipc.ServerContext, blessings security.WireBlessings, forPeers security.BlessingPattern) (reply security.WireBlessings, err error)
- BlessingStoreForPeer(context _gen_ipc.ServerContext, peerBlessings []string) (reply security.WireBlessings, err error)
- BlessingStoreSetDefault(context _gen_ipc.ServerContext, blessings security.WireBlessings) (err error)
- BlessingStoreDefault(context _gen_ipc.ServerContext) (reply security.WireBlessings, err error)
- BlessingStoreDebugString(context _gen_ipc.ServerContext) (reply string, err error)
- BlessingRootsAdd(context _gen_ipc.ServerContext, root []byte, pattern security.BlessingPattern) (err error)
- BlessingRootsRecognized(context _gen_ipc.ServerContext, root []byte, blessing string) (err error)
- BlessingRootsDebugString(context _gen_ipc.ServerContext) (reply string, err error)
+// AgentClientStub adds universal methods to AgentClientMethods.
+type AgentClientStub interface {
+ AgentClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindAgent returns the client stub implementing the Agent
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindAgent(name string, opts ..._gen_ipc.BindOpt) (Agent, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// AgentClient returns a client stub for Agent.
+func AgentClient(name string, opts ...__ipc.BindOpt) AgentClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubAgent{defaultClient: client, name: name}
-
- return stub, nil
+ return implAgentClientStub{name, client}
}
-// NewServerAgent creates a new server stub.
-//
-// It takes a regular server implementing the AgentService
-// interface, and returns a new server stub.
-func NewServerAgent(server AgentService) interface{} {
- stub := &ServerStubAgent{
- service: server,
+type implAgentClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implAgentClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implAgentClientStub) Bless(ctx __context.T, i0 []byte, i1 security.WireBlessings, i2 string, i3 security.Caveat, i4 []security.Caveat, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Bless", []interface{}{i0, i1, i2, i3, i4}, opts...); err != nil {
+ return
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
}
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
+ return
+}
+
+func (c implAgentClientStub) BlessSelf(ctx __context.T, i0 string, i1 []security.Caveat, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessSelf", []interface{}{i0, i1}, opts...); err != nil {
+ return
}
- stub.gs = &gs
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) Sign(ctx __context.T, i0 []byte, opts ...__ipc.CallOpt) (o0 security.Signature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Sign", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) MintDischarge(ctx __context.T, i0 __vdlutil.Any, i1 security.Caveat, i2 []security.Caveat, opts ...__ipc.CallOpt) (o0 __vdlutil.Any, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "MintDischarge", []interface{}{i0, i1, i2}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) PublicKey(ctx __context.T, opts ...__ipc.CallOpt) (o0 []byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "PublicKey", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) AddToRoots(ctx __context.T, i0 security.WireBlessings, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "AddToRoots", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingStoreSet(ctx __context.T, i0 security.WireBlessings, i1 security.BlessingPattern, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingStoreSet", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingStoreForPeer(ctx __context.T, i0 []string, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingStoreForPeer", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingStoreSetDefault(ctx __context.T, i0 security.WireBlessings, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingStoreSetDefault", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingStoreDefault(ctx __context.T, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingStoreDefault", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingStoreDebugString(ctx __context.T, opts ...__ipc.CallOpt) (o0 string, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingStoreDebugString", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingRootsAdd(ctx __context.T, i0 []byte, i1 security.BlessingPattern, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingRootsAdd", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingRootsRecognized(ctx __context.T, i0 []byte, i1 string, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingRootsRecognized", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) BlessingRootsDebugString(ctx __context.T, opts ...__ipc.CallOpt) (o0 string, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessingRootsDebugString", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implAgentClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// AgentServerMethods is the interface a server writer
+// implements for Agent.
+type AgentServerMethods interface {
+ Bless(ctx __ipc.ServerContext, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat) (security.WireBlessings, error)
+ BlessSelf(ctx __ipc.ServerContext, name string, caveats []security.Caveat) (security.WireBlessings, error)
+ Sign(ctx __ipc.ServerContext, message []byte) (security.Signature, error)
+ MintDischarge(ctx __ipc.ServerContext, tp __vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat) (__vdlutil.Any, error)
+ PublicKey(__ipc.ServerContext) ([]byte, error)
+ AddToRoots(ctx __ipc.ServerContext, blessing security.WireBlessings) error
+ BlessingStoreSet(ctx __ipc.ServerContext, blessings security.WireBlessings, forPeers security.BlessingPattern) (security.WireBlessings, error)
+ BlessingStoreForPeer(ctx __ipc.ServerContext, peerBlessings []string) (security.WireBlessings, error)
+ BlessingStoreSetDefault(ctx __ipc.ServerContext, blessings security.WireBlessings) error
+ BlessingStoreDefault(__ipc.ServerContext) (security.WireBlessings, error)
+ BlessingStoreDebugString(__ipc.ServerContext) (string, error)
+ BlessingRootsAdd(ctx __ipc.ServerContext, root []byte, pattern security.BlessingPattern) error
+ BlessingRootsRecognized(ctx __ipc.ServerContext, root []byte, blessing string) error
+ BlessingRootsDebugString(__ipc.ServerContext) (string, error)
+}
+
+// AgentServerStubMethods is the server interface containing
+// Agent methods, as expected by ipc.Server. The difference between
+// this interface and AgentServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type AgentServerStubMethods interface {
+ Bless(call __ipc.ServerCall, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat) (security.WireBlessings, error)
+ BlessSelf(call __ipc.ServerCall, name string, caveats []security.Caveat) (security.WireBlessings, error)
+ Sign(call __ipc.ServerCall, message []byte) (security.Signature, error)
+ MintDischarge(call __ipc.ServerCall, tp __vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat) (__vdlutil.Any, error)
+ PublicKey(__ipc.ServerCall) ([]byte, error)
+ AddToRoots(call __ipc.ServerCall, blessing security.WireBlessings) error
+ BlessingStoreSet(call __ipc.ServerCall, blessings security.WireBlessings, forPeers security.BlessingPattern) (security.WireBlessings, error)
+ BlessingStoreForPeer(call __ipc.ServerCall, peerBlessings []string) (security.WireBlessings, error)
+ BlessingStoreSetDefault(call __ipc.ServerCall, blessings security.WireBlessings) error
+ BlessingStoreDefault(__ipc.ServerCall) (security.WireBlessings, error)
+ BlessingStoreDebugString(__ipc.ServerCall) (string, error)
+ BlessingRootsAdd(call __ipc.ServerCall, root []byte, pattern security.BlessingPattern) error
+ BlessingRootsRecognized(call __ipc.ServerCall, root []byte, blessing string) error
+ BlessingRootsDebugString(__ipc.ServerCall) (string, error)
+}
+
+// AgentServerStub adds universal methods to AgentServerStubMethods.
+type AgentServerStub interface {
+ AgentServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// AgentServer returns a server stub for Agent.
+// It converts an implementation of AgentServerMethods into
+// an object that may be used by ipc.Server.
+func AgentServer(impl AgentServerMethods) AgentServerStub {
+ stub := implAgentServerStub{
+ 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
+ }
return stub
}
-// clientStubAgent implements Agent.
-type clientStubAgent struct {
- defaultClient _gen_ipc.Client
- name string
+type implAgentServerStub struct {
+ impl AgentServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubAgent) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implAgentServerStub) Bless(call __ipc.ServerCall, i0 []byte, i1 security.WireBlessings, i2 string, i3 security.Caveat, i4 []security.Caveat) (security.WireBlessings, error) {
+ return s.impl.Bless(call, i0, i1, i2, i3, i4)
}
-func (__gen_c *clientStubAgent) Bless(ctx _gen_context.T, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Bless", []interface{}{key, wit, extension, caveat, additionalCaveats}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessSelf(call __ipc.ServerCall, i0 string, i1 []security.Caveat) (security.WireBlessings, error) {
+ return s.impl.BlessSelf(call, i0, i1)
}
-func (__gen_c *clientStubAgent) BlessSelf(ctx _gen_context.T, name string, caveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessSelf", []interface{}{name, caveats}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) Sign(call __ipc.ServerCall, i0 []byte) (security.Signature, error) {
+ return s.impl.Sign(call, i0)
}
-func (__gen_c *clientStubAgent) Sign(ctx _gen_context.T, message []byte, opts ..._gen_ipc.CallOpt) (reply security.Signature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Sign", []interface{}{message}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) MintDischarge(call __ipc.ServerCall, i0 __vdlutil.Any, i1 security.Caveat, i2 []security.Caveat) (__vdlutil.Any, error) {
+ return s.impl.MintDischarge(call, i0, i1, i2)
}
-func (__gen_c *clientStubAgent) MintDischarge(ctx _gen_context.T, tp _gen_vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "MintDischarge", []interface{}{tp, caveat, additionalCaveats}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) PublicKey(call __ipc.ServerCall) ([]byte, error) {
+ return s.impl.PublicKey(call)
}
-func (__gen_c *clientStubAgent) PublicKey(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "PublicKey", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) AddToRoots(call __ipc.ServerCall, i0 security.WireBlessings) error {
+ return s.impl.AddToRoots(call, i0)
}
-func (__gen_c *clientStubAgent) AddToRoots(ctx _gen_context.T, blessing security.WireBlessings, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "AddToRoots", []interface{}{blessing}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingStoreSet(call __ipc.ServerCall, i0 security.WireBlessings, i1 security.BlessingPattern) (security.WireBlessings, error) {
+ return s.impl.BlessingStoreSet(call, i0, i1)
}
-func (__gen_c *clientStubAgent) BlessingStoreSet(ctx _gen_context.T, blessings security.WireBlessings, forPeers security.BlessingPattern, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingStoreSet", []interface{}{blessings, forPeers}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingStoreForPeer(call __ipc.ServerCall, i0 []string) (security.WireBlessings, error) {
+ return s.impl.BlessingStoreForPeer(call, i0)
}
-func (__gen_c *clientStubAgent) BlessingStoreForPeer(ctx _gen_context.T, peerBlessings []string, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingStoreForPeer", []interface{}{peerBlessings}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingStoreSetDefault(call __ipc.ServerCall, i0 security.WireBlessings) error {
+ return s.impl.BlessingStoreSetDefault(call, i0)
}
-func (__gen_c *clientStubAgent) BlessingStoreSetDefault(ctx _gen_context.T, blessings security.WireBlessings, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingStoreSetDefault", []interface{}{blessings}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingStoreDefault(call __ipc.ServerCall) (security.WireBlessings, error) {
+ return s.impl.BlessingStoreDefault(call)
}
-func (__gen_c *clientStubAgent) BlessingStoreDefault(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingStoreDefault", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingStoreDebugString(call __ipc.ServerCall) (string, error) {
+ return s.impl.BlessingStoreDebugString(call)
}
-func (__gen_c *clientStubAgent) BlessingStoreDebugString(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingStoreDebugString", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingRootsAdd(call __ipc.ServerCall, i0 []byte, i1 security.BlessingPattern) error {
+ return s.impl.BlessingRootsAdd(call, i0, i1)
}
-func (__gen_c *clientStubAgent) BlessingRootsAdd(ctx _gen_context.T, root []byte, pattern security.BlessingPattern, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingRootsAdd", []interface{}{root, pattern}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingRootsRecognized(call __ipc.ServerCall, i0 []byte, i1 string) error {
+ return s.impl.BlessingRootsRecognized(call, i0, i1)
}
-func (__gen_c *clientStubAgent) BlessingRootsRecognized(ctx _gen_context.T, root []byte, blessing string, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingRootsRecognized", []interface{}{root, blessing}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) BlessingRootsDebugString(call __ipc.ServerCall) (string, error) {
+ return s.impl.BlessingRootsDebugString(call)
}
-func (__gen_c *clientStubAgent) BlessingRootsDebugString(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessingRootsDebugString", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implAgentServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubAgent) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubAgent) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubAgent) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubAgent wraps a server that implements
-// AgentService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubAgent struct {
- service AgentService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubAgent) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implAgentServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Bless":
return []interface{}{}, nil
@@ -360,253 +411,162 @@
}
}
-func (__gen_s *ServerStubAgent) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["AddToRoots"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implAgentServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["AddToRoots"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "blessing", Type: 74},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 75},
},
}
- result.Methods["Bless"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Bless"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "key", Type: 66},
{Name: "wit", Type: 74},
{Name: "extension", Type: 3},
{Name: "caveat", Type: 67},
{Name: "additionalCaveats", Type: 68},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 74},
{Name: "", Type: 75},
},
}
- result.Methods["BlessSelf"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessSelf"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "name", Type: 3},
{Name: "caveats", Type: 68},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 74},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingRootsAdd"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingRootsAdd"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "root", Type: 66},
{Name: "pattern", Type: 77},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 75},
},
}
- result.Methods["BlessingRootsDebugString"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingRootsDebugString"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 3},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingRootsRecognized"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingRootsRecognized"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "root", Type: 66},
{Name: "blessing", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 75},
},
}
- result.Methods["BlessingStoreDebugString"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingStoreDebugString"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 3},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingStoreDefault"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingStoreDefault"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 74},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingStoreForPeer"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingStoreForPeer"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "peerBlessings", Type: 61},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 74},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingStoreSet"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingStoreSet"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "blessings", Type: 74},
{Name: "forPeers", Type: 77},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 74},
{Name: "", Type: 75},
},
}
- result.Methods["BlessingStoreSetDefault"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["BlessingStoreSetDefault"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "blessings", Type: 74},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 75},
},
}
- result.Methods["MintDischarge"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["MintDischarge"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "tp", Type: 76},
{Name: "caveat", Type: 67},
{Name: "additionalCaveats", Type: 68},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 76},
{Name: "", Type: 75},
},
}
- result.Methods["PublicKey"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["PublicKey"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 66},
{Name: "", Type: 75},
},
}
- result.Methods["Sign"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Sign"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "message", Type: 66},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 70},
{Name: "", Type: 75},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
},
"veyron.io/veyron/veyron2/security.Caveat", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "Purpose"},
- _gen_wiretype.FieldType{Type: 0x45, Name: "Hash"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "R"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "S"},
+ __wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "Purpose"},
+ __wiretype.FieldType{Type: 0x45, Name: "Hash"},
+ __wiretype.FieldType{Type: 0x42, Name: "R"},
+ __wiretype.FieldType{Type: 0x42, Name: "S"},
},
"veyron.io/veyron/veyron2/security.Signature", []string(nil)},
- _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x3, Name: "Extension"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
- _gen_wiretype.FieldType{Type: 0x44, Name: "Caveats"},
- _gen_wiretype.FieldType{Type: 0x46, Name: "Signature"},
+ __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x3, Name: "Extension"},
+ __wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
+ __wiretype.FieldType{Type: 0x44, Name: "Caveats"},
+ __wiretype.FieldType{Type: 0x46, Name: "Signature"},
},
"veyron.io/veyron/veyron2/security.Certificate", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
+ __wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
},
"veyron.io/veyron/veyron2/security.WireBlessings", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.BlessingPattern", Tags: []string(nil)}}
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.BlessingPattern", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubAgent) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubAgent) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubAgent) Bless(call _gen_ipc.ServerCall, key []byte, wit security.WireBlessings, extension string, caveat security.Caveat, additionalCaveats []security.Caveat) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.Bless(call, key, wit, extension, caveat, additionalCaveats)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessSelf(call _gen_ipc.ServerCall, name string, caveats []security.Caveat) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.BlessSelf(call, name, caveats)
- return
-}
-
-func (__gen_s *ServerStubAgent) Sign(call _gen_ipc.ServerCall, message []byte) (reply security.Signature, err error) {
- reply, err = __gen_s.service.Sign(call, message)
- return
-}
-
-func (__gen_s *ServerStubAgent) MintDischarge(call _gen_ipc.ServerCall, tp _gen_vdlutil.Any, caveat security.Caveat, additionalCaveats []security.Caveat) (reply _gen_vdlutil.Any, err error) {
- reply, err = __gen_s.service.MintDischarge(call, tp, caveat, additionalCaveats)
- return
-}
-
-func (__gen_s *ServerStubAgent) PublicKey(call _gen_ipc.ServerCall) (reply []byte, err error) {
- reply, err = __gen_s.service.PublicKey(call)
- return
-}
-
-func (__gen_s *ServerStubAgent) AddToRoots(call _gen_ipc.ServerCall, blessing security.WireBlessings) (err error) {
- err = __gen_s.service.AddToRoots(call, blessing)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingStoreSet(call _gen_ipc.ServerCall, blessings security.WireBlessings, forPeers security.BlessingPattern) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.BlessingStoreSet(call, blessings, forPeers)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingStoreForPeer(call _gen_ipc.ServerCall, peerBlessings []string) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.BlessingStoreForPeer(call, peerBlessings)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingStoreSetDefault(call _gen_ipc.ServerCall, blessings security.WireBlessings) (err error) {
- err = __gen_s.service.BlessingStoreSetDefault(call, blessings)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingStoreDefault(call _gen_ipc.ServerCall) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.BlessingStoreDefault(call)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingStoreDebugString(call _gen_ipc.ServerCall) (reply string, err error) {
- reply, err = __gen_s.service.BlessingStoreDebugString(call)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingRootsAdd(call _gen_ipc.ServerCall, root []byte, pattern security.BlessingPattern) (err error) {
- err = __gen_s.service.BlessingRootsAdd(call, root, pattern)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingRootsRecognized(call _gen_ipc.ServerCall, root []byte, blessing string) (err error) {
- err = __gen_s.service.BlessingRootsRecognized(call, root, blessing)
- return
-}
-
-func (__gen_s *ServerStubAgent) BlessingRootsDebugString(call _gen_ipc.ServerCall) (reply string, err error) {
- reply, err = __gen_s.service.BlessingRootsDebugString(call)
- return
-}
diff --git a/services/identity/blesser/macaroon.go b/services/identity/blesser/macaroon.go
index 6517ab2..04611d0 100644
--- a/services/identity/blesser/macaroon.go
+++ b/services/identity/blesser/macaroon.go
@@ -26,8 +26,8 @@
// NewMacaroonBlesserServer provides an identity.MacaroonBlesser Service that generates blessings
// after unpacking a BlessingMacaroon.
-func NewMacaroonBlesserServer(key []byte) interface{} {
- return identity.NewServerMacaroonBlesser(&macaroonBlesser{key})
+func NewMacaroonBlesserServer(key []byte) identity.MacaroonBlesserServerStub {
+ return identity.MacaroonBlesserServer(&macaroonBlesser{key})
}
func (b *macaroonBlesser) Bless(ctx ipc.ServerContext, macaroon string) (security.WireBlessings, error) {
diff --git a/services/identity/blesser/macaroon_test.go b/services/identity/blesser/macaroon_test.go
index 2792efa..2aa9e3e 100644
--- a/services/identity/blesser/macaroon_test.go
+++ b/services/identity/blesser/macaroon_test.go
@@ -8,7 +8,6 @@
"time"
vsecurity "veyron.io/veyron/veyron/security"
- "veyron.io/veyron/veyron/services/identity"
"veyron.io/veyron/veyron/services/identity/util"
"veyron.io/veyron/veyron2/ipc"
@@ -30,7 +29,7 @@
if _, err := rand.Read(key); err != nil {
t.Fatal(err)
}
- blesser := NewMacaroonBlesserServer(key).(*identity.ServerStubMacaroonBlesser)
+ blesser := NewMacaroonBlesserServer(key)
m := BlessingMacaroon{Creation: time.Now().Add(-1 * time.Hour), Name: "foo"}
if got, err := blesser.Bless(context, newMacaroon(t, key, m)); err == nil || err.Error() != "macaroon has expired" {
diff --git a/services/identity/blesser/oauth.go b/services/identity/blesser/oauth.go
index 7062c13..7b59171 100644
--- a/services/identity/blesser/oauth.go
+++ b/services/identity/blesser/oauth.go
@@ -54,7 +54,7 @@
// Blessings generated by this server expire after duration. If domain is non-empty, then blessings
// are generated only for email addresses from that domain.
func NewGoogleOAuthBlesserServer(p GoogleParams) interface{} {
- return identity.NewServerOAuthBlesser(&googleOAuth{
+ return identity.OAuthBlesserServer(&googleOAuth{
duration: p.BlessingDuration,
domain: p.DomainRestriction,
dischargerLocation: p.DischargerLocation,
diff --git a/services/identity/identity.vdl.go b/services/identity/identity.vdl.go
index 60a4fc0..28d2b7d 100644
--- a/services/identity/identity.vdl.go
+++ b/services/identity/identity.vdl.go
@@ -7,20 +7,22 @@
import (
"veyron.io/veyron/veyron2/security"
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// OAuthBlesserClientMethods is the client interface
+// containing OAuthBlesser methods.
+//
// OAuthBlesser exchanges OAuth access tokens for
// an email address from an OAuth-based identity provider and uses the email
// address obtained to bless the client.
@@ -34,148 +36,148 @@
// veyron virtual circuit).
// Thus, if Mallory possesses the access token associated with Alice's account,
// she may be able to obtain a blessing with Alice's name on it.
-// OAuthBlesser is the interface the client binds and uses.
-// OAuthBlesser_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type OAuthBlesser_ExcludingUniversal interface {
+type OAuthBlesserClientMethods interface {
// BlessUsingAccessToken uses the provided access token to obtain the email
// address and returns a blessing along with the email address.
- BlessUsingAccessToken(ctx _gen_context.T, token string, opts ..._gen_ipc.CallOpt) (blessing security.WireBlessings, email string, err error)
-}
-type OAuthBlesser interface {
- _gen_ipc.UniversalServiceMethods
- OAuthBlesser_ExcludingUniversal
+ BlessUsingAccessToken(ctx __context.T, token string, opts ...__ipc.CallOpt) (blessing security.WireBlessings, email string, err error)
}
-// OAuthBlesserService is the interface the server implements.
-type OAuthBlesserService interface {
-
- // BlessUsingAccessToken uses the provided access token to obtain the email
- // address and returns a blessing along with the email address.
- BlessUsingAccessToken(context _gen_ipc.ServerContext, token string) (blessing security.WireBlessings, email string, err error)
+// OAuthBlesserClientStub adds universal methods to OAuthBlesserClientMethods.
+type OAuthBlesserClientStub interface {
+ OAuthBlesserClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindOAuthBlesser returns the client stub implementing the OAuthBlesser
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindOAuthBlesser(name string, opts ..._gen_ipc.BindOpt) (OAuthBlesser, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// OAuthBlesserClient returns a client stub for OAuthBlesser.
+func OAuthBlesserClient(name string, opts ...__ipc.BindOpt) OAuthBlesserClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubOAuthBlesser{defaultClient: client, name: name}
-
- return stub, nil
+ return implOAuthBlesserClientStub{name, client}
}
-// NewServerOAuthBlesser creates a new server stub.
+type implOAuthBlesserClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implOAuthBlesserClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implOAuthBlesserClientStub) BlessUsingAccessToken(ctx __context.T, i0 string, opts ...__ipc.CallOpt) (o0 security.WireBlessings, o1 string, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "BlessUsingAccessToken", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &o1, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implOAuthBlesserClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implOAuthBlesserClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// OAuthBlesserServerMethods is the interface a server writer
+// implements for OAuthBlesser.
//
-// It takes a regular server implementing the OAuthBlesserService
-// interface, and returns a new server stub.
-func NewServerOAuthBlesser(server OAuthBlesserService) interface{} {
- stub := &ServerStubOAuthBlesser{
- service: server,
+// OAuthBlesser exchanges OAuth access tokens for
+// an email address from an OAuth-based identity provider and uses the email
+// address obtained to bless the client.
+//
+// OAuth is described in RFC 6749 (http://tools.ietf.org/html/rfc6749),
+// though the Google implementation also has informative documentation at
+// https://developers.google.com/accounts/docs/OAuth2
+//
+// WARNING: There is no binding between the channel over which the access token
+// was obtained (typically https) and the channel used to make the RPC (a
+// veyron virtual circuit).
+// Thus, if Mallory possesses the access token associated with Alice's account,
+// she may be able to obtain a blessing with Alice's name on it.
+type OAuthBlesserServerMethods interface {
+ // BlessUsingAccessToken uses the provided access token to obtain the email
+ // address and returns a blessing along with the email address.
+ BlessUsingAccessToken(ctx __ipc.ServerContext, token string) (blessing security.WireBlessings, email string, err error)
+}
+
+// OAuthBlesserServerStubMethods is the server interface containing
+// OAuthBlesser methods, as expected by ipc.Server. The difference between
+// this interface and OAuthBlesserServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type OAuthBlesserServerStubMethods interface {
+ // BlessUsingAccessToken uses the provided access token to obtain the email
+ // address and returns a blessing along with the email address.
+ BlessUsingAccessToken(call __ipc.ServerCall, token string) (blessing security.WireBlessings, email string, err error)
+}
+
+// OAuthBlesserServerStub adds universal methods to OAuthBlesserServerStubMethods.
+type OAuthBlesserServerStub interface {
+ OAuthBlesserServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// OAuthBlesserServer returns a server stub for OAuthBlesser.
+// It converts an implementation of OAuthBlesserServerMethods into
+// an object that may be used by ipc.Server.
+func OAuthBlesserServer(impl OAuthBlesserServerMethods) OAuthBlesserServerStub {
+ stub := implOAuthBlesserServerStub{
+ impl: impl,
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubOAuthBlesser implements OAuthBlesser.
-type clientStubOAuthBlesser struct {
- defaultClient _gen_ipc.Client
- name string
+type implOAuthBlesserServerStub struct {
+ impl OAuthBlesserServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubOAuthBlesser) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implOAuthBlesserServerStub) BlessUsingAccessToken(call __ipc.ServerCall, i0 string) (security.WireBlessings, string, error) {
+ return s.impl.BlessUsingAccessToken(call, i0)
}
-func (__gen_c *clientStubOAuthBlesser) BlessUsingAccessToken(ctx _gen_context.T, token string, opts ..._gen_ipc.CallOpt) (blessing security.WireBlessings, email string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "BlessUsingAccessToken", []interface{}{token}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&blessing, &email, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implOAuthBlesserServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubOAuthBlesser) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubOAuthBlesser) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubOAuthBlesser) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubOAuthBlesser wraps a server that implements
-// OAuthBlesserService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubOAuthBlesser struct {
- service OAuthBlesserService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubOAuthBlesser) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implOAuthBlesserServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "BlessUsingAccessToken":
return []interface{}{}, nil
@@ -184,221 +186,186 @@
}
}
-func (__gen_s *ServerStubOAuthBlesser) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["BlessUsingAccessToken"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implOAuthBlesserServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["BlessUsingAccessToken"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "token", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "blessing", Type: 74},
{Name: "email", Type: 3},
{Name: "err", Type: 75},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
},
"veyron.io/veyron/veyron2/security.Caveat", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "Purpose"},
- _gen_wiretype.FieldType{Type: 0x45, Name: "Hash"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "R"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "S"},
+ __wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "Purpose"},
+ __wiretype.FieldType{Type: 0x45, Name: "Hash"},
+ __wiretype.FieldType{Type: 0x42, Name: "R"},
+ __wiretype.FieldType{Type: 0x42, Name: "S"},
},
"veyron.io/veyron/veyron2/security.Signature", []string(nil)},
- _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x3, Name: "Extension"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
- _gen_wiretype.FieldType{Type: 0x44, Name: "Caveats"},
- _gen_wiretype.FieldType{Type: 0x46, Name: "Signature"},
+ __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x3, Name: "Extension"},
+ __wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
+ __wiretype.FieldType{Type: 0x44, Name: "Caveats"},
+ __wiretype.FieldType{Type: 0x46, Name: "Signature"},
},
"veyron.io/veyron/veyron2/security.Certificate", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
+ __wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
},
"veyron.io/veyron/veyron2/security.WireBlessings", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-func (__gen_s *ServerStubOAuthBlesser) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubOAuthBlesser) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubOAuthBlesser) BlessUsingAccessToken(call _gen_ipc.ServerCall, token string) (blessing security.WireBlessings, email string, err error) {
- blessing, email, err = __gen_s.service.BlessUsingAccessToken(call, token)
- return
-}
-
+// MacaroonBlesserClientMethods is the client interface
+// containing MacaroonBlesser methods.
+//
// MacaroonBlesser returns a blessing given the provided macaroon string.
-// MacaroonBlesser is the interface the client binds and uses.
-// MacaroonBlesser_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type MacaroonBlesser_ExcludingUniversal interface {
+type MacaroonBlesserClientMethods interface {
// Bless uses the provided macaroon (which contains email and caveats)
// to return a blessing for the client.
- Bless(ctx _gen_context.T, macaroon string, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error)
-}
-type MacaroonBlesser interface {
- _gen_ipc.UniversalServiceMethods
- MacaroonBlesser_ExcludingUniversal
+ Bless(ctx __context.T, macaroon string, opts ...__ipc.CallOpt) (blessing security.WireBlessings, err error)
}
-// MacaroonBlesserService is the interface the server implements.
-type MacaroonBlesserService interface {
-
- // Bless uses the provided macaroon (which contains email and caveats)
- // to return a blessing for the client.
- Bless(context _gen_ipc.ServerContext, macaroon string) (reply security.WireBlessings, err error)
+// MacaroonBlesserClientStub adds universal methods to MacaroonBlesserClientMethods.
+type MacaroonBlesserClientStub interface {
+ MacaroonBlesserClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindMacaroonBlesser returns the client stub implementing the MacaroonBlesser
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindMacaroonBlesser(name string, opts ..._gen_ipc.BindOpt) (MacaroonBlesser, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// MacaroonBlesserClient returns a client stub for MacaroonBlesser.
+func MacaroonBlesserClient(name string, opts ...__ipc.BindOpt) MacaroonBlesserClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubMacaroonBlesser{defaultClient: client, name: name}
-
- return stub, nil
+ return implMacaroonBlesserClientStub{name, client}
}
-// NewServerMacaroonBlesser creates a new server stub.
+type implMacaroonBlesserClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implMacaroonBlesserClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implMacaroonBlesserClientStub) Bless(ctx __context.T, i0 string, opts ...__ipc.CallOpt) (o0 security.WireBlessings, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Bless", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMacaroonBlesserClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implMacaroonBlesserClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// MacaroonBlesserServerMethods is the interface a server writer
+// implements for MacaroonBlesser.
//
-// It takes a regular server implementing the MacaroonBlesserService
-// interface, and returns a new server stub.
-func NewServerMacaroonBlesser(server MacaroonBlesserService) interface{} {
- stub := &ServerStubMacaroonBlesser{
- service: server,
+// MacaroonBlesser returns a blessing given the provided macaroon string.
+type MacaroonBlesserServerMethods interface {
+ // Bless uses the provided macaroon (which contains email and caveats)
+ // to return a blessing for the client.
+ Bless(ctx __ipc.ServerContext, macaroon string) (blessing security.WireBlessings, err error)
+}
+
+// MacaroonBlesserServerStubMethods is the server interface containing
+// MacaroonBlesser methods, as expected by ipc.Server. The difference between
+// this interface and MacaroonBlesserServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type MacaroonBlesserServerStubMethods interface {
+ // Bless uses the provided macaroon (which contains email and caveats)
+ // to return a blessing for the client.
+ Bless(call __ipc.ServerCall, macaroon string) (blessing security.WireBlessings, err error)
+}
+
+// MacaroonBlesserServerStub adds universal methods to MacaroonBlesserServerStubMethods.
+type MacaroonBlesserServerStub interface {
+ MacaroonBlesserServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// MacaroonBlesserServer returns a server stub for MacaroonBlesser.
+// It converts an implementation of MacaroonBlesserServerMethods into
+// an object that may be used by ipc.Server.
+func MacaroonBlesserServer(impl MacaroonBlesserServerMethods) MacaroonBlesserServerStub {
+ stub := implMacaroonBlesserServerStub{
+ impl: impl,
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubMacaroonBlesser implements MacaroonBlesser.
-type clientStubMacaroonBlesser struct {
- defaultClient _gen_ipc.Client
- name string
+type implMacaroonBlesserServerStub struct {
+ impl MacaroonBlesserServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubMacaroonBlesser) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implMacaroonBlesserServerStub) Bless(call __ipc.ServerCall, i0 string) (security.WireBlessings, error) {
+ return s.impl.Bless(call, i0)
}
-func (__gen_c *clientStubMacaroonBlesser) Bless(ctx _gen_context.T, macaroon string, opts ..._gen_ipc.CallOpt) (reply security.WireBlessings, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Bless", []interface{}{macaroon}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implMacaroonBlesserServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubMacaroonBlesser) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubMacaroonBlesser) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubMacaroonBlesser) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubMacaroonBlesser wraps a server that implements
-// MacaroonBlesserService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubMacaroonBlesser struct {
- service MacaroonBlesserService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubMacaroonBlesser) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implMacaroonBlesserServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Bless":
return []interface{}{}, nil
@@ -407,73 +374,47 @@
}
}
-func (__gen_s *ServerStubMacaroonBlesser) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Bless"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implMacaroonBlesserServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Bless"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "macaroon", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "blessing", Type: 74},
{Name: "err", Type: 75},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "ValidatorVOM"},
},
"veyron.io/veyron/veyron2/security.Caveat", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x42, Name: "Purpose"},
- _gen_wiretype.FieldType{Type: 0x45, Name: "Hash"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "R"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "S"},
+ __wiretype.SliceType{Elem: 0x43, Name: "", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.Hash", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x42, Name: "Purpose"},
+ __wiretype.FieldType{Type: 0x45, Name: "Hash"},
+ __wiretype.FieldType{Type: 0x42, Name: "R"},
+ __wiretype.FieldType{Type: 0x42, Name: "S"},
},
"veyron.io/veyron/veyron2/security.Signature", []string(nil)},
- _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x3, Name: "Extension"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
- _gen_wiretype.FieldType{Type: 0x44, Name: "Caveats"},
- _gen_wiretype.FieldType{Type: 0x46, Name: "Signature"},
+ __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x3, Name: "Extension"},
+ __wiretype.FieldType{Type: 0x42, Name: "PublicKey"},
+ __wiretype.FieldType{Type: 0x44, Name: "Caveats"},
+ __wiretype.FieldType{Type: 0x46, Name: "Signature"},
},
"veyron.io/veyron/veyron2/security.Certificate", []string(nil)},
- _gen_wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
+ __wiretype.SliceType{Elem: 0x47, Name: "", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x48, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x49, Name: "CertificateChains"},
},
"veyron.io/veyron/veyron2/security.WireBlessings", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubMacaroonBlesser) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubMacaroonBlesser) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubMacaroonBlesser) Bless(call _gen_ipc.ServerCall, macaroon string) (reply security.WireBlessings, err error) {
- reply, err = __gen_s.service.Bless(call, macaroon)
- return
-}
diff --git a/services/identity/identityd/main.go b/services/identity/identityd/main.go
index f267b89..6665804 100644
--- a/services/identity/identityd/main.go
+++ b/services/identity/identityd/main.go
@@ -145,7 +145,7 @@
func newDispatcher(googleParams blesser.GoogleParams, macaroonKey []byte) ipc.Dispatcher {
d := dispatcher(map[string]ipc.Invoker{
macaroonService: ipc.ReflectInvoker(blesser.NewMacaroonBlesserServer(macaroonKey)),
- dischargerService: ipc.ReflectInvoker(services.NewServerDischarger(discharger.NewDischarger())),
+ dischargerService: ipc.ReflectInvoker(services.DischargerServer(discharger.NewDischarger())),
})
if len(*googleConfigChrome) > 0 || len(*googleConfigAndroid) > 0 {
d[googleService] = ipc.ReflectInvoker(blesser.NewGoogleOAuthBlesserServer(googleParams))
diff --git a/services/identity/revocation/revoker_test.go b/services/identity/revocation/revoker_test.go
index 6bb2148..7f5338b 100644
--- a/services/identity/revocation/revoker_test.go
+++ b/services/identity/revocation/revoker_test.go
@@ -31,7 +31,7 @@
if err != nil {
t.Fatalf("dischargerServer.Listen failed: %v", err)
}
- dischargerServiceStub := services.NewServerDischarger(discharger.NewDischarger())
+ dischargerServiceStub := services.DischargerServer(discharger.NewDischarger())
if err := dischargerServer.Serve("", dischargerServiceStub, nil); err != nil {
t.Fatalf("dischargerServer.Serve revoker: %s", err)
}
@@ -49,11 +49,7 @@
dcKey, dc, revoker, closeFunc, r := revokerSetup(t)
defer closeFunc()
- discharger, err := services.BindDischarger(dc)
- if err != nil {
- t.Fatalf("error binding to server: ", err)
- }
-
+ discharger := services.DischargerClient(dc)
cav, err := revoker.NewCaveat(dcKey, dc)
if err != nil {
t.Fatalf("failed to create public key caveat: %s", err)
diff --git a/services/mgmt/application/impl/dispatcher.go b/services/mgmt/application/impl/dispatcher.go
index 48b6c4f..a130f16 100644
--- a/services/mgmt/application/impl/dispatcher.go
+++ b/services/mgmt/application/impl/dispatcher.go
@@ -30,6 +30,6 @@
// DISPATCHER INTERFACE IMPLEMENTATION
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerApplication(NewInvoker(d.store, d.storeRoot, suffix)))
+ invoker := ipc.ReflectInvoker(repository.ApplicationServer(NewInvoker(d.store, d.storeRoot, suffix)))
return invoker, d.auth, nil
}
diff --git a/services/mgmt/application/impl/impl_test.go b/services/mgmt/application/impl/impl_test.go
index c073c99..2c706d3 100644
--- a/services/mgmt/application/impl/impl_test.go
+++ b/services/mgmt/application/impl/impl_test.go
@@ -50,18 +50,9 @@
}
// Create client stubs for talking to the server.
- stub, err := repository.BindApplication(naming.JoinAddressName(endpoint.String(), "//search"))
- if err != nil {
- t.Fatalf("BindRepository() failed: %v", err)
- }
- stubV1, err := repository.BindApplication(naming.JoinAddressName(endpoint.String(), "//search/v1"))
- if err != nil {
- t.Fatalf("BindRepository() failed: %v", err)
- }
- stubV2, err := repository.BindApplication(naming.JoinAddressName(endpoint.String(), "//search/v2"))
- if err != nil {
- t.Fatalf("BindRepository() failed: %v", err)
- }
+ stub := repository.ApplicationClient(naming.JoinAddressName(endpoint.String(), "//search"))
+ stubV1 := repository.ApplicationClient(naming.JoinAddressName(endpoint.String(), "//search/v1"))
+ stubV2 := repository.ApplicationClient(naming.JoinAddressName(endpoint.String(), "//search/v2"))
// Create example envelopes.
envelopeV1 := application.Envelope{
diff --git a/services/mgmt/binary/impl/dispatcher.go b/services/mgmt/binary/impl/dispatcher.go
index 1b80de9..e9196e3 100644
--- a/services/mgmt/binary/impl/dispatcher.go
+++ b/services/mgmt/binary/impl/dispatcher.go
@@ -28,6 +28,6 @@
// DISPATCHER INTERFACE IMPLEMENTATION
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerBinary(newInvoker(d.state, suffix)))
+ invoker := ipc.ReflectInvoker(repository.BinaryServer(newInvoker(d.state, suffix)))
return invoker, d.auth, nil
}
diff --git a/services/mgmt/binary/impl/impl_test.go b/services/mgmt/binary/impl/impl_test.go
index a38ef40..886674c 100644
--- a/services/mgmt/binary/impl/impl_test.go
+++ b/services/mgmt/binary/impl/impl_test.go
@@ -33,7 +33,7 @@
// invokeUpload invokes the Upload RPC using the given client binary
// <binary> and streams the given binary <binary> to it.
-func invokeUpload(t *testing.T, binary repository.Binary, data []byte, part int32) (error, error) {
+func invokeUpload(t *testing.T, binary repository.BinaryClientMethods, data []byte, part int32) (error, error) {
stream, err := binary.Upload(rt.R().NewContext(), part)
if err != nil {
t.Errorf("Upload() failed: %v", err)
@@ -65,7 +65,7 @@
// invokeDownload invokes the Download RPC using the given client binary
// <binary> and streams binary from to it.
-func invokeDownload(t *testing.T, binary repository.Binary, part int32) ([]byte, error, error) {
+func invokeDownload(t *testing.T, binary repository.BinaryClientMethods, part int32) ([]byte, error, error) {
stream, err := binary.Download(rt.R().NewContext(), part)
if err != nil {
t.Errorf("Download() failed: %v", err)
@@ -95,7 +95,7 @@
}
// startServer starts the binary repository server.
-func startServer(t *testing.T, depth int) (repository.Binary, string, func()) {
+func startServer(t *testing.T, depth int) (repository.BinaryClientMethods, string, func()) {
// Setup the root of the binary repository.
root, err := ioutil.TempDir("", veyronPrefix)
if err != nil {
@@ -133,10 +133,7 @@
t.Fatalf("Serve(%q) failed: %v", dontPublishName, err)
}
name := naming.JoinAddressName(endpoint.String(), "//test")
- binary, err := repository.BindBinary(name)
- if err != nil {
- t.Fatalf("BindBinary(%v) failed: %v", name, err)
- }
+ binary := repository.BinaryClient(name)
return binary, fmt.Sprintf("http://%s/test", listener.Addr()), func() {
// Shutdown the binary repository server.
if err := server.Stop(); err != nil {
diff --git a/services/mgmt/binary/impl/invoker.go b/services/mgmt/binary/impl/invoker.go
index 182b128..8b18141 100644
--- a/services/mgmt/binary/impl/invoker.go
+++ b/services/mgmt/binary/impl/invoker.go
@@ -157,7 +157,7 @@
return nil
}
-func (i *invoker) Download(context ipc.ServerContext, part int32, stream repository.BinaryServiceDownloadStream) error {
+func (i *invoker) Download(context repository.BinaryDownloadContext, part int32) error {
vlog.Infof("%v.Download(%v)", i.suffix, part)
path := i.generatePartPath(int(part))
if err := checksumExists(path); err != nil {
@@ -171,7 +171,7 @@
}
defer file.Close()
buffer := make([]byte, bufferLength)
- sender := stream.SendStream()
+ sender := context.SendStream()
for {
n, err := file.Read(buffer)
if err != nil && err != io.EOF {
@@ -228,7 +228,7 @@
return result, nil
}
-func (i *invoker) Upload(context ipc.ServerContext, part int32, stream repository.BinaryServiceUploadStream) error {
+func (i *invoker) Upload(context repository.BinaryUploadContext, part int32) error {
vlog.Infof("%v.Upload(%v)", i.suffix, part)
path, suffix := i.generatePartPath(int(part)), ""
err := checksumExists(path)
@@ -258,7 +258,7 @@
}
defer file.Close()
h := md5.New()
- rStream := stream.RecvStream()
+ rStream := context.RecvStream()
for rStream.Advance() {
bytes := rStream.Value()
if _, err := file.Write(bytes); err != nil {
diff --git a/services/mgmt/build/buildd/main.go b/services/mgmt/build/buildd/main.go
index 6d05b59..09f7070 100644
--- a/services/mgmt/build/buildd/main.go
+++ b/services/mgmt/build/buildd/main.go
@@ -35,7 +35,7 @@
vlog.Errorf("Listen(%s) failed: %v", roaming.ListenSpec, err)
return
}
- if err := server.Serve(*name, build.NewServerBuilder(impl.NewInvoker(*gobin, *goroot)), vflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve(*name, build.BuilderServer(impl.NewInvoker(*gobin, *goroot)), vflag.NewAuthorizerOrDie()); err != nil {
vlog.Errorf("Serve(%v) failed: %v", *name, err)
return
}
diff --git a/services/mgmt/build/impl/impl_test.go b/services/mgmt/build/impl/impl_test.go
index 37f0f5a..2c07891 100644
--- a/services/mgmt/build/impl/impl_test.go
+++ b/services/mgmt/build/impl/impl_test.go
@@ -46,7 +46,7 @@
}
// startServer starts the build server.
-func startServer(t *testing.T) (build.Builder, func()) {
+func startServer(t *testing.T) (build.BuilderClientMethods, func()) {
gobin, goroot := findGoBinary(t, "go")
server, err := rt.R().NewServer()
if err != nil {
@@ -57,22 +57,18 @@
t.Fatalf("Listen(%s) failed: %v", profiles.LocalListenSpec, err)
}
unpublished := ""
- if err := server.Serve(unpublished, build.NewServerBuilder(NewInvoker(gobin, goroot)), nil); err != nil {
+ if err := server.Serve(unpublished, build.BuilderServer(NewInvoker(gobin, goroot)), nil); err != nil {
t.Fatalf("Serve(%q) failed: %v", unpublished, err)
}
name := "/" + endpoint.String()
- client, err := build.BindBuilder(name)
- if err != nil {
- t.Fatalf("BindBuilder(%v) failed: %v", name, err)
- }
- return client, func() {
+ return build.BuilderClient(name), func() {
if err := server.Stop(); err != nil {
t.Fatalf("Stop() failed: %v", err)
}
}
}
-func invokeBuild(t *testing.T, client build.Builder, files []build.File) ([]byte, []build.File, error) {
+func invokeBuild(t *testing.T, client build.BuilderClientMethods, files []build.File) ([]byte, []build.File, error) {
arch, opsys := getArch(), getOS()
stream, err := client.Build(rt.R().NewContext(), arch, opsys)
if err != nil {
diff --git a/services/mgmt/build/impl/invoker.go b/services/mgmt/build/impl/invoker.go
index 051099c..fc798ac 100644
--- a/services/mgmt/build/impl/invoker.go
+++ b/services/mgmt/build/impl/invoker.go
@@ -42,7 +42,7 @@
//
// TODO(jsimsa): Analyze the binary files for shared library
// dependencies and ship these back.
-func (i *invoker) Build(_ ipc.ServerContext, arch build.Architecture, opsys build.OperatingSystem, stream build.BuilderServiceBuildStream) ([]byte, error) {
+func (i *invoker) Build(ctx build.BuilderBuildContext, arch build.Architecture, opsys build.OperatingSystem) ([]byte, error) {
vlog.VI(1).Infof("Build(%v, %v) called.", arch, opsys)
dir, prefix := "", ""
dirPerm, filePerm := os.FileMode(0700), os.FileMode(0600)
@@ -57,7 +57,7 @@
vlog.Errorf("MkdirAll(%v, %v) failed: %v", srcDir, dirPerm, err)
return nil, errInternalError
}
- iterator := stream.RecvStream()
+ iterator := ctx.RecvStream()
for iterator.Advance() {
srcFile := iterator.Value()
filePath := filepath.Join(srcDir, filepath.FromSlash(srcFile.Name))
@@ -112,7 +112,7 @@
Name: "bin/" + file.Name(),
Contents: bytes,
}
- if err := stream.SendStream().Send(result); err != nil {
+ if err := ctx.SendStream().Send(result); err != nil {
vlog.Errorf("Send() failed: %v", err)
return nil, errInternalError
}
diff --git a/services/mgmt/debug/debug.vdl.go b/services/mgmt/debug/debug.vdl.go
index 34514b4..9f01f70 100644
--- a/services/mgmt/debug/debug.vdl.go
+++ b/services/mgmt/debug/debug.vdl.go
@@ -10,30 +10,29 @@
"veyron.io/veyron/veyron2/services/mgmt/stats"
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// DebugClientMethods is the client interface
+// containing Debug methods.
+//
// This interface exists only for the purpose of generating a valid Signature
// for all the interfaces that are served by the debug server. It should be
// removed when https://code.google.com/p/envyor/issues/detail?id=285 is
// resolved.
-// Debug is the interface the client binds and uses.
-// Debug_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Debug_ExcludingUniversal interface {
+type DebugClientMethods interface {
// LogFile can be used to access log files remotely.
- logreader.LogFile_ExcludingUniversal
+ logreader.LogFileClientMethods
// The Stats interface is used to access stats for troubleshooting and
// monitoring purposes. The stats objects are discoverable via the Globbable
// interface and watchable via the GlobWatcher interface.
@@ -41,218 +40,214 @@
// The types of the object values are implementation specific, but should be
// primarily numeric in nature, e.g. counters, memory usage, latency metrics,
// etc.
- stats.Stats_ExcludingUniversal
- pprof.PProf_ExcludingUniversal
-}
-type Debug interface {
- _gen_ipc.UniversalServiceMethods
- Debug_ExcludingUniversal
+ stats.StatsClientMethods
+ pprof.PProfClientMethods
}
-// DebugService is the interface the server implements.
-type DebugService interface {
-
- // LogFile can be used to access log files remotely.
- logreader.LogFileService
- // The Stats interface is used to access stats for troubleshooting and
- // monitoring purposes. The stats objects are discoverable via the Globbable
- // interface and watchable via the GlobWatcher interface.
- //
- // The types of the object values are implementation specific, but should be
- // primarily numeric in nature, e.g. counters, memory usage, latency metrics,
- // etc.
- stats.StatsService
- pprof.PProfService
+// DebugClientStub adds universal methods to DebugClientMethods.
+type DebugClientStub interface {
+ DebugClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindDebug returns the client stub implementing the Debug
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindDebug(name string, opts ..._gen_ipc.BindOpt) (Debug, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// DebugClient returns a client stub for Debug.
+func DebugClient(name string, opts ...__ipc.BindOpt) DebugClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubDebug{defaultClient: client, name: name}
- stub.LogFile_ExcludingUniversal, _ = logreader.BindLogFile(name, client)
- stub.Stats_ExcludingUniversal, _ = stats.BindStats(name, client)
- stub.PProf_ExcludingUniversal, _ = pprof.BindPProf(name, client)
-
- return stub, nil
+ return implDebugClientStub{name, client, logreader.LogFileClient(name, client), stats.StatsClient(name, client), pprof.PProfClient(name, client)}
}
-// NewServerDebug creates a new server stub.
+type implDebugClientStub struct {
+ name string
+ client __ipc.Client
+
+ logreader.LogFileClientStub
+ stats.StatsClientStub
+ pprof.PProfClientStub
+}
+
+func (c implDebugClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implDebugClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implDebugClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// DebugServerMethods is the interface a server writer
+// implements for Debug.
//
-// It takes a regular server implementing the DebugService
-// interface, and returns a new server stub.
-func NewServerDebug(server DebugService) interface{} {
- stub := &ServerStubDebug{
- ServerStubLogFile: *logreader.NewServerLogFile(server).(*logreader.ServerStubLogFile),
- ServerStubStats: *stats.NewServerStats(server).(*stats.ServerStubStats),
- ServerStubPProf: *pprof.NewServerPProf(server).(*pprof.ServerStubPProf),
- service: server,
+// This interface exists only for the purpose of generating a valid Signature
+// for all the interfaces that are served by the debug server. It should be
+// removed when https://code.google.com/p/envyor/issues/detail?id=285 is
+// resolved.
+type DebugServerMethods interface {
+ // LogFile can be used to access log files remotely.
+ logreader.LogFileServerMethods
+ // The Stats interface is used to access stats for troubleshooting and
+ // monitoring purposes. The stats objects are discoverable via the Globbable
+ // interface and watchable via the GlobWatcher interface.
+ //
+ // The types of the object values are implementation specific, but should be
+ // primarily numeric in nature, e.g. counters, memory usage, latency metrics,
+ // etc.
+ stats.StatsServerMethods
+ pprof.PProfServerMethods
+}
+
+// DebugServerStubMethods is the server interface containing
+// Debug methods, as expected by ipc.Server. The difference between
+// this interface and DebugServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type DebugServerStubMethods interface {
+ // LogFile can be used to access log files remotely.
+ logreader.LogFileServerStubMethods
+ // The Stats interface is used to access stats for troubleshooting and
+ // monitoring purposes. The stats objects are discoverable via the Globbable
+ // interface and watchable via the GlobWatcher interface.
+ //
+ // The types of the object values are implementation specific, but should be
+ // primarily numeric in nature, e.g. counters, memory usage, latency metrics,
+ // etc.
+ stats.StatsServerStubMethods
+ pprof.PProfServerStubMethods
+}
+
+// DebugServerStub adds universal methods to DebugServerStubMethods.
+type DebugServerStub interface {
+ DebugServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// DebugServer returns a server stub for Debug.
+// It converts an implementation of DebugServerMethods into
+// an object that may be used by ipc.Server.
+func DebugServer(impl DebugServerMethods) DebugServerStub {
+ stub := implDebugServerStub{
+ impl: impl,
+ LogFileServerStub: logreader.LogFileServer(impl),
+ StatsServerStub: stats.StatsServer(impl),
+ PProfServerStub: pprof.PProfServer(impl),
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubDebug implements Debug.
-type clientStubDebug struct {
- logreader.LogFile_ExcludingUniversal
- stats.Stats_ExcludingUniversal
- pprof.PProf_ExcludingUniversal
+type implDebugServerStub struct {
+ impl DebugServerMethods
+ gs *__ipc.GlobState
- defaultClient _gen_ipc.Client
- name string
+ logreader.LogFileServerStub
+ stats.StatsServerStub
+ pprof.PProfServerStub
}
-func (__gen_c *clientStubDebug) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implDebugServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubDebug) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubDebug) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubDebug) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubDebug wraps a server that implements
-// DebugService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubDebug struct {
- logreader.ServerStubLogFile
- stats.ServerStubStats
- pprof.ServerStubPProf
-
- service DebugService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubDebug) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
- if resp, err := __gen_s.ServerStubLogFile.GetMethodTags(call, method); resp != nil || err != nil {
+func (s implDebugServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
+ if resp, err := s.LogFileServerStub.GetMethodTags(call, method); resp != nil || err != nil {
return resp, err
}
- if resp, err := __gen_s.ServerStubStats.GetMethodTags(call, method); resp != nil || err != nil {
+ if resp, err := s.StatsServerStub.GetMethodTags(call, method); resp != nil || err != nil {
return resp, err
}
- if resp, err := __gen_s.ServerStubPProf.GetMethodTags(call, method); resp != nil || err != nil {
+ if resp, err := s.PProfServerStub.GetMethodTags(call, method); resp != nil || err != nil {
return resp, err
}
return nil, nil
}
-func (__gen_s *ServerStubDebug) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
+func (s implDebugServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
- result.TypeDefs = []_gen_vdlutil.Any{}
- var ss _gen_ipc.ServiceSignature
+ result.TypeDefs = []__vdlutil.Any{}
+ var ss __ipc.ServiceSignature
var firstAdded int
- ss, _ = __gen_s.ServerStubLogFile.Signature(call)
+ ss, _ = s.LogFileServerStub.Signature(call)
firstAdded = len(result.TypeDefs)
for k, v := range ss.Methods {
for i, _ := range v.InArgs {
- if v.InArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.InArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.InArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.InArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
for i, _ := range v.OutArgs {
- if v.OutArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.OutArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.OutArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.OutArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
- if v.InStream >= _gen_wiretype.TypeIDFirst {
- v.InStream += _gen_wiretype.TypeID(firstAdded)
+ if v.InStream >= __wiretype.TypeIDFirst {
+ v.InStream += __wiretype.TypeID(firstAdded)
}
- if v.OutStream >= _gen_wiretype.TypeIDFirst {
- v.OutStream += _gen_wiretype.TypeID(firstAdded)
+ if v.OutStream >= __wiretype.TypeIDFirst {
+ v.OutStream += __wiretype.TypeID(firstAdded)
}
result.Methods[k] = v
}
//TODO(bprosnitz) combine type definitions from embeded interfaces in a way that doesn't cause duplication.
for _, d := range ss.TypeDefs {
switch wt := d.(type) {
- case _gen_wiretype.SliceType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.SliceType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.ArrayType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.ArrayType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.MapType:
- if wt.Key >= _gen_wiretype.TypeIDFirst {
- wt.Key += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.MapType:
+ if wt.Key >= __wiretype.TypeIDFirst {
+ wt.Key += __wiretype.TypeID(firstAdded)
}
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.StructType:
+ case __wiretype.StructType:
for i, fld := range wt.Fields {
- if fld.Type >= _gen_wiretype.TypeIDFirst {
- wt.Fields[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if fld.Type >= __wiretype.TypeIDFirst {
+ wt.Fields[i].Type += __wiretype.TypeID(firstAdded)
}
}
d = wt
@@ -260,52 +255,52 @@
}
result.TypeDefs = append(result.TypeDefs, d)
}
- ss, _ = __gen_s.ServerStubStats.Signature(call)
+ ss, _ = s.StatsServerStub.Signature(call)
firstAdded = len(result.TypeDefs)
for k, v := range ss.Methods {
for i, _ := range v.InArgs {
- if v.InArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.InArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.InArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.InArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
for i, _ := range v.OutArgs {
- if v.OutArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.OutArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.OutArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.OutArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
- if v.InStream >= _gen_wiretype.TypeIDFirst {
- v.InStream += _gen_wiretype.TypeID(firstAdded)
+ if v.InStream >= __wiretype.TypeIDFirst {
+ v.InStream += __wiretype.TypeID(firstAdded)
}
- if v.OutStream >= _gen_wiretype.TypeIDFirst {
- v.OutStream += _gen_wiretype.TypeID(firstAdded)
+ if v.OutStream >= __wiretype.TypeIDFirst {
+ v.OutStream += __wiretype.TypeID(firstAdded)
}
result.Methods[k] = v
}
//TODO(bprosnitz) combine type definitions from embeded interfaces in a way that doesn't cause duplication.
for _, d := range ss.TypeDefs {
switch wt := d.(type) {
- case _gen_wiretype.SliceType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.SliceType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.ArrayType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.ArrayType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.MapType:
- if wt.Key >= _gen_wiretype.TypeIDFirst {
- wt.Key += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.MapType:
+ if wt.Key >= __wiretype.TypeIDFirst {
+ wt.Key += __wiretype.TypeID(firstAdded)
}
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.StructType:
+ case __wiretype.StructType:
for i, fld := range wt.Fields {
- if fld.Type >= _gen_wiretype.TypeIDFirst {
- wt.Fields[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if fld.Type >= __wiretype.TypeIDFirst {
+ wt.Fields[i].Type += __wiretype.TypeID(firstAdded)
}
}
d = wt
@@ -313,52 +308,52 @@
}
result.TypeDefs = append(result.TypeDefs, d)
}
- ss, _ = __gen_s.ServerStubPProf.Signature(call)
+ ss, _ = s.PProfServerStub.Signature(call)
firstAdded = len(result.TypeDefs)
for k, v := range ss.Methods {
for i, _ := range v.InArgs {
- if v.InArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.InArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.InArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.InArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
for i, _ := range v.OutArgs {
- if v.OutArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.OutArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.OutArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.OutArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
- if v.InStream >= _gen_wiretype.TypeIDFirst {
- v.InStream += _gen_wiretype.TypeID(firstAdded)
+ if v.InStream >= __wiretype.TypeIDFirst {
+ v.InStream += __wiretype.TypeID(firstAdded)
}
- if v.OutStream >= _gen_wiretype.TypeIDFirst {
- v.OutStream += _gen_wiretype.TypeID(firstAdded)
+ if v.OutStream >= __wiretype.TypeIDFirst {
+ v.OutStream += __wiretype.TypeID(firstAdded)
}
result.Methods[k] = v
}
//TODO(bprosnitz) combine type definitions from embeded interfaces in a way that doesn't cause duplication.
for _, d := range ss.TypeDefs {
switch wt := d.(type) {
- case _gen_wiretype.SliceType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.SliceType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.ArrayType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.ArrayType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.MapType:
- if wt.Key >= _gen_wiretype.TypeIDFirst {
- wt.Key += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.MapType:
+ if wt.Key >= __wiretype.TypeIDFirst {
+ wt.Key += __wiretype.TypeID(firstAdded)
}
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.StructType:
+ case __wiretype.StructType:
for i, fld := range wt.Fields {
- if fld.Type >= _gen_wiretype.TypeIDFirst {
- wt.Fields[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if fld.Type >= __wiretype.TypeIDFirst {
+ wt.Fields[i].Type += __wiretype.TypeID(firstAdded)
}
}
d = wt
@@ -369,25 +364,3 @@
return result, nil
}
-
-func (__gen_s *ServerStubDebug) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubDebug) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
diff --git a/services/mgmt/debug/server_test.go b/services/mgmt/debug/server_test.go
index baa824f..137181e 100644
--- a/services/mgmt/debug/server_test.go
+++ b/services/mgmt/debug/server_test.go
@@ -42,10 +42,7 @@
// Access a logs directory that exists.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//logs"))
- if err != nil {
- t.Errorf("BindGlobbable: %v", err)
- }
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//logs"))
stream, err := ld.Glob(runtime.NewContext(), "*")
if err != nil {
t.Errorf("Glob failed: %v", err)
@@ -68,10 +65,7 @@
// Access a logs directory that doesn't exist.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//logs/nowheretobefound"))
- if err != nil {
- t.Errorf("BindGlobbable: %v", err)
- }
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//logs/nowheretobefound"))
stream, err := ld.Glob(runtime.NewContext(), "*")
if err != nil {
t.Errorf("Glob failed: %v", err)
@@ -91,10 +85,7 @@
// Access a log file that exists.
{
- lf, err := logreader.BindLogFile(naming.JoinAddressName(endpoint, "//logs/test.INFO"))
- if err != nil {
- t.Errorf("BindLogFile: %v", err)
- }
+ lf := logreader.LogFileClient(naming.JoinAddressName(endpoint, "//logs/test.INFO"))
size, err := lf.Size(runtime.NewContext())
if err != nil {
t.Errorf("Size failed: %v", err)
@@ -106,10 +97,7 @@
// Access a log file that doesn't exist.
{
- lf, err := logreader.BindLogFile(naming.JoinAddressName(endpoint, "//logs/nosuchfile.INFO"))
- if err != nil {
- t.Errorf("BindLogFile: %v", err)
- }
+ lf := logreader.LogFileClient(naming.JoinAddressName(endpoint, "//logs/nosuchfile.INFO"))
_, err = lf.Size(runtime.NewContext())
if expected := verror.NoExist; !verror.Is(err, expected) {
t.Errorf("unexpected error value, got %v, want: %v", err, expected)
@@ -121,10 +109,7 @@
foo := libstats.NewInteger("testing/foo")
foo.Set(123)
- st, err := stats.BindStats(naming.JoinAddressName(endpoint, "//stats/testing/foo"))
- if err != nil {
- t.Errorf("BindStats: %v", err)
- }
+ st := stats.StatsClient(naming.JoinAddressName(endpoint, "//stats/testing/foo"))
v, err := st.Value(runtime.NewContext())
if err != nil {
t.Errorf("Value failed: %v", err)
@@ -136,10 +121,7 @@
// Access a stats object that doesn't exists.
{
- st, err := stats.BindStats(naming.JoinAddressName(endpoint, "//stats/testing/nobodyhome"))
- if err != nil {
- t.Errorf("BindStats: %v", err)
- }
+ st := stats.StatsClient(naming.JoinAddressName(endpoint, "//stats/testing/nobodyhome"))
_, err = st.Value(runtime.NewContext())
if expected := verror.NoExist; !verror.Is(err, expected) {
t.Errorf("unexpected error value, got %v, want: %v", err, expected)
diff --git a/services/mgmt/debug/signature.go b/services/mgmt/debug/signature.go
index 032bc88..99e99d6 100644
--- a/services/mgmt/debug/signature.go
+++ b/services/mgmt/debug/signature.go
@@ -17,7 +17,7 @@
// TODO(rthellend): This is a temporary hack until https://code.google.com/p/envyor/issues/detail?id=285 is resolved.
func (s signatureInvoker) Signature(ipc.ServerCall) (ipc.ServiceSignature, error) {
- debugStub := ServerStubDebug{}
+ debugStub := DebugServer(nil)
fullSig, _ := debugStub.Signature(nil)
var show []string
diff --git a/services/mgmt/lib/binary/impl.go b/services/mgmt/lib/binary/impl.go
index fc52c63..41af160 100644
--- a/services/mgmt/lib/binary/impl.go
+++ b/services/mgmt/lib/binary/impl.go
@@ -33,14 +33,9 @@
)
func Delete(name string) error {
- client, err := repository.BindBinary(name)
- if err != nil {
- vlog.Errorf("BindBinary(%v) failed: %v", name, err)
- return err
- }
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- if err := client.Delete(ctx); err != nil {
+ if err := repository.BinaryClient(name).Delete(ctx); err != nil {
vlog.Errorf("Delete() failed: %v", err)
return err
}
@@ -48,11 +43,7 @@
}
func download(ctx context.T, w io.WriteSeeker, von string) error {
- client, err := repository.BindBinary(von)
- if err != nil {
- vlog.Errorf("BindBinary(%v) failed: %v", von, err)
- return err
- }
+ client := repository.BinaryClient(von)
parts, err := client.Stat(ctx)
if err != nil {
vlog.Errorf("Stat() failed: %v", err)
@@ -175,11 +166,7 @@
}
func upload(ctx context.T, r io.ReadSeeker, von string) error {
- client, err := repository.BindBinary(von)
- if err != nil {
- vlog.Errorf("BindBinary(%v) failed: %v", von, err)
- return err
- }
+ client := repository.BinaryClient(von)
offset, whence := int64(0), 2
size, err := r.Seek(offset, whence)
if err != nil {
diff --git a/services/mgmt/logreader/impl/logdir_invoker_test.go b/services/mgmt/logreader/impl/logdir_invoker_test.go
index 0cba1db..f2bdf87 100644
--- a/services/mgmt/logreader/impl/logdir_invoker_test.go
+++ b/services/mgmt/logreader/impl/logdir_invoker_test.go
@@ -56,10 +56,7 @@
// Try to access a directory that doesn't exist.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//doesntexist"))
- if err != nil {
- t.Errorf("BindLogDirectory: %v", err)
- }
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//doesntexist"))
stream, err := ld.Glob(runtime.NewContext(), "*")
if err != nil {
t.Errorf("unexpected error, got %v, want: nil", err)
@@ -73,11 +70,7 @@
// Try to access a directory that does exist.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//"))
- if err != nil {
- t.Errorf("BindLogDirectory: %v", err)
- }
-
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//"))
stream, err := ld.Glob(runtime.NewContext(), "...")
if err != nil {
t.Errorf("Glob failed: %v", err)
@@ -156,10 +149,7 @@
// Try to access a sub-directory.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//subdir"))
- if err != nil {
- t.Errorf("BindLogDirectory: %v", err)
- }
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//subdir"))
stream, err := ld.Glob(runtime.NewContext(), "*")
if err != nil {
t.Errorf("Glob failed: %v", err)
@@ -188,10 +178,7 @@
// Try to access a file.
{
- ld, err := mounttable.BindGlobbable(naming.JoinAddressName(endpoint, "//foo.txt"))
- if err != nil {
- t.Errorf("BindLogDirectory: %v", err)
- }
+ ld := mounttable.GlobbableClient(naming.JoinAddressName(endpoint, "//foo.txt"))
stream, err := ld.Glob(runtime.NewContext(), "*")
if err != nil {
t.Errorf("Glob failed: %v", err)
diff --git a/services/mgmt/logreader/impl/logfile_invoker_test.go b/services/mgmt/logreader/impl/logfile_invoker_test.go
index 0cc7615..3f6a478 100644
--- a/services/mgmt/logreader/impl/logfile_invoker_test.go
+++ b/services/mgmt/logreader/impl/logfile_invoker_test.go
@@ -66,20 +66,14 @@
}
// Try to access a file that doesn't exist.
- lf, err := logreader.BindLogFile(naming.JoinAddressName(endpoint, "//doesntexist"))
- if err != nil {
- t.Errorf("BindLogFile: %v", err)
- }
+ lf := logreader.LogFileClient(naming.JoinAddressName(endpoint, "//doesntexist"))
_, err = lf.Size(runtime.NewContext())
if expected := verror.NoExist; !verror.Is(err, expected) {
t.Errorf("unexpected error value, got %v, want: %v", err, expected)
}
// Try to access a file that does exist.
- lf, err = logreader.BindLogFile(naming.JoinAddressName(endpoint, "//"+testFile))
- if err != nil {
- t.Errorf("BindLogFile: %v", err)
- }
+ lf = logreader.LogFileClient(naming.JoinAddressName(endpoint, "//"+testFile))
_, err = lf.Size(runtime.NewContext())
if err != nil {
t.Errorf("Size failed: %v", err)
@@ -154,10 +148,7 @@
"Fix it later",
}
- lf, err := logreader.BindLogFile(naming.JoinAddressName(endpoint, "//"+testFile))
- if err != nil {
- t.Errorf("BindLogFile: %v", err)
- }
+ lf := logreader.LogFileClient(naming.JoinAddressName(endpoint, "//"+testFile))
_, err = lf.Size(runtime.NewContext())
if err != nil {
t.Errorf("Size failed: %v", err)
diff --git a/services/mgmt/node/config.vdl.go b/services/mgmt/node/config.vdl.go
index 7b9dfbe..45377a8 100644
--- a/services/mgmt/node/config.vdl.go
+++ b/services/mgmt/node/config.vdl.go
@@ -4,108 +4,60 @@
package node
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// ConfigClientMethods is the client interface
+// containing Config methods.
+//
// Config is an RPC API to the config service.
-// Config is the interface the client binds and uses.
-// Config_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Config_ExcludingUniversal interface {
+type ConfigClientMethods interface {
// Set sets the value for key.
- Set(ctx _gen_context.T, key string, value string, opts ..._gen_ipc.CallOpt) (err error)
-}
-type Config interface {
- _gen_ipc.UniversalServiceMethods
- Config_ExcludingUniversal
+ Set(ctx __context.T, key string, value string, opts ...__ipc.CallOpt) error
}
-// ConfigService is the interface the server implements.
-type ConfigService interface {
-
- // Set sets the value for key.
- Set(context _gen_ipc.ServerContext, key string, value string) (err error)
+// ConfigClientStub adds universal methods to ConfigClientMethods.
+type ConfigClientStub interface {
+ ConfigClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindConfig returns the client stub implementing the Config
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindConfig(name string, opts ..._gen_ipc.BindOpt) (Config, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// ConfigClient returns a client stub for Config.
+func ConfigClient(name string, opts ...__ipc.BindOpt) ConfigClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubConfig{defaultClient: client, name: name}
-
- return stub, nil
+ return implConfigClientStub{name, client}
}
-// NewServerConfig creates a new server stub.
-//
-// It takes a regular server implementing the ConfigService
-// interface, and returns a new server stub.
-func NewServerConfig(server ConfigService) interface{} {
- stub := &ServerStubConfig{
- service: server,
- }
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
- return stub
+type implConfigClientStub struct {
+ name string
+ client __ipc.Client
}
-// clientStubConfig implements Config.
-type clientStubConfig struct {
- defaultClient _gen_ipc.Client
- name string
-}
-
-func (__gen_c *clientStubConfig) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
+func (c implConfigClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
}
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+ return __veyron2.RuntimeFromContext(ctx).Client()
}
-func (__gen_c *clientStubConfig) Set(ctx _gen_context.T, key string, value string, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Set", []interface{}{key, value}, opts...); err != nil {
+func (c implConfigClientStub) Set(ctx __context.T, i0 string, i1 string, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Set", []interface{}{i0, i1}, opts...); err != nil {
return
}
if ierr := call.Finish(&err); ierr != nil {
@@ -114,51 +66,88 @@
return
}
-func (__gen_c *clientStubConfig) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
+func (c implConfigClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubConfig) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
+func (c implConfigClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubConfig) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+// ConfigServerMethods is the interface a server writer
+// implements for Config.
+//
+// Config is an RPC API to the config service.
+type ConfigServerMethods interface {
+ // Set sets the value for key.
+ Set(ctx __ipc.ServerContext, key string, value string) error
}
-// ServerStubConfig wraps a server that implements
-// ConfigService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubConfig struct {
- service ConfigService
- gs *_gen_ipc.GlobState
+// ConfigServerStubMethods is the server interface containing
+// Config methods, as expected by ipc.Server. The difference between
+// this interface and ConfigServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type ConfigServerStubMethods interface {
+ // Set sets the value for key.
+ Set(call __ipc.ServerCall, key string, value string) error
}
-func (__gen_s *ServerStubConfig) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+// ConfigServerStub adds universal methods to ConfigServerStubMethods.
+type ConfigServerStub interface {
+ ConfigServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// ConfigServer returns a server stub for Config.
+// It converts an implementation of ConfigServerMethods into
+// an object that may be used by ipc.Server.
+func ConfigServer(impl ConfigServerMethods) ConfigServerStub {
+ stub := implConfigServerStub{
+ 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
+ }
+ return stub
+}
+
+type implConfigServerStub struct {
+ impl ConfigServerMethods
+ gs *__ipc.GlobState
+}
+
+func (s implConfigServerStub) Set(call __ipc.ServerCall, i0 string, i1 string) error {
+ return s.impl.Set(call, i0, i1)
+}
+
+func (s implConfigServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
+}
+
+func (s implConfigServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Set":
return []interface{}{}, nil
@@ -167,47 +156,21 @@
}
}
-func (__gen_s *ServerStubConfig) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Set"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implConfigServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Set"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "key", Type: 3},
{Name: "value", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubConfig) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubConfig) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubConfig) Set(call _gen_ipc.ServerCall, key string, value string) (err error) {
- err = __gen_s.service.Set(call, key, value)
- return
-}
diff --git a/services/mgmt/node/impl/app_invoker.go b/services/mgmt/node/impl/app_invoker.go
index 5832b36..247d7d0 100644
--- a/services/mgmt/node/impl/app_invoker.go
+++ b/services/mgmt/node/impl/app_invoker.go
@@ -625,11 +625,7 @@
}
func stopAppRemotely(appVON string) error {
- appStub, err := appcycle.BindAppCycle(appVON)
- if err != nil {
- vlog.Errorf("BindAppCycle(%v) failed: %v", appVON, err)
- return errOperationFailed
- }
+ appStub := appcycle.AppCycleClient(appVON)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
stream, err := appStub.Stop(ctx)
@@ -906,7 +902,7 @@
})
}
-func (i *appInvoker) Glob(ctx ipc.ServerContext, pattern string, stream mounttable.GlobbableServiceGlobStream) error {
+func (i *appInvoker) Glob(ctx mounttable.GlobbableGlobContext, pattern string) error {
g, err := glob.Parse(pattern)
if err != nil {
return err
@@ -915,41 +911,36 @@
if n == nil {
return errInvalidSuffix
}
- i.globStep(ctx, "", g, n, stream)
+ i.globStep(ctx, "", g, n)
return nil
}
-func (i *appInvoker) globStep(ctx ipc.ServerContext, prefix string, g *glob.Glob, n *treeNode, stream mounttable.GlobbableServiceGlobStream) {
+func (i *appInvoker) globStep(ctx mounttable.GlobbableGlobContext, prefix string, g *glob.Glob, n *treeNode) {
if n.remote != "" {
- remoteGlob(ctx, n.remote, prefix, g.String(), stream)
+ remoteGlob(ctx, n.remote, prefix, g.String())
return
}
if g.Len() == 0 {
- stream.SendStream().Send(types.MountEntry{Name: prefix})
+ ctx.SendStream().Send(types.MountEntry{Name: prefix})
}
if g.Finished() {
return
}
for name, child := range n.children {
if ok, _, left := g.MatchInitialSegment(name); ok {
- i.globStep(ctx, naming.Join(prefix, name), left, child, stream)
+ i.globStep(ctx, naming.Join(prefix, name), left, child)
}
}
}
-func remoteGlob(ctx ipc.ServerContext, remote, prefix, pattern string, stream mounttable.GlobbableServiceGlobStream) {
- c, err := mounttable.BindGlobbable(remote)
- if err != nil {
- vlog.VI(1).Infof("BindGlobbable(%q): %v", remote, err)
- return
- }
- call, err := c.Glob(ctx, pattern)
+func remoteGlob(ctx mounttable.GlobbableGlobContext, remote, prefix, pattern string) {
+ call, err := mounttable.GlobbableClient(remote).Glob(ctx, pattern)
if err != nil {
vlog.VI(1).Infof("%q.Glob(%q): %v", remote, pattern, err)
return
}
it := call.RecvStream()
- sender := stream.SendStream()
+ sender := ctx.SendStream()
for it.Advance() {
me := it.Value()
me.Name = naming.Join(prefix, me.Name)
diff --git a/services/mgmt/node/impl/callback.go b/services/mgmt/node/impl/callback.go
index 7865bc6..02238c6 100644
--- a/services/mgmt/node/impl/callback.go
+++ b/services/mgmt/node/impl/callback.go
@@ -23,10 +23,7 @@
// Node manager was not started by self-update, return silently.
return
}
- nmClient, err := node.BindConfig(callbackName)
- if err != nil {
- vlog.Fatalf("BindNode(%v) failed: %v", callbackName, err)
- }
+ nmClient := node.ConfigClient(callbackName)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
if err := nmClient.Set(ctx, mgmt.ChildNameConfigKey, name); err != nil {
diff --git a/services/mgmt/node/impl/dispatcher.go b/services/mgmt/node/impl/dispatcher.go
index 31ad89d..2b72dcc 100644
--- a/services/mgmt/node/impl/dispatcher.go
+++ b/services/mgmt/node/impl/dispatcher.go
@@ -241,7 +241,7 @@
// prefix.
switch components[0] {
case nodeSuffix:
- receiver := node.NewServerNode(&nodeInvoker{
+ receiver := node.NodeServer(&nodeInvoker{
callback: d.internal.callback,
updating: d.internal.updating,
config: d.config,
@@ -278,17 +278,17 @@
var sigStub signatureStub
if kind == "pprof" {
label = security.DebugLabel
- sigStub = &pprof.ServerStubPProf{}
+ sigStub = pprof.PProfServer(nil)
} else {
label = security.DebugLabel | security.MonitoringLabel
- sigStub = &stats.ServerStubStats{}
+ sigStub = stats.StatsServer(nil)
}
suffix := naming.Join("__debug", naming.Join(components[4:]...))
remote := naming.JoinAddressName(info.AppCycleMgrName, suffix)
return &proxyInvoker{remote, label, sigStub}, d.auth, nil
}
}
- receiver := node.NewServerApplication(&appInvoker{
+ receiver := node.ApplicationServer(&appInvoker{
callback: d.internal.callback,
config: d.config,
suffix: components[1:],
@@ -302,7 +302,7 @@
if len(components) != 2 {
return nil, nil, errInvalidSuffix
}
- receiver := inode.NewServerConfig(&configInvoker{
+ receiver := inode.ConfigServer(&configInvoker{
callback: d.internal.callback,
suffix: components[1],
})
diff --git a/services/mgmt/node/impl/impl_test.go b/services/mgmt/node/impl/impl_test.go
index a5670c2..f35721c 100644
--- a/services/mgmt/node/impl/impl_test.go
+++ b/services/mgmt/node/impl/impl_test.go
@@ -224,7 +224,7 @@
func ping() {
if call, err := rt.R().Client().StartCall(rt.R().NewContext(), "pingserver", "Ping", []interface{}{os.Getenv(suidhelper.SavedArgs)}); err != nil {
vlog.Fatalf("StartCall failed: %v", err)
- } else if err = call.Finish(); err != nil {
+ } else if err := call.Finish(); err != nil {
vlog.Fatalf("Finish failed: %v", err)
}
}
@@ -748,11 +748,8 @@
func tryInstall(rt veyron2.Runtime) error {
appsName := "nm//apps"
- stub, err := node.BindApplication(appsName, rt.Client())
- if err != nil {
- return fmt.Errorf("BindApplication(%v) failed: %v", appsName, err)
- }
- if _, err = stub.Install(rt.NewContext(), mockApplicationRepoName); err != nil {
+ stub := node.ApplicationClient(appsName, rt.Client())
+ if _, err := stub.Install(rt.NewContext(), mockApplicationRepoName); err != nil {
return fmt.Errorf("Install failed: %v", err)
}
return nil
@@ -786,21 +783,17 @@
defer os.RemoveAll(crDir)
*envelope = envelopeFromShell(sh, crEnv, appCmd, "google naps", "trapp")
- nodeStub, err := node.BindNode("nm//nm")
- if err != nil {
- t.Fatalf("BindNode failed: %v", err)
- }
-
+ nodeStub := node.NodeClient("nm//nm")
selfRT := rt.R()
otherRT := newRuntime(t)
defer otherRT.Cleanup()
// Nodemanager should have open ACLs before we claim it and so an Install from otherRT should succeed.
- if err = tryInstall(otherRT); err != nil {
+ if err := tryInstall(otherRT); err != nil {
t.Fatal(err)
}
// Claim the nodemanager with selfRT as <defaultblessing>/mydevice
- if err = nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "mydevice"}); err != nil {
+ if err := nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "mydevice"}); err != nil {
t.Fatal(err)
}
@@ -809,7 +802,7 @@
appID := installApp(t)
// otherRT should be unable to install though, since the ACLs have changed now.
- if err = tryInstall(otherRT); err == nil {
+ if err := tryInstall(otherRT); err == nil {
t.Fatalf("Install should have failed from otherRT")
}
@@ -875,10 +868,7 @@
defer os.RemoveAll(crDir)
*envelope = envelopeFromShell(sh, crEnv, appCmd, "google naps")
- nodeStub, err := node.BindNode("nm//nm")
- if err != nil {
- t.Fatalf("BindNode failed: %v", err)
- }
+ nodeStub := node.NodeClient("nm//nm")
acl, etag, err := nodeStub.GetACL(selfRT.NewContext())
if err != nil {
t.Fatalf("GetACL failed:%v", err)
@@ -888,7 +878,7 @@
}
// Claim the nodemanager as "root/self/mydevice"
- if err = nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "mydevice"}); err != nil {
+ if err := nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "mydevice"}); err != nil {
t.Fatal(err)
}
expectedACL := security.ACL{In: map[security.BlessingPattern]security.LabelSet{"root/self/mydevice": security.AllLabels}}
@@ -905,21 +895,21 @@
t.Fatalf("getACL expected:%v(%v), got:%v(%v)", expectedACL, expectedETAG, acl, etag)
}
// Install from otherRT should fail, since it does not match the ACL.
- if err = tryInstall(otherRT); err == nil {
+ if err := tryInstall(otherRT); err == nil {
t.Fatalf("Install should have failed with random identity")
}
newACL := security.ACL{In: map[security.BlessingPattern]security.LabelSet{"root/other": security.AllLabels}}
- if err = nodeStub.SetACL(selfRT.NewContext(), newACL, "invalid"); err == nil {
+ if err := nodeStub.SetACL(selfRT.NewContext(), newACL, "invalid"); err == nil {
t.Fatalf("SetACL should have failed with invalid etag")
}
- if err = nodeStub.SetACL(selfRT.NewContext(), newACL, etag); err != nil {
+ if err := nodeStub.SetACL(selfRT.NewContext(), newACL, etag); err != nil {
t.Fatal(err)
}
// Install should now fail with selfRT, which no longer matches the ACLs but succeed with otherRT, which does.
- if err = tryInstall(selfRT); err == nil {
+ if err := tryInstall(selfRT); err == nil {
t.Errorf("Install should have failed with selfRT since it should no longer match the ACL")
}
- if err = tryInstall(otherRT); err != nil {
+ if err := tryInstall(otherRT); err != nil {
t.Error(err)
}
}
@@ -1095,10 +1085,7 @@
}
for _, file := range files {
name := naming.Join("nm", file)
- c, err := logreader.BindLogFile(name)
- if err != nil {
- t.Fatalf("BindLogFile failed: %v", err)
- }
+ c := logreader.LogFileClient(name)
if _, err := c.Size(rt.R().NewContext()); err != nil {
t.Errorf("Size(%q) failed: %v", name, err)
}
@@ -1111,10 +1098,7 @@
}
for _, obj := range objects {
name := naming.Join("nm", obj)
- c, err := stats.BindStats(name)
- if err != nil {
- t.Fatalf("BindStats failed: %v", err)
- }
+ c := stats.StatsClient(name)
if _, err := c.Value(rt.R().NewContext()); err != nil {
t.Errorf("Value(%q) failed: %v", name, err)
}
@@ -1123,10 +1107,7 @@
// Call CmdLine() on the pprof object.
{
name := "nm/apps/google naps/" + installID + "/" + instance1ID + "/pprof"
- c, err := pprof.BindPProf(name)
- if err != nil {
- t.Fatalf("BindPProf failed: %v", err)
- }
+ c := pprof.PProfClient(name)
v, err := c.CmdLine(rt.R().NewContext())
if err != nil {
t.Errorf("CmdLine(%q) failed: %v", name, err)
@@ -1141,10 +1122,7 @@
}
func doGlob(t *testing.T, name, pattern string) []string {
- c, err := mounttable.BindGlobbable(name)
- if err != nil {
- t.Fatalf("BindGlobbable failed: %v", err)
- }
+ c := mounttable.GlobbableClient(name)
stream, err := c.Glob(rt.R().NewContext(), pattern)
if err != nil {
t.Errorf("Glob failed: %v", err)
@@ -1163,7 +1141,7 @@
return results
}
-func listAndVerifyAssociations(t *testing.T, stub node.Node, run veyron2.Runtime, expected []node.Association) {
+func listAndVerifyAssociations(t *testing.T, stub node.NodeClientMethods, run veyron2.Runtime, expected []node.Association) {
assocs, err := stub.ListAssociations(run.NewContext())
if err != nil {
t.Fatalf("ListAssociations failed %v", err)
@@ -1205,10 +1183,7 @@
pid := readPID(t, nms)
defer syscall.Kill(pid, syscall.SIGINT)
- nodeStub, err := node.BindNode("nm//nm")
- if err != nil {
- t.Fatalf("BindNode failed %v", err)
- }
+ nodeStub := node.NodeClient("nm//nm")
// Attempt to list associations on the node manager without having
// claimed it.
@@ -1217,14 +1192,14 @@
}
// self claims the node manager.
- if err = nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "alice"}); err != nil {
+ if err := nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "alice"}); err != nil {
t.Fatalf("Claim failed: %v", err)
}
vlog.VI(2).Info("Verify that associations start out empty.")
listAndVerifyAssociations(t, nodeStub, selfRT, []node.Association(nil))
- if err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self", "root/other"}, "alice_system_account"); err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self", "root/other"}, "alice_system_account"); err != nil {
t.Fatalf("ListAssociations failed %v", err)
}
vlog.VI(2).Info("Added association should appear.")
@@ -1239,7 +1214,7 @@
},
})
- if err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self", "root/other"}, "alice_other_account"); err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self", "root/other"}, "alice_other_account"); err != nil {
t.Fatalf("AssociateAccount failed %v", err)
}
vlog.VI(2).Info("Change the associations and the change should appear.")
@@ -1254,8 +1229,7 @@
},
})
- err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, "")
- if err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, ""); err != nil {
t.Fatalf("AssociateAccount failed %v", err)
}
vlog.VI(2).Info("Verify that we can remove an association.")
@@ -1319,10 +1293,7 @@
pid := readPID(t, nms)
defer syscall.Kill(pid, syscall.SIGINT)
- nodeStub, err := node.BindNode("nm//nm")
- if err != nil {
- t.Fatalf("BindNode failed %v", err)
- }
+ nodeStub := node.NodeClient("nm//nm")
// Create the local server that the app uses to tell us which system name
// the node manager wished to run it as.
@@ -1343,7 +1314,7 @@
appID := installApp(t, selfRT)
// Claim the nodemanager with selfRT as root/self/alice
- if err = nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "alice"}); err != nil {
+ if err := nodeStub.Claim(selfRT.NewContext(), &granter{p: selfRT.Principal(), extension: "alice"}); err != nil {
t.Fatal(err)
}
@@ -1352,7 +1323,7 @@
startAppExpectError(t, appID, verror.NoAccess, selfRT)
// Create an association for selfRT
- if err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self"}, testUserName); err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/self"}, testUserName); err != nil {
t.Fatalf("AssociateAccount failed %v", err)
}
@@ -1364,7 +1335,7 @@
startAppExpectError(t, appID, verror.NoAccess, otherRT)
// Self will now let other also run apps.
- if err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, testUserName); err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, testUserName); err != nil {
t.Fatalf("AssociateAccount failed %v", err)
}
// Add Start to the ACL list for root/other.
@@ -1373,7 +1344,7 @@
t.Fatalf("GetACL failed %v", err)
}
newACL.In["root/other/..."] = security.AllLabels
- if err = nodeStub.SetACL(selfRT.NewContext(), newACL, ""); err != nil {
+ if err := nodeStub.SetACL(selfRT.NewContext(), newACL, ""); err != nil {
t.Fatalf("SetACL failed %v", err)
}
@@ -1388,7 +1359,7 @@
suspendApp(t, appID, instance2ID, otherRT)
// Change the associated system name.
- if err = nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, anotherTestUserName); err != nil {
+ if err := nodeStub.AssociateAccount(selfRT.NewContext(), []string{"root/other"}, anotherTestUserName); err != nil {
t.Fatalf("AssociateAccount failed %v", err)
}
diff --git a/services/mgmt/node/impl/mock_repo_test.go b/services/mgmt/node/impl/mock_repo_test.go
index cc8241f..3901275 100644
--- a/services/mgmt/node/impl/mock_repo_test.go
+++ b/services/mgmt/node/impl/mock_repo_test.go
@@ -36,7 +36,7 @@
server, _ := newServer()
invoker := new(arInvoker)
name := mockApplicationRepoName
- if err := server.Serve(name, repository.NewServerApplication(invoker), nil); err != nil {
+ if err := server.Serve(name, repository.ApplicationServer(invoker), nil); err != nil {
vlog.Fatalf("Serve(%v) failed: %v", name, err)
}
return &invoker.envelope, func() {
@@ -68,7 +68,7 @@
func startBinaryRepository() func() {
server, _ := newServer()
name := mockBinaryRepoName
- if err := server.Serve(name, repository.NewServerBinary(new(brInvoker)), nil); err != nil {
+ if err := server.Serve(name, repository.BinaryServer(new(brInvoker)), nil); err != nil {
vlog.Fatalf("Serve(%q) failed: %v", name, err)
}
return func() {
@@ -92,7 +92,7 @@
var errOperationFailed = errors.New("operation failed")
-func (i *brInvoker) Download(_ ipc.ServerContext, _ int32, stream repository.BinaryServiceDownloadStream) error {
+func (i *brInvoker) Download(ctx repository.BinaryDownloadContext, _ int32) error {
vlog.VI(1).Infof("Download()")
file, err := os.Open(os.Args[0])
if err != nil {
@@ -102,7 +102,7 @@
defer file.Close()
bufferLength := 4096
buffer := make([]byte, bufferLength)
- sender := stream.SendStream()
+ sender := ctx.SendStream()
for {
n, err := file.Read(buffer)
switch err {
@@ -137,7 +137,7 @@
return []binary.PartInfo{part}, nil
}
-func (i *brInvoker) Upload(ipc.ServerContext, int32, repository.BinaryServiceUploadStream) error {
+func (i *brInvoker) Upload(repository.BinaryUploadContext, int32) error {
vlog.VI(1).Infof("Upload()")
return nil
}
diff --git a/services/mgmt/node/impl/node_invoker.go b/services/mgmt/node/impl/node_invoker.go
index 309d867..b2952f9 100644
--- a/services/mgmt/node/impl/node_invoker.go
+++ b/services/mgmt/node/impl/node_invoker.go
@@ -257,11 +257,7 @@
}
// Check that invoking Update() succeeds.
childName = naming.Join(childName, "nm")
- nmClient, err := node.BindNode(childName)
- if err != nil {
- vlog.Errorf("BindNode(%v) failed: %v", childName, err)
- return errOperationFailed
- }
+ nmClient := node.NodeClient(childName)
linkOld, pathOld, err := i.getCurrentFileInfo()
if err != nil {
return errOperationFailed
@@ -467,13 +463,13 @@
return i.disp.getACL()
}
-func (i *nodeInvoker) Glob(ctx ipc.ServerContext, pattern string, stream mounttable.GlobbableServiceGlobStream) error {
+func (i *nodeInvoker) Glob(ctx mounttable.GlobbableGlobContext, pattern string) error {
g, err := glob.Parse(pattern)
if err != nil {
return err
}
if g.Len() == 0 {
- return stream.SendStream().Send(types.MountEntry{Name: ""})
+ return ctx.SendStream().Send(types.MountEntry{Name: ""})
}
return nil
}
diff --git a/services/mgmt/node/impl/proxy_invoker_test.go b/services/mgmt/node/impl/proxy_invoker_test.go
index b2861f6..b5812c3 100644
--- a/services/mgmt/node/impl/proxy_invoker_test.go
+++ b/services/mgmt/node/impl/proxy_invoker_test.go
@@ -44,7 +44,7 @@
disp := &proxyDispatcher{
naming.JoinAddressName(ep1.String(), "__debug/stats"),
security.Label(security.AllLabels),
- &stats.ServerStubStats{},
+ stats.StatsServer(nil),
}
if err := server2.ServeDispatcher("", disp); err != nil {
t.Fatalf("server2.Serve: %v", err)
@@ -52,10 +52,7 @@
// Call Value()
name := naming.JoinAddressName(ep2.String(), "system/start-time-rfc1123")
- c, err := stats.BindStats(name)
- if err != nil {
- t.Fatalf("BindStats error: %v", err)
- }
+ c := stats.StatsClient(name)
if _, err := c.Value(r.NewContext()); err != nil {
t.Errorf("%q.Value() error: %v", name, err)
}
@@ -72,10 +69,7 @@
}
func doGlob(t *testing.T, name, pattern string) []string {
- c, err := mounttable.BindGlobbable(name)
- if err != nil {
- t.Fatalf("BindGlobbable failed: %v", err)
- }
+ c := mounttable.GlobbableClient(name)
stream, err := c.Glob(rt.R().NewContext(), pattern)
if err != nil {
t.Fatalf("Glob failed: %v", err)
diff --git a/services/mgmt/node/impl/util.go b/services/mgmt/node/impl/util.go
index 5f719b4..d8cca9d 100644
--- a/services/mgmt/node/impl/util.go
+++ b/services/mgmt/node/impl/util.go
@@ -29,11 +29,7 @@
}
func fetchEnvelope(ctx context.T, origin string) (*application.Envelope, error) {
- stub, err := repository.BindApplication(origin)
- if err != nil {
- vlog.Errorf("BindRepository(%v) failed: %v", origin, err)
- return nil, errOperationFailed
- }
+ stub := repository.ApplicationClient(origin)
// TODO(jsimsa): Include logic that computes the set of supported
// profiles.
profiles := []string{"test"}
diff --git a/services/mgmt/node/impl/util_test.go b/services/mgmt/node/impl/util_test.go
index fef9b36..fce2764 100644
--- a/services/mgmt/node/impl/util_test.go
+++ b/services/mgmt/node/impl/util_test.go
@@ -167,17 +167,13 @@
// The following set of functions are convenience wrappers around Update and
// Revert for node manager.
-func nodeStub(t *testing.T, name string) node.Node {
+func nodeStub(name string) node.NodeClientMethods {
nodeName := naming.Join(name, "nm")
- stub, err := node.BindNode(nodeName)
- if err != nil {
- t.Fatalf("%s: BindNode(%v) failed: %v", loc(1), nodeName, err)
- }
- return stub
+ return node.NodeClient(nodeName)
}
func updateNodeExpectError(t *testing.T, name string, errID verror.ID) {
- if err := nodeStub(t, name).Update(rt.R().NewContext()); !verror.Is(err, errID) {
+ if err := nodeStub(name).Update(rt.R().NewContext()); !verror.Is(err, errID) {
if errID == naming.ErrNoSuchName.ID && err.Error() == "no different version available" {
// TODO(bprosnitz) Remove this check when errUpdateNoOp is updated to verror2
return
@@ -187,13 +183,13 @@
}
func updateNode(t *testing.T, name string) {
- if err := nodeStub(t, name).Update(rt.R().NewContext()); err != nil {
+ if err := nodeStub(name).Update(rt.R().NewContext()); err != nil {
t.Fatalf("%s: Update(%v) failed: %v", loc(1), name, err)
}
}
func revertNodeExpectError(t *testing.T, name string, errID verror.ID) {
- if err := nodeStub(t, name).Revert(rt.R().NewContext()); !verror.Is(err, errID) {
+ if err := nodeStub(name).Revert(rt.R().NewContext()); !verror.Is(err, errID) {
if errID == naming.ErrNoSuchName.ID && err.Error() == "no different version available" {
// TODO(bprosnitz) Remove this check when errUpdateNoOp is updated to verror2
return
@@ -203,7 +199,7 @@
}
func revertNode(t *testing.T, name string) {
- if err := nodeStub(t, name).Revert(rt.R().NewContext()); err != nil {
+ if err := nodeStub(name).Revert(rt.R().NewContext()); err != nil {
t.Fatalf("%s: Revert(%v) failed: %v", loc(1), name, err)
}
}
@@ -219,18 +215,14 @@
}
}
-func appStub(t *testing.T, nameComponents ...string) node.Application {
+func appStub(nameComponents ...string) node.ApplicationClientMethods {
appsName := "nm//apps"
appName := naming.Join(append([]string{appsName}, nameComponents...)...)
- stub, err := node.BindApplication(appName)
- if err != nil {
- t.Fatalf("%s: BindApplication(%v) failed: %v", loc(1), appName, err)
- }
- return stub
+ return node.ApplicationClient(appName)
}
func installApp(t *testing.T, opt ...veyron2.Runtime) string {
- appID, err := appStub(t).Install(ort(opt).NewContext(), mockApplicationRepoName)
+ appID, err := appStub().Install(ort(opt).NewContext(), mockApplicationRepoName)
if err != nil {
t.Fatalf("%s: Install failed: %v", loc(1), err)
}
@@ -238,7 +230,7 @@
}
func startAppImpl(t *testing.T, appID string, opt []veyron2.Runtime) (string, error) {
- if instanceIDs, err := appStub(t, appID).Start(ort(opt).NewContext()); err != nil {
+ if instanceIDs, err := appStub(appID).Start(ort(opt).NewContext()); err != nil {
return "", err
} else {
if want, got := 1, len(instanceIDs); want != got {
@@ -263,37 +255,37 @@
}
func stopApp(t *testing.T, appID, instanceID string, opt ...veyron2.Runtime) {
- if err := appStub(t, appID, instanceID).Stop(ort(opt).NewContext(), 5); err != nil {
+ if err := appStub(appID, instanceID).Stop(ort(opt).NewContext(), 5); err != nil {
t.Fatalf("%s: Stop(%v/%v) failed: %v", loc(1), appID, instanceID, err)
}
}
func suspendApp(t *testing.T, appID, instanceID string, opt ...veyron2.Runtime) {
- if err := appStub(t, appID, instanceID).Suspend(ort(opt).NewContext()); err != nil {
+ if err := appStub(appID, instanceID).Suspend(ort(opt).NewContext()); err != nil {
t.Fatalf("%s: Suspend(%v/%v) failed: %v", loc(1), appID, instanceID, err)
}
}
func resumeApp(t *testing.T, appID, instanceID string, opt ...veyron2.Runtime) {
- if err := appStub(t, appID, instanceID).Resume(ort(opt).NewContext()); err != nil {
+ if err := appStub(appID, instanceID).Resume(ort(opt).NewContext()); err != nil {
t.Fatalf("%s: Resume(%v/%v) failed: %v", loc(1), appID, instanceID, err)
}
}
func resumeAppExpectError(t *testing.T, appID, instanceID string, expectedError verror.ID, opt ...veyron2.Runtime) {
- if err := appStub(t, appID, instanceID).Resume(ort(opt).NewContext()); err == nil || !verror.Is(err, expectedError) {
+ if err := appStub(appID, instanceID).Resume(ort(opt).NewContext()); err == nil || !verror.Is(err, expectedError) {
t.Fatalf("%s: Resume(%v/%v) expected to fail with %v, got %v instead", loc(1), appID, instanceID, expectedError, err)
}
}
func updateApp(t *testing.T, appID string, opt ...veyron2.Runtime) {
- if err := appStub(t, appID).Update(ort(opt).NewContext()); err != nil {
+ if err := appStub(appID).Update(ort(opt).NewContext()); err != nil {
t.Fatalf("%s: Update(%v) failed: %v", loc(1), appID, err)
}
}
func updateAppExpectError(t *testing.T, appID string, expectedError verror.ID) {
- if err := appStub(t, appID).Update(rt.R().NewContext()); err == nil || !verror.Is(err, expectedError) {
+ if err := appStub(appID).Update(rt.R().NewContext()); err == nil || !verror.Is(err, expectedError) {
if expectedError == naming.ErrNoSuchName.ID && err.Error() == "no different version available" {
// TODO(bprosnitz) Remove this check when errUpdateNoOp is updated to verror2
return
@@ -303,13 +295,13 @@
}
func revertApp(t *testing.T, appID string) {
- if err := appStub(t, appID).Revert(rt.R().NewContext()); err != nil {
+ if err := appStub(appID).Revert(rt.R().NewContext()); err != nil {
t.Fatalf("%s: Revert(%v) failed: %v", loc(1), appID, err)
}
}
func revertAppExpectError(t *testing.T, appID string, expectedError verror.ID) {
- if err := appStub(t, appID).Revert(rt.R().NewContext()); err == nil || !verror.Is(err, expectedError) {
+ if err := appStub(appID).Revert(rt.R().NewContext()); err == nil || !verror.Is(err, expectedError) {
if expectedError == naming.ErrNoSuchName.ID && err.Error() == "no different version available" {
// TODO(bprosnitz) Remove this check when errUpdateNoOp is updated to verror2
return
@@ -319,7 +311,7 @@
}
func uninstallApp(t *testing.T, appID string) {
- if err := appStub(t, appID).Uninstall(rt.R().NewContext()); err != nil {
+ if err := appStub(appID).Uninstall(rt.R().NewContext()); err != nil {
t.Fatalf("%s: Uninstall(%v) failed: %v", loc(1), appID, err)
}
}
diff --git a/services/mgmt/pprof/client/proxy.go b/services/mgmt/pprof/client/proxy.go
index 3562d47..7c98f77 100644
--- a/services/mgmt/pprof/client/proxy.go
+++ b/services/mgmt/pprof/client/proxy.go
@@ -65,11 +65,7 @@
return
}
}
- c, err := pprof.BindPProf(p.name)
- if err != nil {
- replyUnavailable(w, err)
- return
- }
+ c := pprof.PProfClient(p.name)
profiles, err := c.Profiles(p.rt.NewContext())
if err != nil {
replyUnavailable(w, err)
@@ -86,11 +82,7 @@
func (p *proxy) sendProfile(name string, w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
debug, _ := strconv.Atoi(r.FormValue("debug"))
- c, err := pprof.BindPProf(p.name)
- if err != nil {
- replyUnavailable(w, err)
- return
- }
+ c := pprof.PProfClient(p.name)
prof, err := c.Profile(p.rt.NewContext(), name, int32(debug))
if err != nil {
replyUnavailable(w, err)
@@ -120,11 +112,7 @@
sec = 30
}
w.Header().Set("Content-Type", "application/octet-stream")
- c, err := pprof.BindPProf(p.name)
- if err != nil {
- replyUnavailable(w, err)
- return
- }
+ c := pprof.PProfClient(p.name)
prof, err := c.CPUProfile(p.rt.NewContext(), int32(sec))
if err != nil {
replyUnavailable(w, err)
@@ -149,11 +137,7 @@
// cmdLine replies with the command-line arguments of the process.
func (p *proxy) cmdLine(w http.ResponseWriter, r *http.Request) {
- c, err := pprof.BindPProf(p.name)
- if err != nil {
- replyUnavailable(w, err)
- return
- }
+ c := pprof.PProfClient(p.name)
cmdline, err := c.CmdLine(p.rt.NewContext())
if err != nil {
replyUnavailable(w, err)
@@ -190,11 +174,7 @@
break
}
}
- c, err := pprof.BindPProf(p.name)
- if err != nil {
- replyUnavailable(w, err)
- return
- }
+ c := pprof.PProfClient(p.name)
pcMap, err := c.Symbol(p.rt.NewContext(), pcList)
if err != nil {
replyUnavailable(w, err)
diff --git a/services/mgmt/profile/impl/dispatcher.go b/services/mgmt/profile/impl/dispatcher.go
index 075fcdc..9403b0d 100644
--- a/services/mgmt/profile/impl/dispatcher.go
+++ b/services/mgmt/profile/impl/dispatcher.go
@@ -30,6 +30,6 @@
// DISPATCHER INTERFACE IMPLEMENTATION
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerProfile(NewInvoker(d.store, d.storeRoot, suffix)))
+ invoker := ipc.ReflectInvoker(repository.ProfileServer(NewInvoker(d.store, d.storeRoot, suffix)))
return invoker, d.auth, nil
}
diff --git a/services/mgmt/profile/impl/impl_test.go b/services/mgmt/profile/impl/impl_test.go
index d869dc1..19a6d75 100644
--- a/services/mgmt/profile/impl/impl_test.go
+++ b/services/mgmt/profile/impl/impl_test.go
@@ -65,10 +65,7 @@
t.Logf("Profile repository at %v", endpoint)
// Create client stubs for talking to the server.
- stub, err := repository.BindProfile(naming.JoinAddressName(endpoint.String(), "//linux/base"))
- if err != nil {
- t.Fatalf("BindApplication() failed: %v", err)
- }
+ stub := repository.ProfileClient(naming.JoinAddressName(endpoint.String(), "//linux/base"))
// Put
if err := stub.Put(ctx, spec); err != nil {
diff --git a/services/mgmt/repository/repository.vdl.go b/services/mgmt/repository/repository.vdl.go
index 93dbd1a..7b82210 100644
--- a/services/mgmt/repository/repository.vdl.go
+++ b/services/mgmt/repository/repository.vdl.go
@@ -14,27 +14,26 @@
"veyron.io/veyron/veyron2/services/mgmt/repository"
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// ApplicationClientMethods is the client interface
+// containing Application methods.
+//
// Application describes an application repository internally. Besides
// the public Application interface, it allows to add and remove
// application envelopes.
-// Application is the interface the client binds and uses.
-// Application_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Application_ExcludingUniversal interface {
+type ApplicationClientMethods interface {
// Application provides access to application envelopes. An
// application envelope is identified by an application name and an
// application version, which are specified through the object name,
@@ -45,11 +44,11 @@
// returns an application envelope that can be used for downloading
// and executing the "search" application, version "v1", runnable
// on either the "base" or "media" profile.
- repository.Application_ExcludingUniversal
+ repository.ApplicationClientMethods
// Put adds the given tuple of application version (specified
// through the object name suffix) and application envelope to all
// of the given application profiles.
- Put(ctx _gen_context.T, Profiles []string, Envelope application.Envelope, opts ..._gen_ipc.CallOpt) (err error)
+ Put(ctx __context.T, Profiles []string, Envelope application.Envelope, opts ...__ipc.CallOpt) error
// Remove removes the application envelope for the given profile
// name and application version (specified through the object name
// suffix). If no version is specified as part of the suffix, the
@@ -57,180 +56,196 @@
//
// TODO(jsimsa): Add support for using "*" to specify all profiles
// when Matt implements Globing (or Ken implements querying).
- Remove(ctx _gen_context.T, Profile string, opts ..._gen_ipc.CallOpt) (err error)
-}
-type Application interface {
- _gen_ipc.UniversalServiceMethods
- Application_ExcludingUniversal
+ Remove(ctx __context.T, Profile string, opts ...__ipc.CallOpt) error
}
-// ApplicationService is the interface the server implements.
-type ApplicationService interface {
-
- // Application provides access to application envelopes. An
- // application envelope is identified by an application name and an
- // application version, which are specified through the object name,
- // and a profile name, which is specified using a method argument.
- //
- // Example:
- // /apps/search/v1.Match([]string{"base", "media"})
- // returns an application envelope that can be used for downloading
- // and executing the "search" application, version "v1", runnable
- // on either the "base" or "media" profile.
- repository.ApplicationService
- // Put adds the given tuple of application version (specified
- // through the object name suffix) and application envelope to all
- // of the given application profiles.
- Put(context _gen_ipc.ServerContext, Profiles []string, Envelope application.Envelope) (err error)
- // Remove removes the application envelope for the given profile
- // name and application version (specified through the object name
- // suffix). If no version is specified as part of the suffix, the
- // method removes all versions for the given profile.
- //
- // TODO(jsimsa): Add support for using "*" to specify all profiles
- // when Matt implements Globing (or Ken implements querying).
- Remove(context _gen_ipc.ServerContext, Profile string) (err error)
+// ApplicationClientStub adds universal methods to ApplicationClientMethods.
+type ApplicationClientStub interface {
+ ApplicationClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindApplication returns the client stub implementing the Application
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindApplication(name string, opts ..._gen_ipc.BindOpt) (Application, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// ApplicationClient returns a client stub for Application.
+func ApplicationClient(name string, opts ...__ipc.BindOpt) ApplicationClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubApplication{defaultClient: client, name: name}
- stub.Application_ExcludingUniversal, _ = repository.BindApplication(name, client)
-
- return stub, nil
+ return implApplicationClientStub{name, client, repository.ApplicationClient(name, client)}
}
-// NewServerApplication creates a new server stub.
+type implApplicationClientStub struct {
+ name string
+ client __ipc.Client
+
+ repository.ApplicationClientStub
+}
+
+func (c implApplicationClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implApplicationClientStub) Put(ctx __context.T, i0 []string, i1 application.Envelope, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Put", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implApplicationClientStub) Remove(ctx __context.T, i0 string, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Remove", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implApplicationClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implApplicationClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// ApplicationServerMethods is the interface a server writer
+// implements for Application.
//
-// It takes a regular server implementing the ApplicationService
-// interface, and returns a new server stub.
-func NewServerApplication(server ApplicationService) interface{} {
- stub := &ServerStubApplication{
- ServerStubApplication: *repository.NewServerApplication(server).(*repository.ServerStubApplication),
- service: server,
+// Application describes an application repository internally. Besides
+// the public Application interface, it allows to add and remove
+// application envelopes.
+type ApplicationServerMethods interface {
+ // Application provides access to application envelopes. An
+ // application envelope is identified by an application name and an
+ // application version, which are specified through the object name,
+ // and a profile name, which is specified using a method argument.
+ //
+ // Example:
+ // /apps/search/v1.Match([]string{"base", "media"})
+ // returns an application envelope that can be used for downloading
+ // and executing the "search" application, version "v1", runnable
+ // on either the "base" or "media" profile.
+ repository.ApplicationServerMethods
+ // Put adds the given tuple of application version (specified
+ // through the object name suffix) and application envelope to all
+ // of the given application profiles.
+ Put(ctx __ipc.ServerContext, Profiles []string, Envelope application.Envelope) error
+ // Remove removes the application envelope for the given profile
+ // name and application version (specified through the object name
+ // suffix). If no version is specified as part of the suffix, the
+ // method removes all versions for the given profile.
+ //
+ // TODO(jsimsa): Add support for using "*" to specify all profiles
+ // when Matt implements Globing (or Ken implements querying).
+ Remove(ctx __ipc.ServerContext, Profile string) error
+}
+
+// ApplicationServerStubMethods is the server interface containing
+// Application methods, as expected by ipc.Server. The difference between
+// this interface and ApplicationServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type ApplicationServerStubMethods interface {
+ // Application provides access to application envelopes. An
+ // application envelope is identified by an application name and an
+ // application version, which are specified through the object name,
+ // and a profile name, which is specified using a method argument.
+ //
+ // Example:
+ // /apps/search/v1.Match([]string{"base", "media"})
+ // returns an application envelope that can be used for downloading
+ // and executing the "search" application, version "v1", runnable
+ // on either the "base" or "media" profile.
+ repository.ApplicationServerStubMethods
+ // Put adds the given tuple of application version (specified
+ // through the object name suffix) and application envelope to all
+ // of the given application profiles.
+ Put(call __ipc.ServerCall, Profiles []string, Envelope application.Envelope) error
+ // Remove removes the application envelope for the given profile
+ // name and application version (specified through the object name
+ // suffix). If no version is specified as part of the suffix, the
+ // method removes all versions for the given profile.
+ //
+ // TODO(jsimsa): Add support for using "*" to specify all profiles
+ // when Matt implements Globing (or Ken implements querying).
+ Remove(call __ipc.ServerCall, Profile string) error
+}
+
+// ApplicationServerStub adds universal methods to ApplicationServerStubMethods.
+type ApplicationServerStub interface {
+ ApplicationServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// ApplicationServer returns a server stub for Application.
+// It converts an implementation of ApplicationServerMethods into
+// an object that may be used by ipc.Server.
+func ApplicationServer(impl ApplicationServerMethods) ApplicationServerStub {
+ stub := implApplicationServerStub{
+ impl: impl,
+ ApplicationServerStub: repository.ApplicationServer(impl),
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubApplication implements Application.
-type clientStubApplication struct {
- repository.Application_ExcludingUniversal
+type implApplicationServerStub struct {
+ impl ApplicationServerMethods
+ gs *__ipc.GlobState
- defaultClient _gen_ipc.Client
- name string
+ repository.ApplicationServerStub
}
-func (__gen_c *clientStubApplication) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implApplicationServerStub) Put(call __ipc.ServerCall, i0 []string, i1 application.Envelope) error {
+ return s.impl.Put(call, i0, i1)
}
-func (__gen_c *clientStubApplication) Put(ctx _gen_context.T, Profiles []string, Envelope application.Envelope, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Put", []interface{}{Profiles, Envelope}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implApplicationServerStub) Remove(call __ipc.ServerCall, i0 string) error {
+ return s.impl.Remove(call, i0)
}
-func (__gen_c *clientStubApplication) Remove(ctx _gen_context.T, Profile string, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Remove", []interface{}{Profile}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implApplicationServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubApplication) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubApplication) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubApplication) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubApplication wraps a server that implements
-// ApplicationService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubApplication struct {
- repository.ServerStubApplication
-
- service ApplicationService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubApplication) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
- if resp, err := __gen_s.ServerStubApplication.GetMethodTags(call, method); resp != nil || err != nil {
+func (s implApplicationServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
+ if resp, err := s.ApplicationServerStub.GetMethodTags(call, method); resp != nil || err != nil {
return resp, err
}
switch method {
@@ -243,84 +258,85 @@
}
}
-func (__gen_s *ServerStubApplication) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Put"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implApplicationServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Put"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Profiles", Type: 61},
{Name: "Envelope", Type: 65},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 66},
},
}
- result.Methods["Remove"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Remove"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Profile", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 66},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x3, Name: "Title"},
- _gen_wiretype.FieldType{Type: 0x3d, Name: "Args"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "Binary"},
- _gen_wiretype.FieldType{Type: 0x3d, Name: "Env"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x3, Name: "Title"},
+ __wiretype.FieldType{Type: 0x3d, Name: "Args"},
+ __wiretype.FieldType{Type: 0x3, Name: "Binary"},
+ __wiretype.FieldType{Type: 0x3d, Name: "Env"},
},
"veyron.io/veyron/veyron2/services/mgmt/application.Envelope", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
- var ss _gen_ipc.ServiceSignature
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ var ss __ipc.ServiceSignature
var firstAdded int
- ss, _ = __gen_s.ServerStubApplication.Signature(call)
+ ss, _ = s.ApplicationServerStub.Signature(call)
firstAdded = len(result.TypeDefs)
for k, v := range ss.Methods {
for i, _ := range v.InArgs {
- if v.InArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.InArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.InArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.InArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
for i, _ := range v.OutArgs {
- if v.OutArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.OutArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.OutArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.OutArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
- if v.InStream >= _gen_wiretype.TypeIDFirst {
- v.InStream += _gen_wiretype.TypeID(firstAdded)
+ if v.InStream >= __wiretype.TypeIDFirst {
+ v.InStream += __wiretype.TypeID(firstAdded)
}
- if v.OutStream >= _gen_wiretype.TypeIDFirst {
- v.OutStream += _gen_wiretype.TypeID(firstAdded)
+ if v.OutStream >= __wiretype.TypeIDFirst {
+ v.OutStream += __wiretype.TypeID(firstAdded)
}
result.Methods[k] = v
}
//TODO(bprosnitz) combine type definitions from embeded interfaces in a way that doesn't cause duplication.
for _, d := range ss.TypeDefs {
switch wt := d.(type) {
- case _gen_wiretype.SliceType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.SliceType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.ArrayType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.ArrayType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.MapType:
- if wt.Key >= _gen_wiretype.TypeIDFirst {
- wt.Key += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.MapType:
+ if wt.Key >= __wiretype.TypeIDFirst {
+ wt.Key += __wiretype.TypeID(firstAdded)
}
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.StructType:
+ case __wiretype.StructType:
for i, fld := range wt.Fields {
- if fld.Type >= _gen_wiretype.TypeIDFirst {
- wt.Fields[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if fld.Type >= __wiretype.TypeIDFirst {
+ wt.Fields[i].Type += __wiretype.TypeID(firstAdded)
}
}
d = wt
@@ -332,233 +348,211 @@
return result, nil
}
-func (__gen_s *ServerStubApplication) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubApplication) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubApplication) Put(call _gen_ipc.ServerCall, Profiles []string, Envelope application.Envelope) (err error) {
- err = __gen_s.service.Put(call, Profiles, Envelope)
- return
-}
-
-func (__gen_s *ServerStubApplication) Remove(call _gen_ipc.ServerCall, Profile string) (err error) {
- err = __gen_s.service.Remove(call, Profile)
- return
-}
-
+// ProfileClientMethods is the client interface
+// containing Profile methods.
+//
// Profile describes a profile internally. Besides the public Profile
// interface, it allows to add and remove profile specifications.
-// Profile is the interface the client binds and uses.
-// Profile_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Profile_ExcludingUniversal interface {
+type ProfileClientMethods interface {
// Profile abstracts a device's ability to run binaries, and hides
// specifics such as the operating system, hardware architecture, and
// the set of installed libraries. Profiles describe binaries and
// devices, and are used to match them.
- repository.Profile_ExcludingUniversal
+ repository.ProfileClientMethods
// Specification returns the profile specification for the profile
// identified through the object name suffix.
- Specification(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply profile.Specification, err error)
+ Specification(__context.T, ...__ipc.CallOpt) (profile.Specification, error)
// Put sets the profile specification for the profile identified
// through the object name suffix.
- Put(ctx _gen_context.T, Specification profile.Specification, opts ..._gen_ipc.CallOpt) (err error)
+ Put(ctx __context.T, Specification profile.Specification, opts ...__ipc.CallOpt) error
// Remove removes the profile specification for the profile
// identified through the object name suffix.
- Remove(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
-}
-type Profile interface {
- _gen_ipc.UniversalServiceMethods
- Profile_ExcludingUniversal
+ Remove(__context.T, ...__ipc.CallOpt) error
}
-// ProfileService is the interface the server implements.
-type ProfileService interface {
-
- // Profile abstracts a device's ability to run binaries, and hides
- // specifics such as the operating system, hardware architecture, and
- // the set of installed libraries. Profiles describe binaries and
- // devices, and are used to match them.
- repository.ProfileService
- // Specification returns the profile specification for the profile
- // identified through the object name suffix.
- Specification(context _gen_ipc.ServerContext) (reply profile.Specification, err error)
- // Put sets the profile specification for the profile identified
- // through the object name suffix.
- Put(context _gen_ipc.ServerContext, Specification profile.Specification) (err error)
- // Remove removes the profile specification for the profile
- // identified through the object name suffix.
- Remove(context _gen_ipc.ServerContext) (err error)
+// ProfileClientStub adds universal methods to ProfileClientMethods.
+type ProfileClientStub interface {
+ ProfileClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindProfile returns the client stub implementing the Profile
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindProfile(name string, opts ..._gen_ipc.BindOpt) (Profile, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// ProfileClient returns a client stub for Profile.
+func ProfileClient(name string, opts ...__ipc.BindOpt) ProfileClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubProfile{defaultClient: client, name: name}
- stub.Profile_ExcludingUniversal, _ = repository.BindProfile(name, client)
-
- return stub, nil
+ return implProfileClientStub{name, client, repository.ProfileClient(name, client)}
}
-// NewServerProfile creates a new server stub.
+type implProfileClientStub struct {
+ name string
+ client __ipc.Client
+
+ repository.ProfileClientStub
+}
+
+func (c implProfileClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implProfileClientStub) Specification(ctx __context.T, opts ...__ipc.CallOpt) (o0 profile.Specification, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Specification", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implProfileClientStub) Put(ctx __context.T, i0 profile.Specification, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Put", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implProfileClientStub) Remove(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Remove", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implProfileClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implProfileClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// ProfileServerMethods is the interface a server writer
+// implements for Profile.
//
-// It takes a regular server implementing the ProfileService
-// interface, and returns a new server stub.
-func NewServerProfile(server ProfileService) interface{} {
- stub := &ServerStubProfile{
- ServerStubProfile: *repository.NewServerProfile(server).(*repository.ServerStubProfile),
- service: server,
+// Profile describes a profile internally. Besides the public Profile
+// interface, it allows to add and remove profile specifications.
+type ProfileServerMethods interface {
+ // Profile abstracts a device's ability to run binaries, and hides
+ // specifics such as the operating system, hardware architecture, and
+ // the set of installed libraries. Profiles describe binaries and
+ // devices, and are used to match them.
+ repository.ProfileServerMethods
+ // Specification returns the profile specification for the profile
+ // identified through the object name suffix.
+ Specification(__ipc.ServerContext) (profile.Specification, error)
+ // Put sets the profile specification for the profile identified
+ // through the object name suffix.
+ Put(ctx __ipc.ServerContext, Specification profile.Specification) error
+ // Remove removes the profile specification for the profile
+ // identified through the object name suffix.
+ Remove(__ipc.ServerContext) error
+}
+
+// ProfileServerStubMethods is the server interface containing
+// Profile methods, as expected by ipc.Server. The difference between
+// this interface and ProfileServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type ProfileServerStubMethods interface {
+ // Profile abstracts a device's ability to run binaries, and hides
+ // specifics such as the operating system, hardware architecture, and
+ // the set of installed libraries. Profiles describe binaries and
+ // devices, and are used to match them.
+ repository.ProfileServerStubMethods
+ // Specification returns the profile specification for the profile
+ // identified through the object name suffix.
+ Specification(__ipc.ServerCall) (profile.Specification, error)
+ // Put sets the profile specification for the profile identified
+ // through the object name suffix.
+ Put(call __ipc.ServerCall, Specification profile.Specification) error
+ // Remove removes the profile specification for the profile
+ // identified through the object name suffix.
+ Remove(__ipc.ServerCall) error
+}
+
+// ProfileServerStub adds universal methods to ProfileServerStubMethods.
+type ProfileServerStub interface {
+ ProfileServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// ProfileServer returns a server stub for Profile.
+// It converts an implementation of ProfileServerMethods into
+// an object that may be used by ipc.Server.
+func ProfileServer(impl ProfileServerMethods) ProfileServerStub {
+ stub := implProfileServerStub{
+ impl: impl,
+ ProfileServerStub: repository.ProfileServer(impl),
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubProfile implements Profile.
-type clientStubProfile struct {
- repository.Profile_ExcludingUniversal
+type implProfileServerStub struct {
+ impl ProfileServerMethods
+ gs *__ipc.GlobState
- defaultClient _gen_ipc.Client
- name string
+ repository.ProfileServerStub
}
-func (__gen_c *clientStubProfile) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implProfileServerStub) Specification(call __ipc.ServerCall) (profile.Specification, error) {
+ return s.impl.Specification(call)
}
-func (__gen_c *clientStubProfile) Specification(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply profile.Specification, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Specification", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implProfileServerStub) Put(call __ipc.ServerCall, i0 profile.Specification) error {
+ return s.impl.Put(call, i0)
}
-func (__gen_c *clientStubProfile) Put(ctx _gen_context.T, Specification profile.Specification, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Put", []interface{}{Specification}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implProfileServerStub) Remove(call __ipc.ServerCall) error {
+ return s.impl.Remove(call)
}
-func (__gen_c *clientStubProfile) Remove(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Remove", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implProfileServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubProfile) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubProfile) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubProfile) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubProfile wraps a server that implements
-// ProfileService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubProfile struct {
- repository.ServerStubProfile
-
- service ProfileService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubProfile) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
- if resp, err := __gen_s.ServerStubProfile.GetMethodTags(call, method); resp != nil || err != nil {
+func (s implProfileServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
+ if resp, err := s.ProfileServerStub.GetMethodTags(call, method); resp != nil || err != nil {
return resp, err
}
switch method {
@@ -573,97 +567,98 @@
}
}
-func (__gen_s *ServerStubProfile) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Put"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implProfileServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Put"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Specification", Type: 70},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 71},
},
}
- result.Methods["Remove"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Remove"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 71},
},
}
- result.Methods["Specification"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Specification"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 70},
{Name: "", Type: 71},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.Architecture", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.Format", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x3, Name: "Name"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "MajorVersion"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "MinorVersion"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.Architecture", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.Format", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x3, Name: "Name"},
+ __wiretype.FieldType{Type: 0x3, Name: "MajorVersion"},
+ __wiretype.FieldType{Type: 0x3, Name: "MinorVersion"},
},
"veyron.io/veyron/veyron/services/mgmt/profile.Library", []string(nil)},
- _gen_wiretype.MapType{Key: 0x43, Elem: 0x2, Name: "", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.OperatingSystem", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x41, Name: "Arch"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "Description"},
- _gen_wiretype.FieldType{Type: 0x42, Name: "Format"},
- _gen_wiretype.FieldType{Type: 0x44, Name: "Libraries"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "Label"},
- _gen_wiretype.FieldType{Type: 0x45, Name: "OS"},
+ __wiretype.MapType{Key: 0x43, Elem: 0x2, Name: "", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/services/mgmt/build.OperatingSystem", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x41, Name: "Arch"},
+ __wiretype.FieldType{Type: 0x3, Name: "Description"},
+ __wiretype.FieldType{Type: 0x42, Name: "Format"},
+ __wiretype.FieldType{Type: 0x44, Name: "Libraries"},
+ __wiretype.FieldType{Type: 0x3, Name: "Label"},
+ __wiretype.FieldType{Type: 0x45, Name: "OS"},
},
"veyron.io/veyron/veyron/services/mgmt/profile.Specification", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
- var ss _gen_ipc.ServiceSignature
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ var ss __ipc.ServiceSignature
var firstAdded int
- ss, _ = __gen_s.ServerStubProfile.Signature(call)
+ ss, _ = s.ProfileServerStub.Signature(call)
firstAdded = len(result.TypeDefs)
for k, v := range ss.Methods {
for i, _ := range v.InArgs {
- if v.InArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.InArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.InArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.InArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
for i, _ := range v.OutArgs {
- if v.OutArgs[i].Type >= _gen_wiretype.TypeIDFirst {
- v.OutArgs[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if v.OutArgs[i].Type >= __wiretype.TypeIDFirst {
+ v.OutArgs[i].Type += __wiretype.TypeID(firstAdded)
}
}
- if v.InStream >= _gen_wiretype.TypeIDFirst {
- v.InStream += _gen_wiretype.TypeID(firstAdded)
+ if v.InStream >= __wiretype.TypeIDFirst {
+ v.InStream += __wiretype.TypeID(firstAdded)
}
- if v.OutStream >= _gen_wiretype.TypeIDFirst {
- v.OutStream += _gen_wiretype.TypeID(firstAdded)
+ if v.OutStream >= __wiretype.TypeIDFirst {
+ v.OutStream += __wiretype.TypeID(firstAdded)
}
result.Methods[k] = v
}
//TODO(bprosnitz) combine type definitions from embeded interfaces in a way that doesn't cause duplication.
for _, d := range ss.TypeDefs {
switch wt := d.(type) {
- case _gen_wiretype.SliceType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.SliceType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.ArrayType:
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.ArrayType:
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.MapType:
- if wt.Key >= _gen_wiretype.TypeIDFirst {
- wt.Key += _gen_wiretype.TypeID(firstAdded)
+ case __wiretype.MapType:
+ if wt.Key >= __wiretype.TypeIDFirst {
+ wt.Key += __wiretype.TypeID(firstAdded)
}
- if wt.Elem >= _gen_wiretype.TypeIDFirst {
- wt.Elem += _gen_wiretype.TypeID(firstAdded)
+ if wt.Elem >= __wiretype.TypeIDFirst {
+ wt.Elem += __wiretype.TypeID(firstAdded)
}
d = wt
- case _gen_wiretype.StructType:
+ case __wiretype.StructType:
for i, fld := range wt.Fields {
- if fld.Type >= _gen_wiretype.TypeIDFirst {
- wt.Fields[i].Type += _gen_wiretype.TypeID(firstAdded)
+ if fld.Type >= __wiretype.TypeIDFirst {
+ wt.Fields[i].Type += __wiretype.TypeID(firstAdded)
}
}
d = wt
@@ -674,40 +669,3 @@
return result, nil
}
-
-func (__gen_s *ServerStubProfile) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubProfile) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubProfile) Specification(call _gen_ipc.ServerCall) (reply profile.Specification, err error) {
- reply, err = __gen_s.service.Specification(call)
- return
-}
-
-func (__gen_s *ServerStubProfile) Put(call _gen_ipc.ServerCall, Specification profile.Specification) (err error) {
- err = __gen_s.service.Put(call, Specification)
- return
-}
-
-func (__gen_s *ServerStubProfile) Remove(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.Remove(call)
- return
-}
diff --git a/services/mgmt/root/impl/dispatcher.go b/services/mgmt/root/impl/dispatcher.go
index 6cf5ee6..015f739 100644
--- a/services/mgmt/root/impl/dispatcher.go
+++ b/services/mgmt/root/impl/dispatcher.go
@@ -21,5 +21,5 @@
// DISPATCHER INTERFACE IMPLEMENTATION
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- return ipc.ReflectInvoker(root.NewServerRoot(d.state)), nil, nil
+ return ipc.ReflectInvoker(root.RootServer(d.state)), nil, nil
}
diff --git a/services/mgmt/root/root.vdl.go b/services/mgmt/root/root.vdl.go
index 452cff5..bf7a05e 100644
--- a/services/mgmt/root/root.vdl.go
+++ b/services/mgmt/root/root.vdl.go
@@ -6,111 +6,62 @@
package root
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// RootClientMethods is the client interface
+// containing Root methods.
+//
// Root is an interface to be implemented by a process with root level
// privileges.
-// Root is the interface the client binds and uses.
-// Root_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Root_ExcludingUniversal interface {
+type RootClientMethods interface {
// Reset waits for the given deadline (in milliseconds) and then
// restars the host node machine.
- Reset(ctx _gen_context.T, Deadline uint64, opts ..._gen_ipc.CallOpt) (err error)
-}
-type Root interface {
- _gen_ipc.UniversalServiceMethods
- Root_ExcludingUniversal
+ Reset(ctx __context.T, Deadline uint64, opts ...__ipc.CallOpt) error
}
-// RootService is the interface the server implements.
-type RootService interface {
-
- // Reset waits for the given deadline (in milliseconds) and then
- // restars the host node machine.
- Reset(context _gen_ipc.ServerContext, Deadline uint64) (err error)
+// RootClientStub adds universal methods to RootClientMethods.
+type RootClientStub interface {
+ RootClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindRoot returns the client stub implementing the Root
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindRoot(name string, opts ..._gen_ipc.BindOpt) (Root, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// RootClient returns a client stub for Root.
+func RootClient(name string, opts ...__ipc.BindOpt) RootClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubRoot{defaultClient: client, name: name}
-
- return stub, nil
+ return implRootClientStub{name, client}
}
-// NewServerRoot creates a new server stub.
-//
-// It takes a regular server implementing the RootService
-// interface, and returns a new server stub.
-func NewServerRoot(server RootService) interface{} {
- stub := &ServerStubRoot{
- service: server,
- }
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
- return stub
+type implRootClientStub struct {
+ name string
+ client __ipc.Client
}
-// clientStubRoot implements Root.
-type clientStubRoot struct {
- defaultClient _gen_ipc.Client
- name string
-}
-
-func (__gen_c *clientStubRoot) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
+func (c implRootClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
}
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+ return __veyron2.RuntimeFromContext(ctx).Client()
}
-func (__gen_c *clientStubRoot) Reset(ctx _gen_context.T, Deadline uint64, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Reset", []interface{}{Deadline}, opts...); err != nil {
+func (c implRootClientStub) Reset(ctx __context.T, i0 uint64, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Reset", []interface{}{i0}, opts...); err != nil {
return
}
if ierr := call.Finish(&err); ierr != nil {
@@ -119,51 +70,91 @@
return
}
-func (__gen_c *clientStubRoot) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
+func (c implRootClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubRoot) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
+func (c implRootClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubRoot) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+// RootServerMethods is the interface a server writer
+// implements for Root.
+//
+// Root is an interface to be implemented by a process with root level
+// privileges.
+type RootServerMethods interface {
+ // Reset waits for the given deadline (in milliseconds) and then
+ // restars the host node machine.
+ Reset(ctx __ipc.ServerContext, Deadline uint64) error
}
-// ServerStubRoot wraps a server that implements
-// RootService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubRoot struct {
- service RootService
- gs *_gen_ipc.GlobState
+// RootServerStubMethods is the server interface containing
+// Root methods, as expected by ipc.Server. The difference between
+// this interface and RootServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type RootServerStubMethods interface {
+ // Reset waits for the given deadline (in milliseconds) and then
+ // restars the host node machine.
+ Reset(call __ipc.ServerCall, Deadline uint64) error
}
-func (__gen_s *ServerStubRoot) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+// RootServerStub adds universal methods to RootServerStubMethods.
+type RootServerStub interface {
+ RootServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// RootServer returns a server stub for Root.
+// It converts an implementation of RootServerMethods into
+// an object that may be used by ipc.Server.
+func RootServer(impl RootServerMethods) RootServerStub {
+ stub := implRootServerStub{
+ 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
+ }
+ return stub
+}
+
+type implRootServerStub struct {
+ impl RootServerMethods
+ gs *__ipc.GlobState
+}
+
+func (s implRootServerStub) Reset(call __ipc.ServerCall, i0 uint64) error {
+ return s.impl.Reset(call, i0)
+}
+
+func (s implRootServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
+}
+
+func (s implRootServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Reset":
return []interface{}{}, nil
@@ -172,46 +163,20 @@
}
}
-func (__gen_s *ServerStubRoot) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Reset"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implRootServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Reset"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Deadline", Type: 53},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubRoot) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubRoot) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubRoot) Reset(call _gen_ipc.ServerCall, Deadline uint64) (err error) {
- err = __gen_s.service.Reset(call, Deadline)
- return
-}
diff --git a/services/mgmt/stats/impl/stats_invoker_test.go b/services/mgmt/stats/impl/stats_invoker_test.go
index e830fad..6a5b08d 100644
--- a/services/mgmt/stats/impl/stats_invoker_test.go
+++ b/services/mgmt/stats/impl/stats_invoker_test.go
@@ -64,10 +64,7 @@
histogram.Add(int64(i))
}
- c, err := stats.BindStats(naming.JoinAddressName(endpoint, ""))
- if err != nil {
- t.Errorf("BindStats: %v", err)
- }
+ c := stats.StatsClient(naming.JoinAddressName(endpoint, ""))
// Test Glob()
{
@@ -154,10 +151,7 @@
// Test Value()
{
- c, err := stats.BindStats(naming.JoinAddressName(endpoint, "//testing/foo/bar"))
- if err != nil {
- t.Errorf("BindStats: %v", err)
- }
+ c := stats.StatsClient(naming.JoinAddressName(endpoint, "//testing/foo/bar"))
value, err := c.Value(rt.R().NewContext())
if err != nil {
t.Errorf("unexpected error: %v", err)
@@ -169,10 +163,7 @@
// Test Value() with Histogram
{
- c, err := stats.BindStats(naming.JoinAddressName(endpoint, "//testing/hist/foo"))
- if err != nil {
- t.Errorf("BindStats: %v", err)
- }
+ c := stats.StatsClient(naming.JoinAddressName(endpoint, "//testing/hist/foo"))
value, err := c.Value(rt.R().NewContext())
if err != nil {
t.Errorf("unexpected error: %v", err)
diff --git a/services/mounttable/lib/collection_test_interface.vdl.go b/services/mounttable/lib/collection_test_interface.vdl.go
index 377eeb2..7095c00 100644
--- a/services/mounttable/lib/collection_test_interface.vdl.go
+++ b/services/mounttable/lib/collection_test_interface.vdl.go
@@ -4,119 +4,64 @@
package mounttable
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
-// Collection is the interface the client binds and uses.
-// Collection_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Collection_ExcludingUniversal interface {
+// CollectionClientMethods is the client interface
+// containing Collection methods.
+type CollectionClientMethods interface {
// Export sets the value for a name. Overwrite controls the behavior when
// an entry exists, if Overwrite is true, then the binding is replaced,
// otherwise the call fails with an error. The Val must be no larger than
// MaxSize bytes.
- Export(ctx _gen_context.T, Val string, Overwrite bool, opts ..._gen_ipc.CallOpt) (err error)
+ Export(ctx __context.T, Val string, Overwrite bool, opts ...__ipc.CallOpt) error
// Lookup retrieves the value associated with a name. Returns an error if
// there is no such binding.
- Lookup(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error)
-}
-type Collection interface {
- _gen_ipc.UniversalServiceMethods
- Collection_ExcludingUniversal
+ Lookup(__context.T, ...__ipc.CallOpt) ([]byte, error)
}
-// CollectionService is the interface the server implements.
-type CollectionService interface {
-
- // Export sets the value for a name. Overwrite controls the behavior when
- // an entry exists, if Overwrite is true, then the binding is replaced,
- // otherwise the call fails with an error. The Val must be no larger than
- // MaxSize bytes.
- Export(context _gen_ipc.ServerContext, Val string, Overwrite bool) (err error)
- // Lookup retrieves the value associated with a name. Returns an error if
- // there is no such binding.
- Lookup(context _gen_ipc.ServerContext) (reply []byte, err error)
+// CollectionClientStub adds universal methods to CollectionClientMethods.
+type CollectionClientStub interface {
+ CollectionClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindCollection returns the client stub implementing the Collection
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindCollection(name string, opts ..._gen_ipc.BindOpt) (Collection, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// CollectionClient returns a client stub for Collection.
+func CollectionClient(name string, opts ...__ipc.BindOpt) CollectionClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubCollection{defaultClient: client, name: name}
-
- return stub, nil
+ return implCollectionClientStub{name, client}
}
-// NewServerCollection creates a new server stub.
-//
-// It takes a regular server implementing the CollectionService
-// interface, and returns a new server stub.
-func NewServerCollection(server CollectionService) interface{} {
- stub := &ServerStubCollection{
- service: server,
- }
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
- return stub
+type implCollectionClientStub struct {
+ name string
+ client __ipc.Client
}
-// clientStubCollection implements Collection.
-type clientStubCollection struct {
- defaultClient _gen_ipc.Client
- name string
-}
-
-func (__gen_c *clientStubCollection) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
+func (c implCollectionClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
}
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+ return __veyron2.RuntimeFromContext(ctx).Client()
}
-func (__gen_c *clientStubCollection) Export(ctx _gen_context.T, Val string, Overwrite bool, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Export", []interface{}{Val, Overwrite}, opts...); err != nil {
+func (c implCollectionClientStub) Export(ctx __context.T, i0 string, i1 bool, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Export", []interface{}{i0, i1}, opts...); err != nil {
return
}
if ierr := call.Finish(&err); ierr != nil {
@@ -125,62 +70,113 @@
return
}
-func (__gen_c *clientStubCollection) Lookup(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Lookup", nil, opts...); err != nil {
+func (c implCollectionClientStub) Lookup(ctx __context.T, opts ...__ipc.CallOpt) (o0 []byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Lookup", nil, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubCollection) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
+func (c implCollectionClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubCollection) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
+func (c implCollectionClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
return
}
- if ierr := call.Finish(&reply, &err); ierr != nil {
+ if ierr := call.Finish(&o0, &err); ierr != nil {
err = ierr
}
return
}
-func (__gen_c *clientStubCollection) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+// CollectionServerMethods is the interface a server writer
+// implements for Collection.
+type CollectionServerMethods interface {
+ // Export sets the value for a name. Overwrite controls the behavior when
+ // an entry exists, if Overwrite is true, then the binding is replaced,
+ // otherwise the call fails with an error. The Val must be no larger than
+ // MaxSize bytes.
+ Export(ctx __ipc.ServerContext, Val string, Overwrite bool) error
+ // Lookup retrieves the value associated with a name. Returns an error if
+ // there is no such binding.
+ Lookup(__ipc.ServerContext) ([]byte, error)
}
-// ServerStubCollection wraps a server that implements
-// CollectionService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubCollection struct {
- service CollectionService
- gs *_gen_ipc.GlobState
+// CollectionServerStubMethods is the server interface containing
+// Collection methods, as expected by ipc.Server. The difference between
+// this interface and CollectionServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type CollectionServerStubMethods interface {
+ // Export sets the value for a name. Overwrite controls the behavior when
+ // an entry exists, if Overwrite is true, then the binding is replaced,
+ // otherwise the call fails with an error. The Val must be no larger than
+ // MaxSize bytes.
+ Export(call __ipc.ServerCall, Val string, Overwrite bool) error
+ // Lookup retrieves the value associated with a name. Returns an error if
+ // there is no such binding.
+ Lookup(__ipc.ServerCall) ([]byte, error)
}
-func (__gen_s *ServerStubCollection) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+// CollectionServerStub adds universal methods to CollectionServerStubMethods.
+type CollectionServerStub interface {
+ CollectionServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// CollectionServer returns a server stub for Collection.
+// It converts an implementation of CollectionServerMethods into
+// an object that may be used by ipc.Server.
+func CollectionServer(impl CollectionServerMethods) CollectionServerStub {
+ stub := implCollectionServerStub{
+ 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
+ }
+ return stub
+}
+
+type implCollectionServerStub struct {
+ impl CollectionServerMethods
+ gs *__ipc.GlobState
+}
+
+func (s implCollectionServerStub) Export(call __ipc.ServerCall, i0 string, i1 bool) error {
+ return s.impl.Export(call, i0, i1)
+}
+
+func (s implCollectionServerStub) Lookup(call __ipc.ServerCall) ([]byte, error) {
+ return s.impl.Lookup(call)
+}
+
+func (s implCollectionServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
+}
+
+func (s implCollectionServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Export":
return []interface{}{}, nil
@@ -191,59 +187,28 @@
}
}
-func (__gen_s *ServerStubCollection) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Export"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implCollectionServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Export"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Val", Type: 3},
{Name: "Overwrite", Type: 2},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["Lookup"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["Lookup"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 67},
{Name: "", Type: 65},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}}
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubCollection) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubCollection) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubCollection) Export(call _gen_ipc.ServerCall, Val string, Overwrite bool) (err error) {
- err = __gen_s.service.Export(call, Val, Overwrite)
- return
-}
-
-func (__gen_s *ServerStubCollection) Lookup(call _gen_ipc.ServerCall) (reply []byte, err error) {
- reply, err = __gen_s.service.Lookup(call)
- return
-}
diff --git a/services/mounttable/lib/collectionserver_test.go b/services/mounttable/lib/collectionserver_test.go
index 4f1c5ff..3822118 100644
--- a/services/mounttable/lib/collectionserver_test.go
+++ b/services/mounttable/lib/collectionserver_test.go
@@ -39,7 +39,7 @@
return nil
}
-// Export implements CollectionService.Export.
+// Export implements CollectionServerMethods.Export.
func (c *rpcContext) Export(ctx ipc.ServerCall, val []byte, overwrite bool) error {
c.Lock()
defer c.Unlock()
@@ -50,7 +50,7 @@
return verror.Make(naming.ErrNameExists, ctx, c.name)
}
-// Lookup implements CollectionService.Lookup.
+// Lookup implements CollectionServerMethods.Lookup.
func (c *rpcContext) Lookup(ctx ipc.ServerCall) ([]byte, error) {
c.Lock()
defer c.Unlock()
diff --git a/services/mounttable/lib/mounttable.go b/services/mounttable/lib/mounttable.go
index f13dd72..e01a03e 100644
--- a/services/mounttable/lib/mounttable.go
+++ b/services/mounttable/lib/mounttable.go
@@ -107,7 +107,7 @@
ms.elems = strings.Split(name, "/")
ms.cleanedElems = strings.Split(strings.TrimLeft(path.Clean(name), "/"), "/")
}
- return ipc.ReflectInvoker(mounttable.NewServerMountTable(ms)), ms, nil
+ return ipc.ReflectInvoker(mounttable.MountTableServer(ms)), ms, nil
}
// findNode returns the node for the name path represented by elems. If none exists and create is false, return nil.
@@ -365,7 +365,7 @@
name string
}
-func (mt *mountTable) globStep(n *node, name string, pattern *glob.Glob, context ipc.ServerContext, reply mounttable.GlobbableServiceGlobStream) {
+func (mt *mountTable) globStep(n *node, name string, pattern *glob.Glob, context mounttable.GlobbableGlobContext) {
vlog.VI(2).Infof("globStep(%s, %s)", name, pattern)
if mt.acls != nil {
@@ -378,7 +378,7 @@
}
}
- sender := reply.SendStream()
+ sender := context.SendStream()
// If this is a mount point, we're done.
if m := n.mount; m != nil {
// Garbage-collect if expired.
@@ -410,7 +410,7 @@
// Recurse through the children.
for k, c := range n.children {
if ok, _, suffix := pattern.MatchInitialSegment(k); ok {
- mt.globStep(c, naming.Join(name, k), suffix, context, reply)
+ mt.globStep(c, naming.Join(name, k), suffix, context)
}
}
}
@@ -418,7 +418,7 @@
// Glob finds matches in the namespace. If we reach a mount point before matching the
// whole pattern, return that mount point.
// pattern is a glob pattern as defined by the veyron/lib/glob package.
-func (ms *mountContext) Glob(context ipc.ServerContext, pattern string, reply mounttable.GlobbableServiceGlobStream) error {
+func (ms *mountContext) Glob(context mounttable.GlobbableGlobContext, pattern string) error {
vlog.VI(2).Infof("mt.Glob %v", ms.elems)
g, err := glob.Parse(pattern)
@@ -439,15 +439,15 @@
// name back to the client.
n := mt.findNode(ms.cleanedElems, false)
if n == nil {
- ms.linkToLeaf(reply)
+ ms.linkToLeaf(context)
return nil
}
- mt.globStep(n, "", g, context, reply)
+ mt.globStep(n, "", g, context)
return nil
}
-func (ms *mountContext) linkToLeaf(reply mounttable.GlobbableServiceGlobStream) {
+func (ms *mountContext) linkToLeaf(stream mounttable.GlobbableGlobServerStream) {
n, elems := ms.mt.walk(ms.mt.root, ms.cleanedElems)
if n == nil {
return
@@ -456,5 +456,5 @@
for i, s := range servers {
servers[i].Server = naming.Join(s.Server, slashSlashJoin(elems))
}
- reply.SendStream().Send(types.MountEntry{Name: "", Servers: servers})
+ stream.SendStream().Send(types.MountEntry{Name: "", Servers: servers})
}
diff --git a/services/mounttable/lib/neighborhood.go b/services/mounttable/lib/neighborhood.go
index 868ecfe..d29f8f1 100644
--- a/services/mounttable/lib/neighborhood.go
+++ b/services/mounttable/lib/neighborhood.go
@@ -135,7 +135,7 @@
elems: elems,
nh: nh,
}
- return ipc.ReflectInvoker(mounttable.NewServerMountTable(ns)), nh, nil
+ return ipc.ReflectInvoker(mounttable.MountTableServer(ns)), nh, nil
}
func (nh *neighborhood) Authorize(context security.Context) error {
@@ -257,7 +257,7 @@
}
// Glob implements Glob
-func (ns *neighborhoodService) Glob(ctx ipc.ServerContext, pattern string, reply mounttable.GlobbableServiceGlobStream) error {
+func (ns *neighborhoodService) Glob(ctx mounttable.GlobbableGlobContext, pattern string) error {
g, err := glob.Parse(pattern)
if err != nil {
return err
@@ -266,7 +266,7 @@
// return all neighbors that match the first element of the pattern.
nh := ns.nh
- sender := reply.SendStream()
+ sender := ctx.SendStream()
switch len(ns.elems) {
case 0:
for k, n := range nh.neighbors() {
diff --git a/services/security/discharger.vdl.go b/services/security/discharger.vdl.go
index b36f608..f7dd8b8 100644
--- a/services/security/discharger.vdl.go
+++ b/services/security/discharger.vdl.go
@@ -6,25 +6,24 @@
import (
"veyron.io/veyron/veyron2/security"
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
+const _ = __wiretype.TypeIDInvalid
+// DischargerClientMethods is the client interface
+// containing Discharger methods.
+//
// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
-// Discharger is the interface the client binds and uses.
-// Discharger_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type Discharger_ExcludingUniversal interface {
+type DischargerClientMethods interface {
// Discharge is called by a principal that holds a blessing with a third
// party caveat and seeks to get a discharge that proves the fulfillment of
// this caveat.
@@ -33,148 +32,145 @@
// respectively. (not enforced here because vdl does not know these types)
// TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
// and Discharge and use those here?
- Discharge(ctx _gen_context.T, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error)
-}
-type Discharger interface {
- _gen_ipc.UniversalServiceMethods
- Discharger_ExcludingUniversal
+ Discharge(ctx __context.T, Caveat __vdlutil.Any, Impetus security.DischargeImpetus, opts ...__ipc.CallOpt) (Discharge __vdlutil.Any, err error)
}
-// DischargerService is the interface the server implements.
-type DischargerService interface {
-
- // Discharge is called by a principal that holds a blessing with a third
- // party caveat and seeks to get a discharge that proves the fulfillment of
- // this caveat.
- //
- // Caveat and Discharge are of type ThirdPartyCaveat and Discharge
- // respectively. (not enforced here because vdl does not know these types)
- // TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
- // and Discharge and use those here?
- Discharge(context _gen_ipc.ServerContext, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus) (reply _gen_vdlutil.Any, err error)
+// DischargerClientStub adds universal methods to DischargerClientMethods.
+type DischargerClientStub interface {
+ DischargerClientMethods
+ __ipc.UniversalServiceMethods
}
-// BindDischarger returns the client stub implementing the Discharger
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindDischarger(name string, opts ..._gen_ipc.BindOpt) (Discharger, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
+// DischargerClient returns a client stub for Discharger.
+func DischargerClient(name string, opts ...__ipc.BindOpt) DischargerClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
}
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
}
- stub := &clientStubDischarger{defaultClient: client, name: name}
-
- return stub, nil
+ return implDischargerClientStub{name, client}
}
-// NewServerDischarger creates a new server stub.
+type implDischargerClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implDischargerClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implDischargerClientStub) Discharge(ctx __context.T, i0 __vdlutil.Any, i1 security.DischargeImpetus, opts ...__ipc.CallOpt) (o0 __vdlutil.Any, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Discharge", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implDischargerClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implDischargerClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// DischargerServerMethods is the interface a server writer
+// implements for Discharger.
//
-// It takes a regular server implementing the DischargerService
-// interface, and returns a new server stub.
-func NewServerDischarger(server DischargerService) interface{} {
- stub := &ServerStubDischarger{
- service: server,
+// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
+type DischargerServerMethods interface {
+ // Discharge is called by a principal that holds a blessing with a third
+ // party caveat and seeks to get a discharge that proves the fulfillment of
+ // this caveat.
+ //
+ // Caveat and Discharge are of type ThirdPartyCaveat and Discharge
+ // respectively. (not enforced here because vdl does not know these types)
+ // TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
+ // and Discharge and use those here?
+ Discharge(ctx __ipc.ServerContext, Caveat __vdlutil.Any, Impetus security.DischargeImpetus) (Discharge __vdlutil.Any, err error)
+}
+
+// DischargerServerStubMethods is the server interface containing
+// Discharger methods, as expected by ipc.Server. The difference between
+// this interface and DischargerServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type DischargerServerStubMethods interface {
+ // Discharge is called by a principal that holds a blessing with a third
+ // party caveat and seeks to get a discharge that proves the fulfillment of
+ // this caveat.
+ //
+ // Caveat and Discharge are of type ThirdPartyCaveat and Discharge
+ // respectively. (not enforced here because vdl does not know these types)
+ // TODO(ataly,ashankar): Figure out a VDL representation for ThirdPartyCaveat
+ // and Discharge and use those here?
+ Discharge(call __ipc.ServerCall, Caveat __vdlutil.Any, Impetus security.DischargeImpetus) (Discharge __vdlutil.Any, err error)
+}
+
+// DischargerServerStub adds universal methods to DischargerServerStubMethods.
+type DischargerServerStub interface {
+ DischargerServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// DischargerServer returns a server stub for Discharger.
+// It converts an implementation of DischargerServerMethods into
+// an object that may be used by ipc.Server.
+func DischargerServer(impl DischargerServerMethods) DischargerServerStub {
+ stub := implDischargerServerStub{
+ impl: impl,
}
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubDischarger implements Discharger.
-type clientStubDischarger struct {
- defaultClient _gen_ipc.Client
- name string
+type implDischargerServerStub struct {
+ impl DischargerServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubDischarger) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implDischargerServerStub) Discharge(call __ipc.ServerCall, i0 __vdlutil.Any, i1 security.DischargeImpetus) (__vdlutil.Any, error) {
+ return s.impl.Discharge(call, i0, i1)
}
-func (__gen_c *clientStubDischarger) Discharge(ctx _gen_context.T, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus, opts ..._gen_ipc.CallOpt) (reply _gen_vdlutil.Any, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Discharge", []interface{}{Caveat, Impetus}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implDischargerServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubDischarger) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubDischarger) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubDischarger) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubDischarger wraps a server that implements
-// DischargerService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubDischarger struct {
- service DischargerService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubDischarger) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implDischargerServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "Discharge":
return []interface{}{security.Label(2)}, nil
@@ -183,55 +179,29 @@
}
}
-func (__gen_s *ServerStubDischarger) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["Discharge"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implDischargerServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["Discharge"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "Caveat", Type: 65},
{Name: "Impetus", Type: 69},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "Discharge", Type: 65},
{Name: "err", Type: 70},
},
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.BlessingPattern", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x43, Name: "Server"},
- _gen_wiretype.FieldType{Type: 0x3, Name: "Method"},
- _gen_wiretype.FieldType{Type: 0x44, Name: "Arguments"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "anydata", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x3, Name: "veyron.io/veyron/veyron2/security.BlessingPattern", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x41, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x43, Name: "Server"},
+ __wiretype.FieldType{Type: 0x3, Name: "Method"},
+ __wiretype.FieldType{Type: 0x44, Name: "Arguments"},
},
"veyron.io/veyron/veyron2/security.DischargeImpetus", []string(nil)},
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}}
return result, nil
}
-
-func (__gen_s *ServerStubDischarger) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
- }
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
-}
-
-func (__gen_s *ServerStubDischarger) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
-}
-
-func (__gen_s *ServerStubDischarger) Discharge(call _gen_ipc.ServerCall, Caveat _gen_vdlutil.Any, Impetus security.DischargeImpetus) (reply _gen_vdlutil.Any, err error) {
- reply, err = __gen_s.service.Discharge(call, Caveat, Impetus)
- return
-}
diff --git a/services/security/discharger/discharger.go b/services/security/discharger/discharger.go
index f66bbdd..5dbb583 100644
--- a/services/security/discharger/discharger.go
+++ b/services/security/discharger/discharger.go
@@ -33,6 +33,6 @@
// NewDischarger returns a discharger service implementation that grants discharges using the MintDischarge
// on the principal receiving the RPC.
-func NewDischarger() services.DischargerService {
+func NewDischarger() services.DischargerServerMethods {
return dischargerd{}
}
diff --git a/tools/application/impl.go b/tools/application/impl.go
index 6b99e92..2d06ad5 100644
--- a/tools/application/impl.go
+++ b/tools/application/impl.go
@@ -19,7 +19,7 @@
"veyron.io/veyron/veyron2/services/mgmt/application"
)
-func getEnvelopeJSON(ctx context.T, app repository.Application, profiles string) ([]byte, error) {
+func getEnvelopeJSON(ctx context.T, app repository.ApplicationClientMethods, profiles string) ([]byte, error) {
env, err := app.Match(ctx, strings.Split(profiles, ","))
if err != nil {
return nil, err
@@ -31,7 +31,7 @@
return j, nil
}
-func putEnvelopeJSON(ctx context.T, app repository.Application, profiles string, j []byte) error {
+func putEnvelopeJSON(ctx context.T, app repository.ApplicationClientMethods, profiles string, j []byte) error {
var env application.Envelope
if err := json.Unmarshal(j, &env); err != nil {
return fmt.Errorf("Unmarshal(%v) failed: %v", string(j), err)
@@ -67,10 +67,7 @@
return cmd.UsageErrorf("match: incorrect number of arguments, expected %d, got %d", expected, got)
}
name, profiles := args[0], args[1]
- app, err := repository.BindApplication(name)
- if err != nil {
- return fmt.Errorf("BindApplication(%v) failed: %v", name, err)
- }
+ app := repository.ApplicationClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
j, err := getEnvelopeJSON(ctx, app, profiles)
@@ -98,10 +95,7 @@
return cmd.UsageErrorf("put: incorrect number of arguments, expected %d, got %d", expected, got)
}
name, profiles, envelope := args[0], args[1], args[2]
- app, err := repository.BindApplication(name)
- if err != nil {
- return fmt.Errorf("BindApplication(%v) failed: %v", name, err)
- }
+ app := repository.ApplicationClient(name)
j, err := ioutil.ReadFile(envelope)
if err != nil {
return fmt.Errorf("ReadFile(%v): %v", envelope, err)
@@ -131,13 +125,10 @@
return cmd.UsageErrorf("remove: incorrect number of arguments, expected %d, got %d", expected, got)
}
name, profile := args[0], args[1]
- app, err := repository.BindApplication(name)
- if err != nil {
- return fmt.Errorf("BindApplication(%v) failed: %v", name, err)
- }
+ app := repository.ApplicationClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- if err = app.Remove(ctx, profile); err != nil {
+ if err := app.Remove(ctx, profile); err != nil {
return err
}
fmt.Fprintln(cmd.Stdout(), "Application envelope removed successfully.")
@@ -160,10 +151,7 @@
return cmd.UsageErrorf("edit: incorrect number of arguments, expected %d, got %d", expected, got)
}
name, profile := args[0], args[1]
- app, err := repository.BindApplication(name)
- if err != nil {
- return fmt.Errorf("BindApplication(%v) failed: %v", name, err)
- }
+ app := repository.ApplicationClient(name)
f, err := ioutil.TempFile("", "application-edit-")
if err != nil {
return fmt.Errorf("TempFile() failed: %v", err)
diff --git a/tools/application/impl_test.go b/tools/application/impl_test.go
index bd323c9..b107a50 100644
--- a/tools/application/impl_test.go
+++ b/tools/application/impl_test.go
@@ -69,7 +69,7 @@
}
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerApplication(&server{suffix: suffix}))
+ invoker := ipc.ReflectInvoker(repository.ApplicationServer(&server{suffix: suffix}))
return invoker, nil, nil
}
diff --git a/tools/associate/doc.go b/tools/associate/doc.go
index 5be1076..6133bbe 100644
--- a/tools/associate/doc.go
+++ b/tools/associate/doc.go
@@ -27,7 +27,7 @@
Associate List
-Lists all account associations
+Lists all account associations
Usage:
associate list <nodemanager>.
diff --git a/tools/associate/impl.go b/tools/associate/impl.go
index a60f649..b8f580b 100644
--- a/tools/associate/impl.go
+++ b/tools/associate/impl.go
@@ -27,11 +27,7 @@
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- nodeStub, err := node.BindNode(args[0])
- if err != nil {
- return fmt.Errorf("BindNode(%s) failed: %v", args[0], err)
- }
- assocs, err := nodeStub.ListAssociations(ctx)
+ assocs, err := node.NodeClient(args[0]).ListAssociations(ctx)
if err != nil {
return fmt.Errorf("ListAssociations failed: %v", err)
}
@@ -60,11 +56,7 @@
}
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- nodeStub, err := node.BindNode(args[0])
- if err != nil {
- return fmt.Errorf("BindNode(%s) failed: %v", args[0], err)
- }
- return nodeStub.AssociateAccount(ctx, args[2:], args[1])
+ return node.NodeClient(args[0]).AssociateAccount(ctx, args[2:], args[1])
}
var cmdRemove = &cmdline.Command{
@@ -84,12 +76,7 @@
}
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- nodeStub, err := node.BindNode(args[0])
- if err != nil {
- return fmt.Errorf("BindNode(%s) failed: %v", args[0], err)
- }
-
- return nodeStub.AssociateAccount(ctx, args[1:], "")
+ return node.NodeClient(args[0]).AssociateAccount(ctx, args[1:], "")
}
func root() *cmdline.Command {
diff --git a/tools/associate/impl_test.go b/tools/associate/impl_test.go
index 54850d0..dbb2ecc 100644
--- a/tools/associate/impl_test.go
+++ b/tools/associate/impl_test.go
@@ -78,7 +78,7 @@
func (i *mockNodeInvoker) GetACL(ipc.ServerContext) (security.ACL, string, error) {
return security.ACL{}, "", nil
}
-func (i *mockNodeInvoker) Glob(ctx ipc.ServerContext, pattern string, stream mounttable.GlobbableServiceGlobStream) error {
+func (i *mockNodeInvoker) Glob(ctx mounttable.GlobbableGlobContext, pattern string) error {
return nil
}
@@ -92,7 +92,7 @@
}
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(node.NewServerNode(&mockNodeInvoker{tape: d.tape, t: d.t}))
+ invoker := ipc.ReflectInvoker(node.NodeServer(&mockNodeInvoker{tape: d.tape, t: d.t}))
return invoker, nil, nil
}
diff --git a/tools/binary/impl_test.go b/tools/binary/impl_test.go
index d2379ec..0dbd6b0 100644
--- a/tools/binary/impl_test.go
+++ b/tools/binary/impl_test.go
@@ -40,9 +40,9 @@
return nil
}
-func (s *server) Download(_ ipc.ServerContext, _ int32, stream repository.BinaryServiceDownloadStream) error {
+func (s *server) Download(ctx repository.BinaryDownloadContext, _ int32) error {
vlog.Infof("Download() was called. suffix=%v", s.suffix)
- sender := stream.SendStream()
+ sender := ctx.SendStream()
sender.Send([]byte("Hello"))
sender.Send([]byte("World"))
return nil
@@ -62,9 +62,9 @@
return []binary.PartInfo{part}, nil
}
-func (s *server) Upload(_ ipc.ServerContext, _ int32, stream repository.BinaryServiceUploadStream) error {
+func (s *server) Upload(ctx repository.BinaryUploadContext, _ int32) error {
vlog.Infof("Upload() was called. suffix=%v", s.suffix)
- rStream := stream.RecvStream()
+ rStream := ctx.RecvStream()
for rStream.Advance() {
}
return nil
@@ -78,7 +78,7 @@
}
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerBinary(&server{suffix: suffix}))
+ invoker := ipc.ReflectInvoker(repository.BinaryServer(&server{suffix: suffix}))
return invoker, nil, nil
}
diff --git a/tools/build/impl.go b/tools/build/impl.go
index d047478..1d39669 100644
--- a/tools/build/impl.go
+++ b/tools/build/impl.go
@@ -142,11 +142,7 @@
go func() {
defer close(binaries)
rt.Init()
- client, err := vbuild.BindBuilder(name)
- if err != nil {
- errchan <- fmt.Errorf("BindBuilder(%v) failed: %v", name, err)
- return
- }
+ client := vbuild.BuilderClient(name)
stream, err := client.Build(ctx, vbuild.Architecture(flagArch), vbuild.OperatingSystem(flagOS))
if err != nil {
errchan <- fmt.Errorf("Build() failed: %v", err)
diff --git a/tools/build/impl_test.go b/tools/build/impl_test.go
index 54bab19..2778896 100644
--- a/tools/build/impl_test.go
+++ b/tools/build/impl_test.go
@@ -20,9 +20,9 @@
type mock struct{}
-func (mock) Build(_ ipc.ServerContext, arch build.Architecture, opsys build.OperatingSystem, stream build.BuilderServiceBuildStream) ([]byte, error) {
+func (mock) Build(ctx build.BuilderBuildContext, arch build.Architecture, opsys build.OperatingSystem) ([]byte, error) {
vlog.VI(2).Infof("Build(%v, %v) was called", arch, opsys)
- iterator := stream.RecvStream()
+ iterator := ctx.RecvStream()
for iterator.Advance() {
}
if err := iterator.Err(); err != nil {
@@ -49,7 +49,7 @@
t.Fatalf("Listen(%s) failed: %v", profiles.LocalListenSpec, err)
}
unpublished := ""
- if err := server.Serve(unpublished, build.NewServerBuilder(&mock{}), nil); err != nil {
+ if err := server.Serve(unpublished, build.BuilderServer(&mock{}), nil); err != nil {
t.Fatalf("Serve(%v) failed: %v", unpublished, err)
}
return server, endpoint
diff --git a/tools/debug/impl.go b/tools/debug/impl.go
index 3b4ba10..36faee4 100644
--- a/tools/debug/impl.go
+++ b/tools/debug/impl.go
@@ -143,10 +143,7 @@
return cmd.UsageErrorf("read: incorrect number of arguments, got %d, want %d", got, want)
}
name := args[0]
- lf, err := logreader.BindLogFile(name)
- if err != nil {
- return err
- }
+ lf := logreader.LogFileClient(name)
stream, err := lf.ReadLog(rt.R().NewContext(), startPos, int32(numEntries), follow)
if err != nil {
return err
@@ -189,10 +186,7 @@
return cmd.UsageErrorf("size: incorrect number of arguments, got %d, want %d", got, want)
}
name := args[0]
- lf, err := logreader.BindLogFile(name)
- if err != nil {
- return err
- }
+ lf := logreader.LogFileClient(name)
size, err := lf.Size(rt.R().NewContext())
if err != nil {
return err
@@ -250,14 +244,9 @@
func doValue(ctx context.T, name string, output chan<- string, errors chan<- error, wg *sync.WaitGroup) {
defer wg.Done()
- s, err := stats.BindStats(name)
- if err != nil {
- errors <- fmt.Errorf("%s: %v", name, err)
- return
- }
ctx, cancel := ctx.WithTimeout(time.Minute)
defer cancel()
- v, err := s.Value(ctx)
+ v, err := stats.StatsClient(name).Value(ctx)
if err != nil {
errors <- fmt.Errorf("%s: %v", name, err)
return
@@ -322,11 +311,7 @@
if len(root) != 0 {
name = naming.JoinAddressName(root, name)
}
- c, err := watch.BindGlobWatcher(name)
- if err != nil {
- errors <- fmt.Errorf("%s: %v", name, err)
- return
- }
+ c := watch.GlobWatcherClient(name)
for retry := false; ; retry = true {
if retry {
time.Sleep(10 * time.Second)
@@ -445,11 +430,7 @@
}
func showPProfProfiles(cmd *cmdline.Command, name string) error {
- pp, err := pprof.BindPProf(name)
- if err != nil {
- return err
- }
- v, err := pp.Profiles(rt.R().NewContext())
+ v, err := pprof.PProfClient(name).Profiles(rt.R().NewContext())
if err != nil {
return err
}
diff --git a/tools/mounttable/impl.go b/tools/mounttable/impl.go
index b37d5f6..1cb8aac 100644
--- a/tools/mounttable/impl.go
+++ b/tools/mounttable/impl.go
@@ -14,7 +14,7 @@
"veyron.io/veyron/veyron2/services/mounttable/types"
)
-func bindMT(ctx context.T, name string) (mounttable.MountTable, error) {
+func bindMT(ctx context.T, name string) (mounttable.MountTableClientMethods, error) {
e, err := rt.R().Namespace().ResolveToMountTableX(ctx, name)
if err != nil {
return nil, err
@@ -27,7 +27,7 @@
servers = append(servers, naming.JoinAddressName(s.Server, e.Name))
}
fmt.Println(servers)
- return mounttable.BindMountTable(servers[0])
+ return mounttable.MountTableClient(servers[0]), nil
}
var cmdGlob = &cmdline.Command{
diff --git a/tools/mounttable/impl_test.go b/tools/mounttable/impl_test.go
index fdfc5d1..bf0a94f 100644
--- a/tools/mounttable/impl_test.go
+++ b/tools/mounttable/impl_test.go
@@ -21,9 +21,9 @@
suffix string
}
-func (s *server) Glob(_ ipc.ServerContext, pattern string, stream mounttable.GlobbableServiceGlobStream) error {
+func (s *server) Glob(ctx mounttable.GlobbableGlobContext, pattern string) error {
vlog.VI(2).Infof("Glob() was called. suffix=%v pattern=%q", s.suffix, pattern)
- sender := stream.SendStream()
+ sender := ctx.SendStream()
sender.Send(types.MountEntry{"name1", []types.MountedServer{{"server1", 123}}, false})
sender.Send(types.MountEntry{"name2", []types.MountedServer{{"server2", 456}, {"server3", 789}}, false})
return nil
@@ -57,7 +57,7 @@
}
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(mounttable.NewServerMountTable(&server{suffix: suffix}))
+ invoker := ipc.ReflectInvoker(mounttable.MountTableServer(&server{suffix: suffix}))
return invoker, nil, nil
}
diff --git a/tools/principal/main.go b/tools/principal/main.go
index fdf3bef..f865365 100644
--- a/tools/principal/main.go
+++ b/tools/principal/main.go
@@ -418,10 +418,7 @@
defer cancel()
var reply security.WireBlessings
- blesser, err := identity.BindMacaroonBlesser(service)
- if err == nil {
- reply, err = blesser.Bless(ctx, macaroon)
- }
+ reply, err = identity.MacaroonBlesserClient(service).Bless(ctx, macaroon)
if err != nil {
return fmt.Errorf("failed to get blessing from %q: %v", service, err)
}
diff --git a/tools/profile/impl.go b/tools/profile/impl.go
index 5ed96b1..2216a60 100644
--- a/tools/profile/impl.go
+++ b/tools/profile/impl.go
@@ -26,10 +26,7 @@
return cmd.UsageErrorf("label: incorrect number of arguments, expected %d, got %d", expected, got)
}
name := args[0]
- p, err := repository.BindProfile(name)
- if err != nil {
- return fmt.Errorf("BindProfile(%v) failed: %v", name, err)
- }
+ p := repository.ProfileClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
label, err := p.Label(ctx)
@@ -54,10 +51,7 @@
return cmd.UsageErrorf("description: incorrect number of arguments, expected %d, got %d", expected, got)
}
name := args[0]
- p, err := repository.BindProfile(name)
- if err != nil {
- return fmt.Errorf("BindProfile(%v) failed: %v", name, err)
- }
+ p := repository.ProfileClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
desc, err := p.Description(ctx)
@@ -82,10 +76,7 @@
return cmd.UsageErrorf("spec: incorrect number of arguments, expected %d, got %d", expected, got)
}
name := args[0]
- p, err := repository.BindProfile(name)
- if err != nil {
- return fmt.Errorf("BindProfile(%v) failed: %v", name, err)
- }
+ p := repository.ProfileClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
spec, err := p.Specification(ctx)
@@ -110,10 +101,7 @@
return cmd.UsageErrorf("put: incorrect number of arguments, expected %d, got %d", expected, got)
}
name := args[0]
- p, err := repository.BindProfile(name)
- if err != nil {
- return fmt.Errorf("BindProfile(%v) failed: %v", name, err)
- }
+ p := repository.ProfileClient(name)
// TODO(rthellend): Read an actual specification from a file.
spec := profile.Specification{
@@ -147,13 +135,10 @@
return cmd.UsageErrorf("remove: incorrect number of arguments, expected %d, got %d", expected, got)
}
name := args[0]
- p, err := repository.BindProfile(name)
- if err != nil {
- return fmt.Errorf("BindProfile(%v) failed: %v", name, err)
- }
+ p := repository.ProfileClient(name)
ctx, cancel := rt.R().NewContext().WithTimeout(time.Minute)
defer cancel()
- if err = p.Remove(ctx); err != nil {
+ if err := p.Remove(ctx); err != nil {
return err
}
fmt.Fprintln(cmd.Stdout(), "Profile removed successfully.")
diff --git a/tools/profile/impl_test.go b/tools/profile/impl_test.go
index dd8a329..fde8b26 100644
--- a/tools/profile/impl_test.go
+++ b/tools/profile/impl_test.go
@@ -80,7 +80,7 @@
}
func (d *dispatcher) Lookup(suffix, method string) (interface{}, security.Authorizer, error) {
- invoker := ipc.ReflectInvoker(repository.NewServerProfile(&server{suffix: suffix}))
+ invoker := ipc.ReflectInvoker(repository.ProfileServer(&server{suffix: suffix}))
return invoker, nil, nil
}
diff --git a/tools/vrpc/impl_test.go b/tools/vrpc/impl_test.go
index bbff9a4..29954dd 100644
--- a/tools/vrpc/impl_test.go
+++ b/tools/vrpc/impl_test.go
@@ -116,9 +116,9 @@
return i1, i2, nil
}
-func (*server) StreamingOutput(call ipc.ServerContext, nStream int32, item bool, reply test_base.TypeTesterServiceStreamingOutputStream) error {
+func (*server) StreamingOutput(ctx test_base.TypeTesterStreamingOutputContext, nStream int32, item bool) error {
vlog.VI(2).Info("StreamingOutput(%v,%v) was called.", nStream, item)
- sender := reply.SendStream()
+ sender := ctx.SendStream()
for i := int32(0); i < nStream; i++ {
sender.Send(item)
}
@@ -126,7 +126,7 @@
}
func startServer(t *testing.T, r veyron2.Runtime) (ipc.Server, naming.Endpoint, error) {
- obj := test_base.NewServerTypeTester(&server{})
+ obj := test_base.TypeTesterServer(&server{})
server, err := r.NewServer()
if err != nil {
t.Errorf("NewServer failed: %v", err)
diff --git a/tools/vrpc/test_base/test_base.vdl.go b/tools/vrpc/test_base/test_base.vdl.go
index ef4e9cf..9304457 100644
--- a/tools/vrpc/test_base/test_base.vdl.go
+++ b/tools/vrpc/test_base/test_base.vdl.go
@@ -4,156 +4,382 @@
package test_base
import (
- // The non-user imports are prefixed with "_gen_" to prevent collisions.
- _gen_io "io"
- _gen_veyron2 "veyron.io/veyron/veyron2"
- _gen_context "veyron.io/veyron/veyron2/context"
- _gen_ipc "veyron.io/veyron/veyron2/ipc"
- _gen_naming "veyron.io/veyron/veyron2/naming"
- _gen_vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
- _gen_wiretype "veyron.io/veyron/veyron2/wiretype"
+ // The non-user imports are prefixed with "__" to prevent collisions.
+ __io "io"
+ __veyron2 "veyron.io/veyron/veyron2"
+ __context "veyron.io/veyron/veyron2/context"
+ __ipc "veyron.io/veyron/veyron2/ipc"
+ __vdlutil "veyron.io/veyron/veyron2/vdl/vdlutil"
+ __wiretype "veyron.io/veyron/veyron2/wiretype"
)
+// TODO(toddw): Remove this line once the new signature support is done.
+// It corrects a bug where __wiretype is unused in VDL pacakges where only
+// bootstrap types are used on interfaces.
+const _ = __wiretype.TypeIDInvalid
+
type Struct struct {
X int32
Y int32
}
-// TODO(toddw): Remove this line once the new signature support is done.
-// It corrects a bug where _gen_wiretype is unused in VDL pacakges where only
-// bootstrap types are used on interfaces.
-const _ = _gen_wiretype.TypeIDInvalid
-
-// TypeTester is the interface the client binds and uses.
-// TypeTester_ExcludingUniversal is the interface without internal framework-added methods
-// to enable embedding without method collisions. Not to be used directly by clients.
-type TypeTester_ExcludingUniversal interface {
+// TypeTesterClientMethods is the client interface
+// containing TypeTester methods.
+type TypeTesterClientMethods interface {
// Methods to test support for generic types.
- EchoBool(ctx _gen_context.T, I1 bool, opts ..._gen_ipc.CallOpt) (reply bool, err error)
- EchoFloat32(ctx _gen_context.T, I1 float32, opts ..._gen_ipc.CallOpt) (reply float32, err error)
- EchoFloat64(ctx _gen_context.T, I1 float64, opts ..._gen_ipc.CallOpt) (reply float64, err error)
- EchoInt32(ctx _gen_context.T, I1 int32, opts ..._gen_ipc.CallOpt) (reply int32, err error)
- EchoInt64(ctx _gen_context.T, I1 int64, opts ..._gen_ipc.CallOpt) (reply int64, err error)
- EchoString(ctx _gen_context.T, I1 string, opts ..._gen_ipc.CallOpt) (reply string, err error)
- EchoByte(ctx _gen_context.T, I1 byte, opts ..._gen_ipc.CallOpt) (reply byte, err error)
- EchoUInt32(ctx _gen_context.T, I1 uint32, opts ..._gen_ipc.CallOpt) (reply uint32, err error)
- EchoUInt64(ctx _gen_context.T, I1 uint64, opts ..._gen_ipc.CallOpt) (reply uint64, err error)
+ EchoBool(ctx __context.T, I1 bool, opts ...__ipc.CallOpt) (O1 bool, err error)
+ EchoFloat32(ctx __context.T, I1 float32, opts ...__ipc.CallOpt) (O1 float32, err error)
+ EchoFloat64(ctx __context.T, I1 float64, opts ...__ipc.CallOpt) (O1 float64, err error)
+ EchoInt32(ctx __context.T, I1 int32, opts ...__ipc.CallOpt) (O1 int32, err error)
+ EchoInt64(ctx __context.T, I1 int64, opts ...__ipc.CallOpt) (O1 int64, err error)
+ EchoString(ctx __context.T, I1 string, opts ...__ipc.CallOpt) (O1 string, err error)
+ EchoByte(ctx __context.T, I1 byte, opts ...__ipc.CallOpt) (O1 byte, err error)
+ EchoUInt32(ctx __context.T, I1 uint32, opts ...__ipc.CallOpt) (O1 uint32, err error)
+ EchoUInt64(ctx __context.T, I1 uint64, opts ...__ipc.CallOpt) (O1 uint64, err error)
// Methods to test support for composite types.
- InputArray(ctx _gen_context.T, I1 [2]byte, opts ..._gen_ipc.CallOpt) (err error)
- InputMap(ctx _gen_context.T, I1 map[byte]byte, opts ..._gen_ipc.CallOpt) (err error)
- InputSlice(ctx _gen_context.T, I1 []byte, opts ..._gen_ipc.CallOpt) (err error)
- InputStruct(ctx _gen_context.T, I1 Struct, opts ..._gen_ipc.CallOpt) (err error)
- OutputArray(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply [2]byte, err error)
- OutputMap(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply map[byte]byte, err error)
- OutputSlice(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error)
- OutputStruct(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply Struct, err error)
+ InputArray(ctx __context.T, I1 [2]byte, opts ...__ipc.CallOpt) error
+ InputMap(ctx __context.T, I1 map[byte]byte, opts ...__ipc.CallOpt) error
+ InputSlice(ctx __context.T, I1 []byte, opts ...__ipc.CallOpt) error
+ InputStruct(ctx __context.T, I1 Struct, opts ...__ipc.CallOpt) error
+ OutputArray(__context.T, ...__ipc.CallOpt) (O1 [2]byte, err error)
+ OutputMap(__context.T, ...__ipc.CallOpt) (O1 map[byte]byte, err error)
+ OutputSlice(__context.T, ...__ipc.CallOpt) (O1 []byte, err error)
+ OutputStruct(__context.T, ...__ipc.CallOpt) (O1 Struct, err error)
// Methods to test support for different number of arguments.
- NoArguments(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error)
- MultipleArguments(ctx _gen_context.T, I1 int32, I2 int32, opts ..._gen_ipc.CallOpt) (O1 int32, O2 int32, err error)
+ NoArguments(__context.T, ...__ipc.CallOpt) error
+ MultipleArguments(ctx __context.T, I1 int32, I2 int32, opts ...__ipc.CallOpt) (O1 int32, O2 int32, err error)
// Methods to test support for streaming.
- StreamingOutput(ctx _gen_context.T, NumStreamItems int32, StreamItem bool, opts ..._gen_ipc.CallOpt) (reply TypeTesterStreamingOutputCall, err error)
-}
-type TypeTester interface {
- _gen_ipc.UniversalServiceMethods
- TypeTester_ExcludingUniversal
+ StreamingOutput(ctx __context.T, NumStreamItems int32, StreamItem bool, opts ...__ipc.CallOpt) (TypeTesterStreamingOutputCall, error)
}
-// TypeTesterService is the interface the server implements.
-type TypeTesterService interface {
-
- // Methods to test support for generic types.
- EchoBool(context _gen_ipc.ServerContext, I1 bool) (reply bool, err error)
- EchoFloat32(context _gen_ipc.ServerContext, I1 float32) (reply float32, err error)
- EchoFloat64(context _gen_ipc.ServerContext, I1 float64) (reply float64, err error)
- EchoInt32(context _gen_ipc.ServerContext, I1 int32) (reply int32, err error)
- EchoInt64(context _gen_ipc.ServerContext, I1 int64) (reply int64, err error)
- EchoString(context _gen_ipc.ServerContext, I1 string) (reply string, err error)
- EchoByte(context _gen_ipc.ServerContext, I1 byte) (reply byte, err error)
- EchoUInt32(context _gen_ipc.ServerContext, I1 uint32) (reply uint32, err error)
- EchoUInt64(context _gen_ipc.ServerContext, I1 uint64) (reply uint64, err error)
- // Methods to test support for composite types.
- InputArray(context _gen_ipc.ServerContext, I1 [2]byte) (err error)
- InputMap(context _gen_ipc.ServerContext, I1 map[byte]byte) (err error)
- InputSlice(context _gen_ipc.ServerContext, I1 []byte) (err error)
- InputStruct(context _gen_ipc.ServerContext, I1 Struct) (err error)
- OutputArray(context _gen_ipc.ServerContext) (reply [2]byte, err error)
- OutputMap(context _gen_ipc.ServerContext) (reply map[byte]byte, err error)
- OutputSlice(context _gen_ipc.ServerContext) (reply []byte, err error)
- OutputStruct(context _gen_ipc.ServerContext) (reply Struct, err error)
- // Methods to test support for different number of arguments.
- NoArguments(context _gen_ipc.ServerContext) (err error)
- MultipleArguments(context _gen_ipc.ServerContext, I1 int32, I2 int32) (O1 int32, O2 int32, err error)
- // Methods to test support for streaming.
- StreamingOutput(context _gen_ipc.ServerContext, NumStreamItems int32, StreamItem bool, stream TypeTesterServiceStreamingOutputStream) (err error)
+// TypeTesterClientStub adds universal methods to TypeTesterClientMethods.
+type TypeTesterClientStub interface {
+ TypeTesterClientMethods
+ __ipc.UniversalServiceMethods
}
-// TypeTesterStreamingOutputCall is the interface for call object of the method
-// StreamingOutput in the service interface TypeTester.
-type TypeTesterStreamingOutputCall interface {
- // RecvStream returns the recv portion of the stream
+// TypeTesterClient returns a client stub for TypeTester.
+func TypeTesterClient(name string, opts ...__ipc.BindOpt) TypeTesterClientStub {
+ var client __ipc.Client
+ for _, opt := range opts {
+ if clientOpt, ok := opt.(__ipc.Client); ok {
+ client = clientOpt
+ }
+ }
+ return implTypeTesterClientStub{name, client}
+}
+
+type implTypeTesterClientStub struct {
+ name string
+ client __ipc.Client
+}
+
+func (c implTypeTesterClientStub) c(ctx __context.T) __ipc.Client {
+ if c.client != nil {
+ return c.client
+ }
+ return __veyron2.RuntimeFromContext(ctx).Client()
+}
+
+func (c implTypeTesterClientStub) EchoBool(ctx __context.T, i0 bool, opts ...__ipc.CallOpt) (o0 bool, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoBool", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoFloat32(ctx __context.T, i0 float32, opts ...__ipc.CallOpt) (o0 float32, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoFloat32", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoFloat64(ctx __context.T, i0 float64, opts ...__ipc.CallOpt) (o0 float64, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoFloat64", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoInt32(ctx __context.T, i0 int32, opts ...__ipc.CallOpt) (o0 int32, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoInt32", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoInt64(ctx __context.T, i0 int64, opts ...__ipc.CallOpt) (o0 int64, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoInt64", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoString(ctx __context.T, i0 string, opts ...__ipc.CallOpt) (o0 string, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoString", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoByte(ctx __context.T, i0 byte, opts ...__ipc.CallOpt) (o0 byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoByte", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoUInt32(ctx __context.T, i0 uint32, opts ...__ipc.CallOpt) (o0 uint32, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoUInt32", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) EchoUInt64(ctx __context.T, i0 uint64, opts ...__ipc.CallOpt) (o0 uint64, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "EchoUInt64", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) InputArray(ctx __context.T, i0 [2]byte, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "InputArray", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) InputMap(ctx __context.T, i0 map[byte]byte, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "InputMap", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) InputSlice(ctx __context.T, i0 []byte, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "InputSlice", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) InputStruct(ctx __context.T, i0 Struct, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "InputStruct", []interface{}{i0}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) OutputArray(ctx __context.T, opts ...__ipc.CallOpt) (o0 [2]byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "OutputArray", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) OutputMap(ctx __context.T, opts ...__ipc.CallOpt) (o0 map[byte]byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "OutputMap", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) OutputSlice(ctx __context.T, opts ...__ipc.CallOpt) (o0 []byte, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "OutputSlice", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) OutputStruct(ctx __context.T, opts ...__ipc.CallOpt) (o0 Struct, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "OutputStruct", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) NoArguments(ctx __context.T, opts ...__ipc.CallOpt) (err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "NoArguments", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) MultipleArguments(ctx __context.T, i0 int32, i1 int32, opts ...__ipc.CallOpt) (o0 int32, o1 int32, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "MultipleArguments", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &o1, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) StreamingOutput(ctx __context.T, i0 int32, i1 bool, opts ...__ipc.CallOpt) (ocall TypeTesterStreamingOutputCall, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "StreamingOutput", []interface{}{i0, i1}, opts...); err != nil {
+ return
+ }
+ ocall = &implTypeTesterStreamingOutputCall{call, implTypeTesterStreamingOutputClientRecv{call: call}}
+ return
+}
+
+func (c implTypeTesterClientStub) Signature(ctx __context.T, opts ...__ipc.CallOpt) (o0 __ipc.ServiceSignature, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "Signature", nil, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+func (c implTypeTesterClientStub) GetMethodTags(ctx __context.T, method string, opts ...__ipc.CallOpt) (o0 []interface{}, err error) {
+ var call __ipc.Call
+ if call, err = c.c(ctx).StartCall(ctx, c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
+ return
+ }
+ if ierr := call.Finish(&o0, &err); ierr != nil {
+ err = ierr
+ }
+ return
+}
+
+// TypeTesterStreamingOutputClientStream is the client stream for TypeTester.StreamingOutput.
+type TypeTesterStreamingOutputClientStream interface {
+ // RecvStream returns the receiver side of the client stream.
RecvStream() interface {
- // Advance stages an element so the client can retrieve it
- // with Value. Advance returns true iff there is an
- // element to retrieve. The client must call Advance before
- // calling Value. Advance may block if an element is not
- // immediately available.
+ // Advance stages an item so that it may be retrieved via Value. Returns
+ // true iff there is an item to retrieve. Advance must be called before
+ // Value is called. May block if an item is not available.
Advance() bool
-
- // Value returns the element that was staged by Advance.
- // Value may panic if Advance returned false or was not
- // called at all. Value does not block.
+ // Value returns the item that was staged by Advance. May panic if Advance
+ // returned false or was not called. Never blocks.
Value() bool
-
- // Err returns a non-nil error iff the stream encountered
- // any errors. Err does not block.
+ // Err returns any error encountered by Advance. Never blocks.
Err() error
}
+}
- // Finish blocks until the server is done and returns the positional
- // return values for call.
+// TypeTesterStreamingOutputCall represents the call returned from TypeTester.StreamingOutput.
+type TypeTesterStreamingOutputCall interface {
+ TypeTesterStreamingOutputClientStream
+ // Finish blocks until the server is done, and returns the positional return
+ // values for call.
//
- // If Cancel has been called, Finish will return immediately; the output of
- // Finish could either be an error signalling cancelation, or the correct
- // positional return values from the server depending on the timing of the
- // call.
+ // Finish returns immediately if Cancel has been called; depending on the
+ // timing the output could either be an error signaling cancelation, or the
+ // valid positional return values from the server.
//
// Calling Finish is mandatory for releasing stream resources, unless Cancel
- // has been called or any of the other methods return an error.
- // Finish should be called at most once.
- Finish() (err error)
-
- // Cancel cancels the RPC, notifying the server to stop processing. It
- // is safe to call Cancel concurrently with any of the other stream methods.
+ // has been called or any of the other methods return an error. Finish should
+ // be called at most once.
+ Finish() error
+ // Cancel cancels the RPC, notifying the server to stop processing. It is
+ // safe to call Cancel concurrently with any of the other stream methods.
// Calling Cancel after Finish has returned is a no-op.
Cancel()
}
-type implTypeTesterStreamingOutputStreamIterator struct {
- clientCall _gen_ipc.Call
- val bool
- err error
+type implTypeTesterStreamingOutputClientRecv struct {
+ call __ipc.Call
+ val bool
+ err error
}
-func (c *implTypeTesterStreamingOutputStreamIterator) Advance() bool {
- c.err = c.clientCall.Recv(&c.val)
+func (c *implTypeTesterStreamingOutputClientRecv) Advance() bool {
+ c.err = c.call.Recv(&c.val)
return c.err == nil
}
-
-func (c *implTypeTesterStreamingOutputStreamIterator) Value() bool {
+func (c *implTypeTesterStreamingOutputClientRecv) Value() bool {
return c.val
}
-
-func (c *implTypeTesterStreamingOutputStreamIterator) Err() error {
- if c.err == _gen_io.EOF {
+func (c *implTypeTesterStreamingOutputClientRecv) Err() error {
+ if c.err == __io.EOF {
return nil
}
return c.err
}
-// Implementation of the TypeTesterStreamingOutputCall interface that is not exported.
type implTypeTesterStreamingOutputCall struct {
- clientCall _gen_ipc.Call
- readStream implTypeTesterStreamingOutputStreamIterator
+ call __ipc.Call
+ recv implTypeTesterStreamingOutputClientRecv
}
func (c *implTypeTesterStreamingOutputCall) RecvStream() interface {
@@ -161,380 +387,197 @@
Value() bool
Err() error
} {
- return &c.readStream
+ return &c.recv
}
-
func (c *implTypeTesterStreamingOutputCall) Finish() (err error) {
- if ierr := c.clientCall.Finish(&err); ierr != nil {
+ if ierr := c.call.Finish(&err); ierr != nil {
err = ierr
}
return
}
-
func (c *implTypeTesterStreamingOutputCall) Cancel() {
- c.clientCall.Cancel()
+ c.call.Cancel()
}
-type implTypeTesterServiceStreamingOutputStreamSender struct {
- serverCall _gen_ipc.ServerCall
+// TypeTesterServerMethods is the interface a server writer
+// implements for TypeTester.
+type TypeTesterServerMethods interface {
+ // Methods to test support for generic types.
+ EchoBool(ctx __ipc.ServerContext, I1 bool) (O1 bool, E error)
+ EchoFloat32(ctx __ipc.ServerContext, I1 float32) (O1 float32, E error)
+ EchoFloat64(ctx __ipc.ServerContext, I1 float64) (O1 float64, E error)
+ EchoInt32(ctx __ipc.ServerContext, I1 int32) (O1 int32, E error)
+ EchoInt64(ctx __ipc.ServerContext, I1 int64) (O1 int64, E error)
+ EchoString(ctx __ipc.ServerContext, I1 string) (O1 string, E error)
+ EchoByte(ctx __ipc.ServerContext, I1 byte) (O1 byte, E error)
+ EchoUInt32(ctx __ipc.ServerContext, I1 uint32) (O1 uint32, E error)
+ EchoUInt64(ctx __ipc.ServerContext, I1 uint64) (O1 uint64, E error)
+ // Methods to test support for composite types.
+ InputArray(ctx __ipc.ServerContext, I1 [2]byte) (E error)
+ InputMap(ctx __ipc.ServerContext, I1 map[byte]byte) (E error)
+ InputSlice(ctx __ipc.ServerContext, I1 []byte) (E error)
+ InputStruct(ctx __ipc.ServerContext, I1 Struct) (E error)
+ OutputArray(__ipc.ServerContext) (O1 [2]byte, E error)
+ OutputMap(__ipc.ServerContext) (O1 map[byte]byte, E error)
+ OutputSlice(__ipc.ServerContext) (O1 []byte, E error)
+ OutputStruct(__ipc.ServerContext) (O1 Struct, E error)
+ // Methods to test support for different number of arguments.
+ NoArguments(__ipc.ServerContext) error
+ MultipleArguments(ctx __ipc.ServerContext, I1 int32, I2 int32) (O1 int32, O2 int32, E error)
+ // Methods to test support for streaming.
+ StreamingOutput(ctx TypeTesterStreamingOutputContext, NumStreamItems int32, StreamItem bool) error
}
-func (s *implTypeTesterServiceStreamingOutputStreamSender) Send(item bool) error {
- return s.serverCall.Send(item)
+// TypeTesterServerStubMethods is the server interface containing
+// TypeTester methods, as expected by ipc.Server. The difference between
+// this interface and TypeTesterServerMethods is that the first context
+// argument for each method is always ipc.ServerCall here, while it is either
+// ipc.ServerContext or a typed streaming context there.
+type TypeTesterServerStubMethods interface {
+ // Methods to test support for generic types.
+ EchoBool(call __ipc.ServerCall, I1 bool) (O1 bool, E error)
+ EchoFloat32(call __ipc.ServerCall, I1 float32) (O1 float32, E error)
+ EchoFloat64(call __ipc.ServerCall, I1 float64) (O1 float64, E error)
+ EchoInt32(call __ipc.ServerCall, I1 int32) (O1 int32, E error)
+ EchoInt64(call __ipc.ServerCall, I1 int64) (O1 int64, E error)
+ EchoString(call __ipc.ServerCall, I1 string) (O1 string, E error)
+ EchoByte(call __ipc.ServerCall, I1 byte) (O1 byte, E error)
+ EchoUInt32(call __ipc.ServerCall, I1 uint32) (O1 uint32, E error)
+ EchoUInt64(call __ipc.ServerCall, I1 uint64) (O1 uint64, E error)
+ // Methods to test support for composite types.
+ InputArray(call __ipc.ServerCall, I1 [2]byte) (E error)
+ InputMap(call __ipc.ServerCall, I1 map[byte]byte) (E error)
+ InputSlice(call __ipc.ServerCall, I1 []byte) (E error)
+ InputStruct(call __ipc.ServerCall, I1 Struct) (E error)
+ OutputArray(__ipc.ServerCall) (O1 [2]byte, E error)
+ OutputMap(__ipc.ServerCall) (O1 map[byte]byte, E error)
+ OutputSlice(__ipc.ServerCall) (O1 []byte, E error)
+ OutputStruct(__ipc.ServerCall) (O1 Struct, E error)
+ // Methods to test support for different number of arguments.
+ NoArguments(__ipc.ServerCall) error
+ MultipleArguments(call __ipc.ServerCall, I1 int32, I2 int32) (O1 int32, O2 int32, E error)
+ // Methods to test support for streaming.
+ StreamingOutput(call __ipc.ServerCall, NumStreamItems int32, StreamItem bool) error
}
-// TypeTesterServiceStreamingOutputStream is the interface for streaming responses of the method
-// StreamingOutput in the service interface TypeTester.
-type TypeTesterServiceStreamingOutputStream interface {
- // SendStream returns the send portion of the stream.
- SendStream() interface {
- // Send places the item onto the output stream, blocking if there is no buffer
- // space available. If the client has canceled, an error is returned.
- Send(item bool) error
+// TypeTesterServerStub adds universal methods to TypeTesterServerStubMethods.
+type TypeTesterServerStub interface {
+ TypeTesterServerStubMethods
+ // GetMethodTags will be replaced with DescribeInterfaces.
+ GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error)
+ // Signature will be replaced with DescribeInterfaces.
+ Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error)
+}
+
+// TypeTesterServer returns a server stub for TypeTester.
+// It converts an implementation of TypeTesterServerMethods into
+// an object that may be used by ipc.Server.
+func TypeTesterServer(impl TypeTesterServerMethods) TypeTesterServerStub {
+ stub := implTypeTesterServerStub{
+ impl: impl,
}
-}
-
-// Implementation of the TypeTesterServiceStreamingOutputStream interface that is not exported.
-type implTypeTesterServiceStreamingOutputStream struct {
- writer implTypeTesterServiceStreamingOutputStreamSender
-}
-
-func (s *implTypeTesterServiceStreamingOutputStream) SendStream() interface {
- // Send places the item onto the output stream, blocking if there is no buffer
- // space available. If the client has canceled, an error is returned.
- Send(item bool) error
-} {
- return &s.writer
-}
-
-// BindTypeTester returns the client stub implementing the TypeTester
-// interface.
-//
-// If no _gen_ipc.Client is specified, the default _gen_ipc.Client in the
-// global Runtime is used.
-func BindTypeTester(name string, opts ..._gen_ipc.BindOpt) (TypeTester, error) {
- var client _gen_ipc.Client
- switch len(opts) {
- case 0:
- // Do nothing.
- case 1:
- if clientOpt, ok := opts[0].(_gen_ipc.Client); opts[0] == nil || ok {
- client = clientOpt
- } else {
- return nil, _gen_vdlutil.ErrUnrecognizedOption
- }
- default:
- return nil, _gen_vdlutil.ErrTooManyOptionsToBind
+ // 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 := __ipc.NewGlobState(stub); gs != nil {
+ stub.gs = gs
+ } else if gs := __ipc.NewGlobState(impl); gs != nil {
+ stub.gs = gs
}
- stub := &clientStubTypeTester{defaultClient: client, name: name}
-
- return stub, nil
-}
-
-// NewServerTypeTester creates a new server stub.
-//
-// It takes a regular server implementing the TypeTesterService
-// interface, and returns a new server stub.
-func NewServerTypeTester(server TypeTesterService) interface{} {
- stub := &ServerStubTypeTester{
- service: server,
- }
- var gs _gen_ipc.GlobState
- var self interface{} = stub
- // VAllGlobber is implemented by the server object, which is wrapped in
- // a VDL generated server stub.
- if x, ok := self.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VAllGlobber is implemented by the server object without using a VDL
- // generated stub.
- if x, ok := server.(_gen_ipc.VAllGlobber); ok {
- gs.VAllGlobber = x
- }
- // VChildrenGlobber is implemented in the server object.
- if x, ok := server.(_gen_ipc.VChildrenGlobber); ok {
- gs.VChildrenGlobber = x
- }
- stub.gs = &gs
return stub
}
-// clientStubTypeTester implements TypeTester.
-type clientStubTypeTester struct {
- defaultClient _gen_ipc.Client
- name string
+type implTypeTesterServerStub struct {
+ impl TypeTesterServerMethods
+ gs *__ipc.GlobState
}
-func (__gen_c *clientStubTypeTester) client(ctx _gen_context.T) _gen_ipc.Client {
- if __gen_c.defaultClient != nil {
- return __gen_c.defaultClient
- }
- return _gen_veyron2.RuntimeFromContext(ctx).Client()
+func (s implTypeTesterServerStub) EchoBool(call __ipc.ServerCall, i0 bool) (bool, error) {
+ return s.impl.EchoBool(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoBool(ctx _gen_context.T, I1 bool, opts ..._gen_ipc.CallOpt) (reply bool, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoBool", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoFloat32(call __ipc.ServerCall, i0 float32) (float32, error) {
+ return s.impl.EchoFloat32(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoFloat32(ctx _gen_context.T, I1 float32, opts ..._gen_ipc.CallOpt) (reply float32, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoFloat32", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoFloat64(call __ipc.ServerCall, i0 float64) (float64, error) {
+ return s.impl.EchoFloat64(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoFloat64(ctx _gen_context.T, I1 float64, opts ..._gen_ipc.CallOpt) (reply float64, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoFloat64", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoInt32(call __ipc.ServerCall, i0 int32) (int32, error) {
+ return s.impl.EchoInt32(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoInt32(ctx _gen_context.T, I1 int32, opts ..._gen_ipc.CallOpt) (reply int32, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoInt32", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoInt64(call __ipc.ServerCall, i0 int64) (int64, error) {
+ return s.impl.EchoInt64(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoInt64(ctx _gen_context.T, I1 int64, opts ..._gen_ipc.CallOpt) (reply int64, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoInt64", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoString(call __ipc.ServerCall, i0 string) (string, error) {
+ return s.impl.EchoString(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoString(ctx _gen_context.T, I1 string, opts ..._gen_ipc.CallOpt) (reply string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoString", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoByte(call __ipc.ServerCall, i0 byte) (byte, error) {
+ return s.impl.EchoByte(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoByte(ctx _gen_context.T, I1 byte, opts ..._gen_ipc.CallOpt) (reply byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoByte", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoUInt32(call __ipc.ServerCall, i0 uint32) (uint32, error) {
+ return s.impl.EchoUInt32(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoUInt32(ctx _gen_context.T, I1 uint32, opts ..._gen_ipc.CallOpt) (reply uint32, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoUInt32", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) EchoUInt64(call __ipc.ServerCall, i0 uint64) (uint64, error) {
+ return s.impl.EchoUInt64(call, i0)
}
-func (__gen_c *clientStubTypeTester) EchoUInt64(ctx _gen_context.T, I1 uint64, opts ..._gen_ipc.CallOpt) (reply uint64, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "EchoUInt64", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) InputArray(call __ipc.ServerCall, i0 [2]byte) error {
+ return s.impl.InputArray(call, i0)
}
-func (__gen_c *clientStubTypeTester) InputArray(ctx _gen_context.T, I1 [2]byte, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "InputArray", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) InputMap(call __ipc.ServerCall, i0 map[byte]byte) error {
+ return s.impl.InputMap(call, i0)
}
-func (__gen_c *clientStubTypeTester) InputMap(ctx _gen_context.T, I1 map[byte]byte, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "InputMap", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) InputSlice(call __ipc.ServerCall, i0 []byte) error {
+ return s.impl.InputSlice(call, i0)
}
-func (__gen_c *clientStubTypeTester) InputSlice(ctx _gen_context.T, I1 []byte, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "InputSlice", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) InputStruct(call __ipc.ServerCall, i0 Struct) error {
+ return s.impl.InputStruct(call, i0)
}
-func (__gen_c *clientStubTypeTester) InputStruct(ctx _gen_context.T, I1 Struct, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "InputStruct", []interface{}{I1}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) OutputArray(call __ipc.ServerCall) ([2]byte, error) {
+ return s.impl.OutputArray(call)
}
-func (__gen_c *clientStubTypeTester) OutputArray(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply [2]byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "OutputArray", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) OutputMap(call __ipc.ServerCall) (map[byte]byte, error) {
+ return s.impl.OutputMap(call)
}
-func (__gen_c *clientStubTypeTester) OutputMap(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply map[byte]byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "OutputMap", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) OutputSlice(call __ipc.ServerCall) ([]byte, error) {
+ return s.impl.OutputSlice(call)
}
-func (__gen_c *clientStubTypeTester) OutputSlice(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []byte, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "OutputSlice", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) OutputStruct(call __ipc.ServerCall) (Struct, error) {
+ return s.impl.OutputStruct(call)
}
-func (__gen_c *clientStubTypeTester) OutputStruct(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply Struct, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "OutputStruct", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) NoArguments(call __ipc.ServerCall) error {
+ return s.impl.NoArguments(call)
}
-func (__gen_c *clientStubTypeTester) NoArguments(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "NoArguments", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) MultipleArguments(call __ipc.ServerCall, i0 int32, i1 int32) (int32, int32, error) {
+ return s.impl.MultipleArguments(call, i0, i1)
}
-func (__gen_c *clientStubTypeTester) MultipleArguments(ctx _gen_context.T, I1 int32, I2 int32, opts ..._gen_ipc.CallOpt) (O1 int32, O2 int32, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "MultipleArguments", []interface{}{I1, I2}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&O1, &O2, &err); ierr != nil {
- err = ierr
- }
- return
+func (s implTypeTesterServerStub) StreamingOutput(call __ipc.ServerCall, i0 int32, i1 bool) error {
+ ctx := &implTypeTesterStreamingOutputContext{call, implTypeTesterStreamingOutputServerSend{call}}
+ return s.impl.StreamingOutput(ctx, i0, i1)
}
-func (__gen_c *clientStubTypeTester) StreamingOutput(ctx _gen_context.T, NumStreamItems int32, StreamItem bool, opts ..._gen_ipc.CallOpt) (reply TypeTesterStreamingOutputCall, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "StreamingOutput", []interface{}{NumStreamItems, StreamItem}, opts...); err != nil {
- return
- }
- reply = &implTypeTesterStreamingOutputCall{clientCall: call, readStream: implTypeTesterStreamingOutputStreamIterator{clientCall: call}}
- return
+func (s implTypeTesterServerStub) VGlob() *__ipc.GlobState {
+ return s.gs
}
-func (__gen_c *clientStubTypeTester) UnresolveStep(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply []string, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "UnresolveStep", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubTypeTester) Signature(ctx _gen_context.T, opts ..._gen_ipc.CallOpt) (reply _gen_ipc.ServiceSignature, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "Signature", nil, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-func (__gen_c *clientStubTypeTester) GetMethodTags(ctx _gen_context.T, method string, opts ..._gen_ipc.CallOpt) (reply []interface{}, err error) {
- var call _gen_ipc.Call
- if call, err = __gen_c.client(ctx).StartCall(ctx, __gen_c.name, "GetMethodTags", []interface{}{method}, opts...); err != nil {
- return
- }
- if ierr := call.Finish(&reply, &err); ierr != nil {
- err = ierr
- }
- return
-}
-
-// ServerStubTypeTester wraps a server that implements
-// TypeTesterService and provides an object that satisfies
-// the requirements of veyron2/ipc.ReflectInvoker.
-type ServerStubTypeTester struct {
- service TypeTesterService
- gs *_gen_ipc.GlobState
-}
-
-func (__gen_s *ServerStubTypeTester) GetMethodTags(call _gen_ipc.ServerCall, method string) ([]interface{}, error) {
- // TODO(bprosnitz) GetMethodTags() will be replaces with Signature().
- // Note: This exhibits some weird behavior like returning a nil error if the method isn't found.
- // This will change when it is replaced with Signature().
+func (s implTypeTesterServerStub) GetMethodTags(call __ipc.ServerCall, method string) ([]interface{}, error) {
+ // TODO(toddw): Replace with new DescribeInterfaces implementation.
switch method {
case "EchoBool":
return []interface{}{}, nil
@@ -581,183 +624,184 @@
}
}
-func (__gen_s *ServerStubTypeTester) Signature(call _gen_ipc.ServerCall) (_gen_ipc.ServiceSignature, error) {
- result := _gen_ipc.ServiceSignature{Methods: make(map[string]_gen_ipc.MethodSignature)}
- result.Methods["EchoBool"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+func (s implTypeTesterServerStub) Signature(call __ipc.ServerCall) (__ipc.ServiceSignature, error) {
+ // TODO(toddw) Replace with new DescribeInterfaces implementation.
+ result := __ipc.ServiceSignature{Methods: make(map[string]__ipc.MethodSignature)}
+ result.Methods["EchoBool"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 2},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 2},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoByte"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoByte"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 66},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 66},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoFloat32"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoFloat32"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 25},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 25},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoFloat64"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoFloat64"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 26},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 26},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoInt32"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoInt32"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 36},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 36},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoInt64"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoInt64"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 37},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 37},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoString"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoString"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 3},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 3},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoUInt32"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoUInt32"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 52},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 52},
{Name: "E", Type: 65},
},
}
- result.Methods["EchoUInt64"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["EchoUInt64"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 53},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 53},
{Name: "E", Type: 65},
},
}
- result.Methods["InputArray"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["InputArray"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 67},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "E", Type: 65},
},
}
- result.Methods["InputMap"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["InputMap"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 68},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "E", Type: 65},
},
}
- result.Methods["InputSlice"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["InputSlice"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 69},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "E", Type: 65},
},
}
- result.Methods["InputStruct"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["InputStruct"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 70},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "E", Type: 65},
},
}
- result.Methods["MultipleArguments"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["MultipleArguments"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "I1", Type: 36},
{Name: "I2", Type: 36},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 36},
{Name: "O2", Type: 36},
{Name: "E", Type: 65},
},
}
- result.Methods["NoArguments"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["NoArguments"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
}
- result.Methods["OutputArray"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["OutputArray"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 67},
{Name: "E", Type: 65},
},
}
- result.Methods["OutputMap"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["OutputMap"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 68},
{Name: "E", Type: 65},
},
}
- result.Methods["OutputSlice"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["OutputSlice"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 69},
{Name: "E", Type: 65},
},
}
- result.Methods["OutputStruct"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{},
- OutArgs: []_gen_ipc.MethodArgument{
+ result.Methods["OutputStruct"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{},
+ OutArgs: []__ipc.MethodArgument{
{Name: "O1", Type: 70},
{Name: "E", Type: 65},
},
}
- result.Methods["StreamingOutput"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
+ result.Methods["StreamingOutput"] = __ipc.MethodSignature{
+ InArgs: []__ipc.MethodArgument{
{Name: "NumStreamItems", Type: 36},
{Name: "StreamItem", Type: 2},
},
- OutArgs: []_gen_ipc.MethodArgument{
+ OutArgs: []__ipc.MethodArgument{
{Name: "", Type: 65},
},
OutStream: 2,
}
- result.TypeDefs = []_gen_vdlutil.Any{
- _gen_wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, _gen_wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, _gen_wiretype.ArrayType{Elem: 0x42, Len: 0x2, Name: "", Tags: []string(nil)}, _gen_wiretype.MapType{Key: 0x42, Elem: 0x42, Name: "", Tags: []string(nil)}, _gen_wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}, _gen_wiretype.StructType{
- []_gen_wiretype.FieldType{
- _gen_wiretype.FieldType{Type: 0x24, Name: "X"},
- _gen_wiretype.FieldType{Type: 0x24, Name: "Y"},
+ result.TypeDefs = []__vdlutil.Any{
+ __wiretype.NamedPrimitiveType{Type: 0x1, Name: "error", Tags: []string(nil)}, __wiretype.NamedPrimitiveType{Type: 0x32, Name: "byte", Tags: []string(nil)}, __wiretype.ArrayType{Elem: 0x42, Len: 0x2, Name: "", Tags: []string(nil)}, __wiretype.MapType{Key: 0x42, Elem: 0x42, Name: "", Tags: []string(nil)}, __wiretype.SliceType{Elem: 0x42, Name: "", Tags: []string(nil)}, __wiretype.StructType{
+ []__wiretype.FieldType{
+ __wiretype.FieldType{Type: 0x24, Name: "X"},
+ __wiretype.FieldType{Type: 0x24, Name: "Y"},
},
"veyron.io/veyron/veyron/tools/vrpc/test_base.Struct", []string(nil)},
}
@@ -765,125 +809,38 @@
return result, nil
}
-func (__gen_s *ServerStubTypeTester) UnresolveStep(call _gen_ipc.ServerCall) (reply []string, err error) {
- if unresolver, ok := __gen_s.service.(_gen_ipc.Unresolver); ok {
- return unresolver.UnresolveStep(call)
+// TypeTesterStreamingOutputServerStream is the server stream for TypeTester.StreamingOutput.
+type TypeTesterStreamingOutputServerStream interface {
+ // SendStream returns the send side of the server stream.
+ SendStream() interface {
+ // Send places the item onto the output stream. Returns errors encountered
+ // while sending. Blocks if there is no buffer space; will unblock when
+ // buffer space is available.
+ Send(item bool) error
}
- if call.Server() == nil {
- return
- }
- var published []string
- if published, err = call.Server().Published(); err != nil || published == nil {
- return
- }
- reply = make([]string, len(published))
- for i, p := range published {
- reply[i] = _gen_naming.Join(p, call.Name())
- }
- return
}
-func (__gen_s *ServerStubTypeTester) VGlob() *_gen_ipc.GlobState {
- return __gen_s.gs
+// TypeTesterStreamingOutputContext represents the context passed to TypeTester.StreamingOutput.
+type TypeTesterStreamingOutputContext interface {
+ __ipc.ServerContext
+ TypeTesterStreamingOutputServerStream
}
-func (__gen_s *ServerStubTypeTester) EchoBool(call _gen_ipc.ServerCall, I1 bool) (reply bool, err error) {
- reply, err = __gen_s.service.EchoBool(call, I1)
- return
+type implTypeTesterStreamingOutputServerSend struct {
+ call __ipc.ServerCall
}
-func (__gen_s *ServerStubTypeTester) EchoFloat32(call _gen_ipc.ServerCall, I1 float32) (reply float32, err error) {
- reply, err = __gen_s.service.EchoFloat32(call, I1)
- return
+func (s *implTypeTesterStreamingOutputServerSend) Send(item bool) error {
+ return s.call.Send(item)
}
-func (__gen_s *ServerStubTypeTester) EchoFloat64(call _gen_ipc.ServerCall, I1 float64) (reply float64, err error) {
- reply, err = __gen_s.service.EchoFloat64(call, I1)
- return
+type implTypeTesterStreamingOutputContext struct {
+ __ipc.ServerContext
+ send implTypeTesterStreamingOutputServerSend
}
-func (__gen_s *ServerStubTypeTester) EchoInt32(call _gen_ipc.ServerCall, I1 int32) (reply int32, err error) {
- reply, err = __gen_s.service.EchoInt32(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) EchoInt64(call _gen_ipc.ServerCall, I1 int64) (reply int64, err error) {
- reply, err = __gen_s.service.EchoInt64(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) EchoString(call _gen_ipc.ServerCall, I1 string) (reply string, err error) {
- reply, err = __gen_s.service.EchoString(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) EchoByte(call _gen_ipc.ServerCall, I1 byte) (reply byte, err error) {
- reply, err = __gen_s.service.EchoByte(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) EchoUInt32(call _gen_ipc.ServerCall, I1 uint32) (reply uint32, err error) {
- reply, err = __gen_s.service.EchoUInt32(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) EchoUInt64(call _gen_ipc.ServerCall, I1 uint64) (reply uint64, err error) {
- reply, err = __gen_s.service.EchoUInt64(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) InputArray(call _gen_ipc.ServerCall, I1 [2]byte) (err error) {
- err = __gen_s.service.InputArray(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) InputMap(call _gen_ipc.ServerCall, I1 map[byte]byte) (err error) {
- err = __gen_s.service.InputMap(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) InputSlice(call _gen_ipc.ServerCall, I1 []byte) (err error) {
- err = __gen_s.service.InputSlice(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) InputStruct(call _gen_ipc.ServerCall, I1 Struct) (err error) {
- err = __gen_s.service.InputStruct(call, I1)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) OutputArray(call _gen_ipc.ServerCall) (reply [2]byte, err error) {
- reply, err = __gen_s.service.OutputArray(call)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) OutputMap(call _gen_ipc.ServerCall) (reply map[byte]byte, err error) {
- reply, err = __gen_s.service.OutputMap(call)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) OutputSlice(call _gen_ipc.ServerCall) (reply []byte, err error) {
- reply, err = __gen_s.service.OutputSlice(call)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) OutputStruct(call _gen_ipc.ServerCall) (reply Struct, err error) {
- reply, err = __gen_s.service.OutputStruct(call)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) NoArguments(call _gen_ipc.ServerCall) (err error) {
- err = __gen_s.service.NoArguments(call)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) MultipleArguments(call _gen_ipc.ServerCall, I1 int32, I2 int32) (O1 int32, O2 int32, err error) {
- O1, O2, err = __gen_s.service.MultipleArguments(call, I1, I2)
- return
-}
-
-func (__gen_s *ServerStubTypeTester) StreamingOutput(call _gen_ipc.ServerCall, NumStreamItems int32, StreamItem bool) (err error) {
- stream := &implTypeTesterServiceStreamingOutputStream{writer: implTypeTesterServiceStreamingOutputStreamSender{serverCall: call}}
- err = __gen_s.service.StreamingOutput(call, NumStreamItems, StreamItem, stream)
- return
+func (s *implTypeTesterStreamingOutputContext) SendStream() interface {
+ Send(item bool) error
+} {
+ return &s.send
}