Merge "veyron/examples/pipetobrowser: Search, filter and sort for the Git Status plugin"
diff --git a/examples/boxes/android/src/boxesp2p/main.go b/examples/boxes/android/src/boxesp2p/main.go
index f2a1afe..b157517 100644
--- a/examples/boxes/android/src/boxesp2p/main.go
+++ b/examples/boxes/android/src/boxesp2p/main.go
@@ -87,10 +87,17 @@
jMID C.jmethodID
}
+type boxesDispatcher struct {
+ drawAuth, syncAuth security.Authorizer
+ drawServer, syncServer ipc.Invoker
+ storeDispatcher ipc.Dispatcher
+}
+
type goState struct {
runtime veyron2.Runtime
store *storage.Server
ipc ipc.Server
+ disp boxesDispatcher
drawStream boxes.DrawInterfaceServiceDrawStream
signalling boxes.BoxSignalling
boxList chan boxes.Box
@@ -130,6 +137,16 @@
C.callMethod(env, jni.jObj, jni.jMID, jBoxId, &jPoints[0])
}
+func (d *boxesDispatcher) Lookup(suffix string) (ipc.Invoker, security.Authorizer, error) {
+ if strings.HasSuffix(suffix, "draw") {
+ return d.drawServer, d.drawAuth, nil
+ }
+ if strings.HasSuffix(suffix, "sync") {
+ return d.syncServer, d.syncAuth, nil
+ }
+ return d.storeDispatcher.Lookup(suffix)
+}
+
func (gs *goState) SyncBoxes(context ipc.ServerContext) error {
// Get the endpoint of the remote process
endPt, err := inaming.NewEndpoint(context.RemoteEndpoint().String())
@@ -228,18 +245,15 @@
func (gs *goState) registerAsPeer() {
auth := security.NewACLAuthorizer(security.ACL{security.AllPrincipals: security.LabelSet(security.AdminLabel)})
- srv, err := gs.runtime.NewServer()
- if err != nil {
- panic(fmt.Errorf("Failed runtime.NewServer:%v", err))
- }
- drawServer := boxes.NewServerDrawInterface(gs)
- if err := srv.Register("draw", ipc.SoloDispatcher(drawServer, auth)); err != nil {
- panic(fmt.Errorf("Failed Register:%v", err))
- }
- endPt, err := srv.Listen("tcp", gs.myIPAddr+drawServicePort)
+ gs.disp.drawAuth = auth
+ gs.disp.drawServer = ipc.ReflectInvoker(boxes.NewServerDrawInterface(gs))
+ endPt, err := gs.ipc.Listen("tcp", gs.myIPAddr+drawServicePort)
if err != nil {
panic(fmt.Errorf("Failed to Listen:%v", err))
}
+ if err := gs.ipc.Serve("", &gs.disp); err != nil {
+ panic(fmt.Errorf("Failed Register:%v", err))
+ }
if err := gs.signalling.Add(gs.runtime.TODOContext(), endPt.String()); err != nil {
panic(fmt.Errorf("Failed to Add endpoint to signalling server:%v", err))
}
@@ -319,28 +333,30 @@
panic(fmt.Errorf("LoadACL failed:%v", err))
}
auth := security.NewACLAuthorizer(acl)
-
- // Register the services
- if err = gs.ipc.Register("", storage.NewStoreDispatcher(gs.store, auth)); err != nil {
- panic(fmt.Errorf("s.Register(store) failed:%v", err))
- }
+ gs.disp.storeDispatcher = storage.NewStoreDispatcher(gs.store, auth)
// Create an endpoint and start listening
if _, err = gs.ipc.Listen("tcp", gs.myIPAddr+storeServicePort); err != nil {
panic(fmt.Errorf("s.Listen() failed:%v", err))
}
+ // Register the services
+ if err = gs.ipc.Serve("", &gs.disp); err != nil {
+ panic(fmt.Errorf("s.Serve(store) failed:%v", err))
+ }
gs.storeEndpoint = "/" + gs.myIPAddr + storeServicePort
}
func initSyncService(peerEndpoint string) {
peerSyncAddr := strings.Split(peerEndpoint, ":")[0]
srv := vsync.NewServerSync(vsync.NewSyncd(peerSyncAddr+syncServicePort, peerSyncAddr /* peer deviceID */, gs.myIPAddr /* my deviceID */, storePath, gs.storeEndpoint, 0))
- if err := gs.ipc.Register("sync", ipc.SoloDispatcher(srv, nil)); err != nil {
- panic(fmt.Errorf("syncd:: error registering service: err %v", err))
- }
+ gs.disp.syncAuth = nil
+ gs.disp.syncServer = ipc.ReflectInvoker(srv)
if _, err := gs.ipc.Listen("tcp", gs.myIPAddr+syncServicePort); err != nil {
panic(fmt.Errorf("syncd:: error listening to service: err %v", err))
}
+ if err := gs.ipc.Serve("", &gs.disp); err != nil {
+ panic(fmt.Errorf("syncd:: error serving service: err %v", err))
+ }
}
func init() {
diff --git a/examples/boxes/signallingserver/main.go b/examples/boxes/signallingserver/main.go
index 04536d4..6a5074b 100644
--- a/examples/boxes/signallingserver/main.go
+++ b/examples/boxes/signallingserver/main.go
@@ -4,12 +4,14 @@
import (
"log"
+ "strings"
"veyron/examples/boxes"
"veyron/lib/signals"
"veyron2/ipc"
"veyron2/rt"
+ "veyron2/security"
)
const (
@@ -30,6 +32,15 @@
return string(*b), nil
}
+type dispatcher struct {
+ invoker ipc.Invoker
+}
+
+func (d *dispatcher) Lookup(suffix string) (ipc.Invoker, security.Authorizer, error) {
+ suffix = strings.TrimPrefix(suffix, signallingServiceName)
+ return d.invoker, nil, nil
+}
+
func main() {
r := rt.Init()
@@ -49,7 +60,7 @@
log.Fatal("failed Listen: ", err)
}
- if err := s.Serve("/"+signallingServiceName, ipc.SoloDispatcher(srv, nil)); err != nil {
+ if err := s.Serve("", &dispatcher{ipc.ReflectInvoker(srv)}); err != nil {
log.Fatal("failed Serve:", err)
}
diff --git a/examples/stfortune/stfortune/main.go b/examples/stfortune/stfortune/main.go
index a6231e1..4086ba2 100644
--- a/examples/stfortune/stfortune/main.go
+++ b/examples/stfortune/stfortune/main.go
@@ -17,9 +17,12 @@
"veyron2/context"
"veyron2/naming"
"veyron2/rt"
+ istore "veyron2/services/store"
+ iwatch "veyron2/services/watch"
"veyron2/storage"
"veyron2/storage/vstore"
"veyron2/storage/vstore/primitives"
+ "veyron2/vom"
)
func fortunePath(name string) string {
@@ -42,21 +45,24 @@
func waitForStore(store storage.Store) {
ctx := rt.R().NewContext()
+ // Register *store.Entry for WatchGlob.
+ // TODO(tilaks): store.Entry is declared in vdl, vom should register the
+ // pointer automatically.
+ vom.Register(&istore.Entry{})
+
fmt.Printf("Waiting for Store to be initialized with fortune schema...\n")
// List of paths to check in store.
paths := []string{appPath, fortunePath(""), userPath("")}
- for _, p := range paths {
- for {
- exists, err := store.Bind(p).Exists(ctx, nil)
- if err != nil {
- log.Fatalf("exists %s failed: %v", p, err)
- }
- if exists {
- break
- }
- // Retry until ready.
- time.Sleep(5 * time.Second)
+ for _, path := range paths {
+ req := iwatch.GlobRequest{Pattern: ""}
+ stream, err := store.Bind(path).WatchGlob(ctx, req)
+ if err != nil {
+ log.Fatalf("WatchGlob %s failed: %v", path, err)
}
+ if _, err := stream.Recv(); err != nil {
+ log.Fatalf("Recv failed: %v", err)
+ }
+ stream.Cancel()
}
fmt.Printf("Store is ready\n")
diff --git a/runtimes/google/ipc/stream/vif/vif.go b/runtimes/google/ipc/stream/vif/vif.go
index 56586d6..15ea933 100644
--- a/runtimes/google/ipc/stream/vif/vif.go
+++ b/runtimes/google/ipc/stream/vif/vif.go
@@ -21,6 +21,7 @@
"veyron/runtimes/google/lib/bqueue/drrqueue"
"veyron/runtimes/google/lib/iobuf"
"veyron/runtimes/google/lib/pcqueue"
+ vsync "veyron/runtimes/google/lib/sync"
"veyron/runtimes/google/lib/upcqueue"
"veyron2/ipc/stream"
@@ -39,7 +40,7 @@
localEP naming.Endpoint
vcMap *vcMap
- wpending, rpending *waitGroup
+ wpending, rpending vsync.WaitGroup
muListen sync.Mutex
acceptor *upcqueue.T // GUARDED_BY(muListen)
@@ -160,8 +161,6 @@
conn: conn,
pool: iobuf.NewPool(0),
vcMap: newVCMap(),
- wpending: newWaitGroup(),
- rpending: newWaitGroup(),
acceptor: acceptor,
listenerOpts: listenerOpts,
localEP: ep,
@@ -731,50 +730,3 @@
b.Release()
}
}
-
-// waitGroup implements a sync.WaitGroup like structure that does not require
-// all calls to Add to be made before Wait, instead calls to Add after Wait
-// will fail.
-type waitGroup struct {
- n int
- wait bool
- mu sync.Mutex
- cond *sync.Cond
-}
-
-func newWaitGroup() *waitGroup {
- w := &waitGroup{}
- w.cond = sync.NewCond(&w.mu)
- return w
-}
-
-func (w *waitGroup) TryAdd() bool {
- w.mu.Lock()
- defer w.mu.Unlock()
- if !w.wait {
- w.n++
- return true
- }
- return false
-}
-
-func (w *waitGroup) Done() {
- w.mu.Lock()
- defer w.mu.Unlock()
- w.n--
- if w.n < 0 {
- panic(fmt.Sprintf("more calls to Done than Add"))
- }
- if w.n == 0 {
- w.cond.Broadcast()
- }
-}
-
-func (w *waitGroup) Wait() {
- w.mu.Lock()
- w.wait = true
- for w.n > 0 {
- w.cond.Wait()
- }
- w.mu.Unlock()
-}
diff --git a/runtimes/google/lib/sync/doc.go b/runtimes/google/lib/sync/doc.go
new file mode 100644
index 0000000..3e184b9
--- /dev/null
+++ b/runtimes/google/lib/sync/doc.go
@@ -0,0 +1,2 @@
+// Package sync provides synchronization primitives.
+package sync
diff --git a/runtimes/google/lib/sync/semaphore.go b/runtimes/google/lib/sync/semaphore.go
index 1a4cc18..b6ea778 100644
--- a/runtimes/google/lib/sync/semaphore.go
+++ b/runtimes/google/lib/sync/semaphore.go
@@ -1,4 +1,3 @@
-// Package sync provides synchronization primitives.
package sync
import (
diff --git a/runtimes/google/lib/sync/wait_group.go b/runtimes/google/lib/sync/wait_group.go
new file mode 100644
index 0000000..3ee2ec1
--- /dev/null
+++ b/runtimes/google/lib/sync/wait_group.go
@@ -0,0 +1,57 @@
+package sync
+
+import "sync"
+
+// WaitGroup implements a sync.WaitGroup-like structure that does not require
+// all calls to Add to be made before Wait, instead calls to Add after Wait
+// will fail.
+//
+// As a result, WaitGroup cannot be "re-used" in the way that sync.WaitGroup
+// can. In the following example using sync.WaitGroup, Add, Done and Wait behave
+// in the same way in rounds 1 and 2.
+//
+// var wg sync.WaitGroup
+//
+// Round #1.
+// wg.Add(1)
+// go wg.Done()
+// wg.Wait()
+//
+// Round #2.
+// wg.Add(1)
+// go wg.Done()
+// wg.Wait()
+//
+// However, an equivalent program using WaitGroup would receive an error on the
+// second call to TryAdd.
+type WaitGroup struct {
+ mu sync.Mutex
+ waiting bool
+ pending sync.WaitGroup
+}
+
+// TryAdd attempts to increment the counter. If Wait has already been called,
+// TryAdd fails to increment the counter and returns false.
+// If the counter becomes zero, all goroutines blocked on Wait are released.
+func (w *WaitGroup) TryAdd() (added bool) {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ if w.waiting {
+ return false
+ }
+ w.pending.Add(1)
+ return true
+}
+
+// Done decrements the counter. If the counter goes negative, Done panics.
+func (w *WaitGroup) Done() {
+ w.pending.Done()
+}
+
+// Wait blocks until the counter is zero.
+func (w *WaitGroup) Wait() {
+ w.mu.Lock()
+ w.waiting = true
+ w.mu.Unlock()
+ w.pending.Wait()
+}
diff --git a/runtimes/google/lib/sync/wait_group_test.go b/runtimes/google/lib/sync/wait_group_test.go
new file mode 100644
index 0000000..7a6bc92
--- /dev/null
+++ b/runtimes/google/lib/sync/wait_group_test.go
@@ -0,0 +1,118 @@
+package sync
+
+import (
+ "testing"
+ "veyron/lib/testutil"
+)
+
+// TestRandom tests Wait after a random sequence of TryAdd's and Done's that
+// leaves the counter at 0.
+func TestRandom(t *testing.T) {
+ var w WaitGroup
+ N := 100
+
+ count := 0
+ for n := 0; n < N; n++ {
+ if count == 0 || testutil.Rand.Intn(2) == 0 {
+ if !w.TryAdd() {
+ t.Fatal("TryAdd failed")
+ }
+ count++
+ continue
+ }
+ w.Done()
+ count--
+ }
+ for d := 0; d < count; d++ {
+ w.Done()
+ }
+
+ w.Wait()
+}
+
+func TestConcurrentWait(t *testing.T) {
+ for r := 0; r < 100; r++ {
+ var w WaitGroup
+
+ done := make(chan struct{}, 1)
+
+ if !w.TryAdd() {
+ t.Fatal("TryAdd failed")
+ }
+
+ go func() {
+ w.Wait()
+ // w.Wait() should not return before w.Done() sets the counter
+ // to 0.
+ // This test is not deterministic as we cannot infer the order
+ // in which Wait() and the last Done() return. Hopefully, bugs
+ // will revealed by repeating the test.
+ select {
+ case <-done:
+ default:
+ t.Fatal("Wait returned before Done.")
+ }
+ }()
+
+ for w.TryAdd() {
+ w.Done()
+ }
+ close(done)
+ w.Done()
+ }
+}
+
+func TestTryAddFailsAfterWait(t *testing.T) {
+ var w WaitGroup
+
+ if !w.TryAdd() {
+ t.Fatal("TryAdd failed")
+ }
+
+ go w.Wait()
+
+ // At some point, another goroutine will be in w.Wait() and w.TryAdd()
+ // should fail. If this doesn't happen, the test will never terminate.
+ for w.TryAdd() {
+ w.Done()
+ }
+ w.Done()
+}
+
+func TestIdempotentWait(t *testing.T) {
+ var w WaitGroup
+
+ done := make(chan struct{}, 1)
+
+ if !w.TryAdd() {
+ t.Fatal("TryAdd failed")
+ }
+
+ // w.Wait() should be idempotent.
+ for i := 0; i < 2; i++ {
+ go func() {
+ w.Wait()
+ select {
+ case <-done:
+ default:
+ t.Fatal("Wait returned before Done.")
+ }
+ }()
+ }
+
+ for w.TryAdd() {
+ w.Done()
+ }
+ close(done)
+ w.Done()
+}
+
+func TestDoneFailsBeforeAdd(t *testing.T) {
+ var w WaitGroup
+ defer func() {
+ if r := recover(); r == nil {
+ t.Fatal("Done succeeded before Add.")
+ }
+ }()
+ w.Done()
+}
diff --git a/runtimes/google/vsync/vsync.vdl b/runtimes/google/vsync/vsync.vdl
index aa06ec9..f6d8b9b 100644
--- a/runtimes/google/vsync/vsync.vdl
+++ b/runtimes/google/vsync/vsync.vdl
@@ -28,7 +28,7 @@
// It contains log related metadata: DevID is the id of the
// device that created the log record, GNum is the ID of the
// generation that the log record is part of, LSN is the log
-// sequence number of the log record in the generation GNum,
+// sequence number of the log record in the generation GNum,
// and RecType is the type of log record.
//
// It also contains information relevant to the updates to an object
@@ -59,10 +59,10 @@
// Delete indicates whether the mutation resulted in the object being
// deleted from the store.
Delete bool
- // Continue tracks the transaction boundaries in a range of mutations.
+ // Continued tracks the transaction boundaries in a range of mutations.
// It is set to true in all transaction mutations except the last one
// in which it is set to false to mark the end of the transaction.
- Continue bool
+ Continued bool
}
// Sync allows a device to GetDeltas from another device.
diff --git a/runtimes/google/vsync/vsync.vdl.go b/runtimes/google/vsync/vsync.vdl.go
index e2120db..fb9834a 100644
--- a/runtimes/google/vsync/vsync.vdl.go
+++ b/runtimes/google/vsync/vsync.vdl.go
@@ -67,10 +67,10 @@
// Delete indicates whether the mutation resulted in the object being
// deleted from the store.
Delete bool
- // Continue tracks the transaction boundaries in a range of mutations.
+ // Continued tracks the transaction boundaries in a range of mutations.
// It is set to true in all transaction mutations except the last one
// in which it is set to false to mark the end of the transaction.
- Continue bool
+ Continued bool
}
const (
@@ -305,7 +305,7 @@
_gen_wiretype.FieldType{Type: 0x50, Name: "Mutation"},
_gen_wiretype.FieldType{Type: 0x25, Name: "SyncTime"},
_gen_wiretype.FieldType{Type: 0x2, Name: "Delete"},
- _gen_wiretype.FieldType{Type: 0x2, Name: "Continue"},
+ _gen_wiretype.FieldType{Type: 0x2, Name: "Continued"},
},
"veyron/runtimes/google/vsync.LogValue", []string(nil)},
_gen_wiretype.StructType{
diff --git a/runtimes/google/vsync/watcher.go b/runtimes/google/vsync/watcher.go
index d101d7b..f911231 100644
--- a/runtimes/google/vsync/watcher.go
+++ b/runtimes/google/vsync/watcher.go
@@ -166,7 +166,7 @@
return fmt.Errorf("invalid change value, not a mutation: %#v", ch)
}
- val := &LogValue{Mutation: *mu, SyncTime: syncTime, Delete: ch.State == watch.DoesNotExist, Continue: ch.Continued}
+ val := &LogValue{Mutation: *mu, SyncTime: syncTime, Delete: ch.State == watch.DoesNotExist, Continued: ch.Continued}
var parents []storage.Version
if mu.PriorVersion != storage.NoVersion {
parents = []storage.Version{mu.PriorVersion}
diff --git a/services/store/memstore/query/eval.go b/services/store/memstore/query/eval.go
index 3b65a30..d8a78d8 100644
--- a/services/store/memstore/query/eval.go
+++ b/services/store/memstore/query/eval.go
@@ -10,6 +10,7 @@
"sync"
"veyron2/vlog"
+ vsync "veyron/runtimes/google/lib/sync"
"veyron/services/store/memstore/state"
"veyron/services/store/service"
@@ -46,7 +47,7 @@
// to this stack. The top of the stack is the end of the slice.
results []nestedChannel
// cleanup is used for testing to ensure that no goroutines are leaked.
- cleanup sync.WaitGroup
+ cleanup vsync.WaitGroup
// maxNesting is the largest value used for nestedChannel.nesting. It
// is the maximum nesting over the duration of the query while len(results)
// is just the instantaneous nesting.
@@ -207,7 +208,10 @@
results: []nestedChannel{nestedChannel{0, out}},
abort: make(chan struct{}),
}
- it.cleanup.Add(1)
+ if !it.cleanup.TryAdd() {
+ // The query has been aborted by a call to Cancel.
+ return it
+ }
go evaluator.eval(&context{
sn: sn,
suffix: name.String(),
@@ -218,6 +222,7 @@
abort: it.abort,
cleanup: &it.cleanup,
})
+
return it
}
@@ -246,7 +251,7 @@
abort chan struct{}
// cleanup is used for testing to ensure that no goroutines are leaked.
// evaluator.eval implementations should call Done when finished processing.
- cleanup *sync.WaitGroup
+ cleanup *vsync.WaitGroup
}
// emit sends result on c.out. It is careful to watch for aborts. result can be
@@ -392,7 +397,11 @@
abort: c.abort,
cleanup: c.cleanup,
}
- c.cleanup.Add(1)
+ if !c.cleanup.TryAdd() {
+ // The query has been aborted by a call to Cancel.
+ close(srcOut)
+ return srcOut
+ }
go src.eval(&srcContext)
return srcOut
}
@@ -543,7 +552,10 @@
abort: c.abort,
cleanup: c.cleanup,
}
- c.cleanup.Add(1)
+ if !c.cleanup.TryAdd() {
+ // The query has been aborted by a call to Cancel.
+ return false
+ }
go a.evaluator.eval(ctxt)
// If the subpipeline would produce a single result, use that single result
diff --git a/services/store/memstore/watch/watcher.go b/services/store/memstore/watch/watcher.go
index 5956110..4cf8562 100644
--- a/services/store/memstore/watch/watcher.go
+++ b/services/store/memstore/watch/watcher.go
@@ -5,9 +5,9 @@
"encoding/binary"
"errors"
"io"
- "sync"
"time"
+ "veyron/runtimes/google/lib/sync"
"veyron/services/store/memstore"
"veyron/services/store/raw"
"veyron/services/store/service"
@@ -103,7 +103,9 @@
done := make(chan error, 1)
- w.pending.Add(1)
+ if !w.pending.TryAdd() {
+ return ErrWatchClosed
+ }
// This goroutine does not leak because processRequest is always terminated.
go func() {
defer w.pending.Done()
diff --git a/tools/vrpc/impl/impl_test.go b/tools/vrpc/impl/impl_test.go
index 262f3e8..ee67bf0 100644
--- a/tools/vrpc/impl/impl_test.go
+++ b/tools/vrpc/impl/impl_test.go
@@ -21,48 +21,48 @@
// TypeTester interface implementation
-func (*server) Bool(call ipc.ServerContext, i1 bool) (bool, error) {
- vlog.VI(2).Info("Bool(%v) was called.", i1)
+func (*server) EchoBool(call ipc.ServerContext, i1 bool) (bool, error) {
+ vlog.VI(2).Info("EchoBool(%v) was called.", i1)
return i1, nil
}
-func (*server) Float32(call ipc.ServerContext, i1 float32) (float32, error) {
- vlog.VI(2).Info("Float32(%u) was called.", i1)
+func (*server) EchoFloat32(call ipc.ServerContext, i1 float32) (float32, error) {
+ vlog.VI(2).Info("EchoFloat32(%u) was called.", i1)
return i1, nil
}
-func (*server) Float64(call ipc.ServerContext, i1 float64) (float64, error) {
- vlog.VI(2).Info("Float64(%u) was called.", i1)
+func (*server) EchoFloat64(call ipc.ServerContext, i1 float64) (float64, error) {
+ vlog.VI(2).Info("EchoFloat64(%u) was called.", i1)
return i1, nil
}
-func (*server) Int32(call ipc.ServerContext, i1 int32) (int32, error) {
- vlog.VI(2).Info("Int32(%v) was called.", i1)
+func (*server) EchoInt32(call ipc.ServerContext, i1 int32) (int32, error) {
+ vlog.VI(2).Info("EchoInt32(%v) was called.", i1)
return i1, nil
}
-func (*server) Int64(call ipc.ServerContext, i1 int64) (int64, error) {
- vlog.VI(2).Info("Int64(%v) was called.", i1)
+func (*server) EchoInt64(call ipc.ServerContext, i1 int64) (int64, error) {
+ vlog.VI(2).Info("EchoInt64(%v) was called.", i1)
return i1, nil
}
-func (*server) String(call ipc.ServerContext, i1 string) (string, error) {
- vlog.VI(2).Info("String(%v) was called.", i1)
+func (*server) EchoString(call ipc.ServerContext, i1 string) (string, error) {
+ vlog.VI(2).Info("EchoString(%v) was called.", i1)
return i1, nil
}
-func (*server) Byte(call ipc.ServerContext, i1 byte) (byte, error) {
- vlog.VI(2).Info("Byte(%v) was called.", i1)
+func (*server) EchoByte(call ipc.ServerContext, i1 byte) (byte, error) {
+ vlog.VI(2).Info("EchoByte(%v) was called.", i1)
return i1, nil
}
-func (*server) UInt32(call ipc.ServerContext, i1 uint32) (uint32, error) {
- vlog.VI(2).Info("UInt32(%u) was called.", i1)
+func (*server) EchoUInt32(call ipc.ServerContext, i1 uint32) (uint32, error) {
+ vlog.VI(2).Info("EchoUInt32(%u) was called.", i1)
return i1, nil
}
-func (*server) UInt64(call ipc.ServerContext, i1 uint64) (uint64, error) {
- vlog.VI(2).Info("UInt64(%u) was called.", i1)
+func (*server) EchoUInt64(call ipc.ServerContext, i1 uint64) (uint64, error) {
+ vlog.VI(2).Info("EchoUInt64(%u) was called.", i1)
return i1, nil
}
@@ -191,15 +191,15 @@
}
expectedSignature := []string{
- "func Bool(I1 bool) (O1 bool, E error)",
- "func Float32(I1 float32) (O1 float32, E error)",
- "func Float64(I1 float64) (O1 float64, E error)",
- "func Int32(I1 int32) (O1 int32, E error)",
- "func Int64(I1 int64) (O1 int64, E error)",
- "func String(I1 string) (O1 string, E error)",
- "func Byte(I1 byte) (O1 byte, E error)",
- "func UInt32(I1 uint32) (O1 uint32, E error)",
- "func UInt64(I1 uint64) (O1 uint64, E error)",
+ "func EchoBool(I1 bool) (O1 bool, E error)",
+ "func EchoFloat32(I1 float32) (O1 float32, E error)",
+ "func EchoFloat64(I1 float64) (O1 float64, E error)",
+ "func EchoInt32(I1 int32) (O1 int32, E error)",
+ "func EchoInt64(I1 int64) (O1 int64, E error)",
+ "func EchoString(I1 string) (O1 string, E error)",
+ "func EchoByte(I1 byte) (O1 byte, E error)",
+ "func EchoUInt32(I1 uint32) (O1 uint32, E error)",
+ "func EchoUInt64(I1 uint64) (O1 uint64, E error)",
"func InputArray(I1 [2]byte) (E error)",
"func InputMap(I1 map[byte]byte) (E error)",
"func InputSlice(I1 []byte) (E error)",
@@ -236,15 +236,15 @@
// Test the 'invoke' command.
tests := [][]string{
- []string{"Bool", "Bool(true) = [true, <nil>]", "[\"bool\",true]"},
- []string{"Float32", "Float32(3.2) = [3.2, <nil>]", "[\"float32\",3.2]"},
- []string{"Float64", "Float64(6.4) = [6.4, <nil>]", "[\"float64\",6.4]"},
- []string{"Int32", "Int32(-32) = [-32, <nil>]", "[\"int32\",-32]"},
- []string{"Int64", "Int64(-64) = [-64, <nil>]", "[\"int64\",-64]"},
- []string{"String", "String(Hello World!) = [Hello World!, <nil>]", "[\"string\",\"Hello World!\"]"},
- []string{"Byte", "Byte(8) = [8, <nil>]", "[\"byte\",8]"},
- []string{"UInt32", "UInt32(32) = [32, <nil>]", "[\"uint32\",32]"},
- []string{"UInt64", "UInt64(64) = [64, <nil>]", "[\"uint64\",64]"},
+ []string{"EchoBool", "EchoBool(true) = [true, <nil>]", "[\"bool\",true]"},
+ []string{"EchoFloat32", "EchoFloat32(3.2) = [3.2, <nil>]", "[\"float32\",3.2]"},
+ []string{"EchoFloat64", "EchoFloat64(6.4) = [6.4, <nil>]", "[\"float64\",6.4]"},
+ []string{"EchoInt32", "EchoInt32(-32) = [-32, <nil>]", "[\"int32\",-32]"},
+ []string{"EchoInt64", "EchoInt64(-64) = [-64, <nil>]", "[\"int64\",-64]"},
+ []string{"EchoString", "EchoString(Hello World!) = [Hello World!, <nil>]", "[\"string\",\"Hello World!\"]"},
+ []string{"EchoByte", "EchoByte(8) = [8, <nil>]", "[\"byte\",8]"},
+ []string{"EchoUInt32", "EchoUInt32(32) = [32, <nil>]", "[\"uint32\",32]"},
+ []string{"EchoUInt64", "EchoUInt64(64) = [64, <nil>]", "[\"uint64\",64]"},
// TODO(jsimsa): The InputArray currently triggers an error in the
// vom decoder. Benj is looking into this.
//
@@ -274,7 +274,7 @@
}
testErrors := [][]string{
- []string{"Bool", "usage error"},
+ []string{"EchoBool", "usage error"},
[]string{"DoesNotExit", "invoke: method DoesNotExit not found"},
}
for _, test := range testErrors {
diff --git a/tools/vrpc/test_base/test_base.vdl b/tools/vrpc/test_base/test_base.vdl
index 05b8de4..ba6496c 100644
--- a/tools/vrpc/test_base/test_base.vdl
+++ b/tools/vrpc/test_base/test_base.vdl
@@ -6,15 +6,15 @@
type TypeTester interface {
// Methods to test support for generic types.
- Bool(I1 bool) (O1 bool, E error)
- Float32(I1 float32) (O1 float32, E error)
- Float64(I1 float64) (O1 float64, E error)
- Int32(I1 int32) (O1 int32, E error)
- Int64(I1 int64) (O1 int64, E error)
- String(I1 string) (O1 string, E error)
- Byte(I1 byte) (O1 byte, E error)
- UInt32(I1 uint32) (O1 uint32, E error)
- UInt64(I1 uint64) (O1 uint64, E error)
+ EchoBool(I1 bool) (O1 bool, E error)
+ EchoFloat32(I1 float32) (O1 float32, E error)
+ EchoFloat64(I1 float64) (O1 float64, E error)
+ EchoInt32(I1 int32) (O1 int32, E error)
+ EchoInt64(I1 int64) (O1 int64, E error)
+ EchoString(I1 string) (O1 string, E error)
+ EchoByte(I1 byte) (O1 byte, E error)
+ EchoUInt32(I1 uint32) (O1 uint32, E error)
+ EchoUInt64(I1 uint64) (O1 uint64, E error)
// Methods to test support for composite types.
InputArray(I1 [2]byte) (E error)
diff --git a/tools/vrpc/test_base/test_base.vdl.go b/tools/vrpc/test_base/test_base.vdl.go
index eabe26a..958f64e 100644
--- a/tools/vrpc/test_base/test_base.vdl.go
+++ b/tools/vrpc/test_base/test_base.vdl.go
@@ -24,15 +24,15 @@
// to enable embedding without method collisions. Not to be used directly by clients.
type TypeTester_ExcludingUniversal interface {
// Methods to test support for generic types.
- Bool(ctx _gen_context.T, I1 bool, opts ..._gen_ipc.CallOpt) (reply bool, err error)
- Float32(ctx _gen_context.T, I1 float32, opts ..._gen_ipc.CallOpt) (reply float32, err error)
- Float64(ctx _gen_context.T, I1 float64, opts ..._gen_ipc.CallOpt) (reply float64, err error)
- Int32(ctx _gen_context.T, I1 int32, opts ..._gen_ipc.CallOpt) (reply int32, err error)
- Int64(ctx _gen_context.T, I1 int64, opts ..._gen_ipc.CallOpt) (reply int64, err error)
- String(ctx _gen_context.T, I1 string, opts ..._gen_ipc.CallOpt) (reply string, err error)
- Byte(ctx _gen_context.T, I1 byte, opts ..._gen_ipc.CallOpt) (reply byte, err error)
- UInt32(ctx _gen_context.T, I1 uint32, opts ..._gen_ipc.CallOpt) (reply uint32, err error)
- UInt64(ctx _gen_context.T, I1 uint64, opts ..._gen_ipc.CallOpt) (reply uint64, err error)
+ 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)
// 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)
@@ -57,15 +57,15 @@
type TypeTesterService interface {
// Methods to test support for generic types.
- Bool(context _gen_ipc.ServerContext, I1 bool) (reply bool, err error)
- Float32(context _gen_ipc.ServerContext, I1 float32) (reply float32, err error)
- Float64(context _gen_ipc.ServerContext, I1 float64) (reply float64, err error)
- Int32(context _gen_ipc.ServerContext, I1 int32) (reply int32, err error)
- Int64(context _gen_ipc.ServerContext, I1 int64) (reply int64, err error)
- String(context _gen_ipc.ServerContext, I1 string) (reply string, err error)
- Byte(context _gen_ipc.ServerContext, I1 byte) (reply byte, err error)
- UInt32(context _gen_ipc.ServerContext, I1 uint32) (reply uint32, err error)
- UInt64(context _gen_ipc.ServerContext, I1 uint64) (reply uint64, err error)
+ 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)
@@ -179,9 +179,9 @@
name string
}
-func (__gen_c *clientStubTypeTester) Bool(ctx _gen_context.T, I1 bool, opts ..._gen_ipc.CallOpt) (reply bool, err error) {
+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.StartCall(ctx, __gen_c.name, "Bool", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoBool", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -190,9 +190,9 @@
return
}
-func (__gen_c *clientStubTypeTester) Float32(ctx _gen_context.T, I1 float32, opts ..._gen_ipc.CallOpt) (reply float32, err error) {
+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.StartCall(ctx, __gen_c.name, "Float32", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoFloat32", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -201,9 +201,9 @@
return
}
-func (__gen_c *clientStubTypeTester) Float64(ctx _gen_context.T, I1 float64, opts ..._gen_ipc.CallOpt) (reply float64, err error) {
+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.StartCall(ctx, __gen_c.name, "Float64", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoFloat64", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -212,9 +212,9 @@
return
}
-func (__gen_c *clientStubTypeTester) Int32(ctx _gen_context.T, I1 int32, opts ..._gen_ipc.CallOpt) (reply int32, err error) {
+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.StartCall(ctx, __gen_c.name, "Int32", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoInt32", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -223,9 +223,9 @@
return
}
-func (__gen_c *clientStubTypeTester) Int64(ctx _gen_context.T, I1 int64, opts ..._gen_ipc.CallOpt) (reply int64, err error) {
+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.StartCall(ctx, __gen_c.name, "Int64", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoInt64", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -234,9 +234,9 @@
return
}
-func (__gen_c *clientStubTypeTester) String(ctx _gen_context.T, I1 string, opts ..._gen_ipc.CallOpt) (reply string, err error) {
+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.StartCall(ctx, __gen_c.name, "String", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoString", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -245,9 +245,9 @@
return
}
-func (__gen_c *clientStubTypeTester) Byte(ctx _gen_context.T, I1 byte, opts ..._gen_ipc.CallOpt) (reply byte, err error) {
+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.StartCall(ctx, __gen_c.name, "Byte", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoByte", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -256,9 +256,9 @@
return
}
-func (__gen_c *clientStubTypeTester) UInt32(ctx _gen_context.T, I1 uint32, opts ..._gen_ipc.CallOpt) (reply uint32, err error) {
+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.StartCall(ctx, __gen_c.name, "UInt32", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoUInt32", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -267,9 +267,9 @@
return
}
-func (__gen_c *clientStubTypeTester) UInt64(ctx _gen_context.T, I1 uint64, opts ..._gen_ipc.CallOpt) (reply uint64, err error) {
+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.StartCall(ctx, __gen_c.name, "UInt64", []interface{}{I1}, opts...); err != nil {
+ if call, err = __gen_c.client.StartCall(ctx, __gen_c.name, "EchoUInt64", []interface{}{I1}, opts...); err != nil {
return
}
if ierr := call.Finish(&reply, &err); ierr != nil {
@@ -442,23 +442,23 @@
// 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().
switch method {
- case "Bool":
+ case "EchoBool":
return []interface{}{}, nil
- case "Float32":
+ case "EchoFloat32":
return []interface{}{}, nil
- case "Float64":
+ case "EchoFloat64":
return []interface{}{}, nil
- case "Int32":
+ case "EchoInt32":
return []interface{}{}, nil
- case "Int64":
+ case "EchoInt64":
return []interface{}{}, nil
- case "String":
+ case "EchoString":
return []interface{}{}, nil
- case "Byte":
+ case "EchoByte":
return []interface{}{}, nil
- case "UInt32":
+ case "EchoUInt32":
return []interface{}{}, nil
- case "UInt64":
+ case "EchoUInt64":
return []interface{}{}, nil
case "InputArray":
return []interface{}{}, nil
@@ -489,7 +489,7 @@
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["Bool"] = _gen_ipc.MethodSignature{
+ result.Methods["EchoBool"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 2},
},
@@ -498,7 +498,7 @@
{Name: "E", Type: 65},
},
}
- result.Methods["Byte"] = _gen_ipc.MethodSignature{
+ result.Methods["EchoByte"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 66},
},
@@ -507,7 +507,7 @@
{Name: "E", Type: 65},
},
}
- result.Methods["Float32"] = _gen_ipc.MethodSignature{
+ result.Methods["EchoFloat32"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 25},
},
@@ -516,7 +516,7 @@
{Name: "E", Type: 65},
},
}
- result.Methods["Float64"] = _gen_ipc.MethodSignature{
+ result.Methods["EchoFloat64"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 26},
},
@@ -525,6 +525,51 @@
{Name: "E", Type: 65},
},
}
+ result.Methods["EchoInt32"] = _gen_ipc.MethodSignature{
+ InArgs: []_gen_ipc.MethodArgument{
+ {Name: "I1", Type: 36},
+ },
+ OutArgs: []_gen_ipc.MethodArgument{
+ {Name: "O1", Type: 36},
+ {Name: "E", Type: 65},
+ },
+ }
+ result.Methods["EchoInt64"] = _gen_ipc.MethodSignature{
+ InArgs: []_gen_ipc.MethodArgument{
+ {Name: "I1", Type: 37},
+ },
+ OutArgs: []_gen_ipc.MethodArgument{
+ {Name: "O1", Type: 37},
+ {Name: "E", Type: 65},
+ },
+ }
+ result.Methods["EchoString"] = _gen_ipc.MethodSignature{
+ InArgs: []_gen_ipc.MethodArgument{
+ {Name: "I1", Type: 3},
+ },
+ OutArgs: []_gen_ipc.MethodArgument{
+ {Name: "O1", Type: 3},
+ {Name: "E", Type: 65},
+ },
+ }
+ result.Methods["EchoUInt32"] = _gen_ipc.MethodSignature{
+ InArgs: []_gen_ipc.MethodArgument{
+ {Name: "I1", Type: 52},
+ },
+ OutArgs: []_gen_ipc.MethodArgument{
+ {Name: "O1", Type: 52},
+ {Name: "E", Type: 65},
+ },
+ }
+ result.Methods["EchoUInt64"] = _gen_ipc.MethodSignature{
+ InArgs: []_gen_ipc.MethodArgument{
+ {Name: "I1", Type: 53},
+ },
+ OutArgs: []_gen_ipc.MethodArgument{
+ {Name: "O1", Type: 53},
+ {Name: "E", Type: 65},
+ },
+ }
result.Methods["InputArray"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 67},
@@ -557,24 +602,6 @@
{Name: "E", Type: 65},
},
}
- result.Methods["Int32"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
- {Name: "I1", Type: 36},
- },
- OutArgs: []_gen_ipc.MethodArgument{
- {Name: "O1", Type: 36},
- {Name: "E", Type: 65},
- },
- }
- result.Methods["Int64"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
- {Name: "I1", Type: 37},
- },
- OutArgs: []_gen_ipc.MethodArgument{
- {Name: "O1", Type: 37},
- {Name: "E", Type: 65},
- },
- }
result.Methods["MultipleArguments"] = _gen_ipc.MethodSignature{
InArgs: []_gen_ipc.MethodArgument{
{Name: "I1", Type: 36},
@@ -631,33 +658,6 @@
OutStream: 2,
}
- result.Methods["String"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
- {Name: "I1", Type: 3},
- },
- OutArgs: []_gen_ipc.MethodArgument{
- {Name: "O1", Type: 3},
- {Name: "E", Type: 65},
- },
- }
- result.Methods["UInt32"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
- {Name: "I1", Type: 52},
- },
- OutArgs: []_gen_ipc.MethodArgument{
- {Name: "O1", Type: 52},
- {Name: "E", Type: 65},
- },
- }
- result.Methods["UInt64"] = _gen_ipc.MethodSignature{
- InArgs: []_gen_ipc.MethodArgument{
- {Name: "I1", Type: 53},
- },
- OutArgs: []_gen_ipc.MethodArgument{
- {Name: "O1", Type: 53},
- {Name: "E", Type: 65},
- },
- }
result.TypeDefs = []_gen_vdl.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{
@@ -689,48 +689,48 @@
return
}
-func (__gen_s *ServerStubTypeTester) Bool(call _gen_ipc.ServerCall, I1 bool) (reply bool, err error) {
- reply, err = __gen_s.service.Bool(call, I1)
+func (__gen_s *ServerStubTypeTester) EchoBool(call _gen_ipc.ServerCall, I1 bool) (reply bool, err error) {
+ reply, err = __gen_s.service.EchoBool(call, I1)
return
}
-func (__gen_s *ServerStubTypeTester) Float32(call _gen_ipc.ServerCall, I1 float32) (reply float32, err error) {
- reply, err = __gen_s.service.Float32(call, I1)
+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 (__gen_s *ServerStubTypeTester) Float64(call _gen_ipc.ServerCall, I1 float64) (reply float64, err error) {
- reply, err = __gen_s.service.Float64(call, I1)
+func (__gen_s *ServerStubTypeTester) EchoFloat64(call _gen_ipc.ServerCall, I1 float64) (reply float64, err error) {
+ reply, err = __gen_s.service.EchoFloat64(call, I1)
return
}
-func (__gen_s *ServerStubTypeTester) Int32(call _gen_ipc.ServerCall, I1 int32) (reply int32, err error) {
- reply, err = __gen_s.service.Int32(call, I1)
+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) Int64(call _gen_ipc.ServerCall, I1 int64) (reply int64, err error) {
- reply, err = __gen_s.service.Int64(call, I1)
+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) String(call _gen_ipc.ServerCall, I1 string) (reply string, err error) {
- reply, err = __gen_s.service.String(call, I1)
+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) Byte(call _gen_ipc.ServerCall, I1 byte) (reply byte, err error) {
- reply, err = __gen_s.service.Byte(call, I1)
+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) UInt32(call _gen_ipc.ServerCall, I1 uint32) (reply uint32, err error) {
- reply, err = __gen_s.service.UInt32(call, I1)
+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) UInt64(call _gen_ipc.ServerCall, I1 uint64) (reply uint64, err error) {
- reply, err = __gen_s.service.UInt64(call, I1)
+func (__gen_s *ServerStubTypeTester) EchoUInt64(call _gen_ipc.ServerCall, I1 uint64) (reply uint64, err error) {
+ reply, err = __gen_s.service.EchoUInt64(call, I1)
return
}