veyron2/services/mounttable: Split types into separate pkg
Split the mounttable interface into two separate packages: one for the
interface itself, and one for the types.
This will allow implementations to use the generated types without
depending on the generated stubs.
Change-Id: I84430a464b20097b997c92f9cd05cdc1cb7ee62e
diff --git a/services/mgmt/logreader/impl/logdir_invoker.go b/services/mgmt/logreader/impl/logdir_invoker.go
index de226cc..ae1d44d 100644
--- a/services/mgmt/logreader/impl/logdir_invoker.go
+++ b/services/mgmt/logreader/impl/logdir_invoker.go
@@ -8,6 +8,7 @@
"veyron2/ipc"
"veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
"veyron2/vlog"
)
@@ -42,7 +43,7 @@
// globStep applies a glob recursively.
func (i *logDirectoryInvoker) globStep(name string, g *glob.Glob, isDir bool, stream mounttable.GlobbableServiceGlobStream) error {
if g.Len() == 0 && !isDir {
- if err := stream.SendStream().Send(mounttable.MountEntry{Name: name}); err != nil {
+ if err := stream.SendStream().Send(types.MountEntry{Name: name}); err != nil {
return err
}
}
diff --git a/services/mounttable/lib/mounttable.go b/services/mounttable/lib/mounttable.go
index 26b52ca..2a57fdc 100644
--- a/services/mounttable/lib/mounttable.go
+++ b/services/mounttable/lib/mounttable.go
@@ -17,6 +17,7 @@
"veyron2/rt"
"veyron2/security"
"veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
"veyron2/verror"
"veyron2/vlog"
)
@@ -205,7 +206,7 @@
// ResolveStep returns the next server in a resolution, the name remaining below that server,
// and whether or not that server is another mount table.
-func (ms *mountContext) ResolveStep(context ipc.ServerContext) (servers []mounttable.MountedServer, suffix string, err error) {
+func (ms *mountContext) ResolveStep(context ipc.ServerContext) (servers []types.MountedServer, suffix string, err error) {
vlog.VI(2).Infof("ResolveStep %q", ms.name)
mt := ms.mt
// TODO(caprita): we need to grab a write lock because walk may
@@ -337,7 +338,7 @@
n.removeUseless()
return
}
- sender.Send(mounttable.MountEntry{Name: name, Servers: m.servers.copyToSlice()})
+ sender.Send(types.MountEntry{Name: name, Servers: m.servers.copyToSlice()})
return
}
@@ -347,7 +348,7 @@
n.removeUseless()
return
}
- sender.Send(mounttable.MountEntry{Name: name})
+ sender.Send(types.MountEntry{Name: name})
}
if pattern.Finished() {
diff --git a/services/mounttable/lib/neighborhood.go b/services/mounttable/lib/neighborhood.go
index 33485c5..738c058 100644
--- a/services/mounttable/lib/neighborhood.go
+++ b/services/mounttable/lib/neighborhood.go
@@ -14,6 +14,7 @@
"veyron2/rt"
"veyron2/security"
"veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
"veyron2/vlog"
"code.google.com/p/mdns"
@@ -149,8 +150,8 @@
}
// neighbor returns the MountedServers for a particular neighbor.
-func (nh *neighborhood) neighbor(instance string) []mounttable.MountedServer {
- var reply []mounttable.MountedServer
+func (nh *neighborhood) neighbor(instance string) []types.MountedServer {
+ var reply []types.MountedServer
si := nh.mdns.ResolveInstance(instance, "veyron")
// Use a map to dedup any addresses seen
@@ -167,7 +168,7 @@
}
}
for addr, ttl := range addrMap {
- reply = append(reply, mounttable.MountedServer{addr, ttl})
+ reply = append(reply, types.MountedServer{addr, ttl})
}
if reply != nil {
@@ -183,15 +184,15 @@
for _, ip := range ips {
addr := net.JoinHostPort(ip.String(), strconv.Itoa(int(rr.Port)))
ep := naming.FormatEndpoint("tcp", addr)
- reply = append(reply, mounttable.MountedServer{naming.JoinAddressName(ep, ""), ttl})
+ reply = append(reply, types.MountedServer{naming.JoinAddressName(ep, ""), ttl})
}
}
return reply
}
// neighbors returns all neighbors and their MountedServer structs.
-func (nh *neighborhood) neighbors() map[string][]mounttable.MountedServer {
- neighbors := make(map[string][]mounttable.MountedServer, 0)
+func (nh *neighborhood) neighbors() map[string][]types.MountedServer {
+ neighbors := make(map[string][]types.MountedServer, 0)
members := nh.mdns.ServiceDiscovery("veyron")
for _, m := range members {
if neighbor := nh.neighbor(m.Name); neighbor != nil {
@@ -203,7 +204,7 @@
}
// ResolveStep implements ResolveStep
-func (ns *neighborhoodService) ResolveStep(_ ipc.ServerContext) (servers []mounttable.MountedServer, suffix string, err error) {
+func (ns *neighborhoodService) ResolveStep(_ ipc.ServerContext) (servers []types.MountedServer, suffix string, err error) {
nh := ns.nh
vlog.VI(2).Infof("ResolveStep %v\n", ns.elems)
if len(ns.elems) == 0 {
@@ -246,7 +247,7 @@
if ok, _ := g.MatchInitialSegment(k); !ok {
continue
}
- if err := sender.Send(mounttable.MountEntry{Name: k, Servers: n}); err != nil {
+ if err := sender.Send(types.MountEntry{Name: k, Servers: n}); err != nil {
return err
}
}
@@ -256,7 +257,7 @@
if neighbor == nil {
return naming.ErrNoSuchName
}
- return sender.Send(mounttable.MountEntry{Name: "", Servers: neighbor})
+ return sender.Send(types.MountEntry{Name: "", Servers: neighbor})
default:
return naming.ErrNoSuchName
}
diff --git a/services/mounttable/lib/serverlist.go b/services/mounttable/lib/serverlist.go
index d427456..2ba49f2 100644
--- a/services/mounttable/lib/serverlist.go
+++ b/services/mounttable/lib/serverlist.go
@@ -5,7 +5,7 @@
"sync"
"time"
- "veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
)
type serverListClock interface {
@@ -110,15 +110,15 @@
}
// copyToSlice returns the contents of the list as a slice of MountedServer.
-func (sl *serverList) copyToSlice() []mounttable.MountedServer {
+func (sl *serverList) copyToSlice() []types.MountedServer {
sl.Lock()
defer sl.Unlock()
- var slice []mounttable.MountedServer
+ var slice []types.MountedServer
now := slc.now()
for e := sl.l.Front(); e != nil; e = e.Next() {
s := e.Value.(*server)
ttl := uint32(s.expires.Sub(now).Seconds())
- ms := mounttable.MountedServer{Server: s.oa, TTL: ttl}
+ ms := types.MountedServer{Server: s.oa, TTL: ttl}
slice = append(slice, ms)
}
return slice
diff --git a/services/store/server/object.go b/services/store/server/object.go
index a8906d6..f5bef59 100644
--- a/services/store/server/object.go
+++ b/services/store/server/object.go
@@ -9,6 +9,7 @@
"veyron2/ipc"
"veyron2/query"
"veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
"veyron2/services/store"
"veyron2/services/watch"
"veyron2/storage"
@@ -140,12 +141,12 @@
type globStreamSenderAdapter struct {
stream interface {
- Send(entry mounttable.MountEntry) error
+ Send(entry types.MountEntry) error
}
}
func (a *globStreamSenderAdapter) Send(item string) error {
- return a.stream.Send(mounttable.MountEntry{Name: item})
+ return a.stream.Send(types.MountEntry{Name: item})
}
type globStreamAdapter struct {
diff --git a/services/wsprd/lib/remove_this.go b/services/wsprd/lib/remove_this.go
index 266ca2b..6368202 100644
--- a/services/wsprd/lib/remove_this.go
+++ b/services/wsprd/lib/remove_this.go
@@ -2,7 +2,7 @@
import (
rps "veyron/examples/rockpaperscissors"
- "veyron2/services/mounttable"
+ mttypes "veyron2/services/mounttable/types"
"veyron2/services/store"
"veyron2/services/watch"
"veyron2/storage"
@@ -10,7 +10,7 @@
)
func init() {
- vom.Register(mounttable.MountEntry{})
+ vom.Register(mttypes.MountEntry{})
vom.Register(storage.Entry{})
vom.Register(storage.Stat{})
vom.Register(store.NestedResult(0))
diff --git a/tools/mounttable/impl/impl_test.go b/tools/mounttable/impl/impl_test.go
index 62e3d8a..2f2ec09 100644
--- a/tools/mounttable/impl/impl_test.go
+++ b/tools/mounttable/impl/impl_test.go
@@ -13,6 +13,7 @@
"veyron2/rt"
"veyron2/security"
"veyron2/services/mounttable"
+ "veyron2/services/mounttable/types"
"veyron2/vlog"
)
@@ -23,8 +24,8 @@
func (s *server) Glob(_ ipc.ServerContext, pattern string, stream mounttable.GlobbableServiceGlobStream) error {
vlog.VI(2).Infof("Glob() was called. suffix=%v pattern=%q", s.suffix, pattern)
sender := stream.SendStream()
- sender.Send(mounttable.MountEntry{"name1", []mounttable.MountedServer{{"server1", 123}}})
- sender.Send(mounttable.MountEntry{"name2", []mounttable.MountedServer{{"server2", 456}, {"server3", 789}}})
+ sender.Send(types.MountEntry{"name1", []types.MountedServer{{"server1", 123}}})
+ sender.Send(types.MountEntry{"name2", []types.MountedServer{{"server2", 456}, {"server3", 789}}})
return nil
}
@@ -38,9 +39,9 @@
return nil
}
-func (s *server) ResolveStep(ipc.ServerContext) (servers []mounttable.MountedServer, suffix string, err error) {
+func (s *server) ResolveStep(ipc.ServerContext) (servers []types.MountedServer, suffix string, err error) {
vlog.VI(2).Infof("ResolveStep() was called. suffix=%v", s.suffix)
- servers = []mounttable.MountedServer{{"server1", 123}}
+ servers = []types.MountedServer{{"server1", 123}}
suffix = s.suffix
return
}
diff --git a/tools/vrpc/impl/impl.go b/tools/vrpc/impl/impl.go
index 07330eb..ffd6dd9 100644
--- a/tools/vrpc/impl/impl.go
+++ b/tools/vrpc/impl/impl.go
@@ -19,7 +19,7 @@
idl_binary "veyron2/services/mgmt/binary"
idl_node "veyron2/services/mgmt/node"
- idl_mounttable "veyron2/services/mounttable"
+ idl_mounttable_types "veyron2/services/mounttable/types"
)
const serverDesc = `
@@ -131,9 +131,9 @@
vom.Register(x2)
var x3 idl_binary.Description
vom.Register(x3)
- var x4 idl_mounttable.MountedServer
+ var x4 idl_mounttable_types.MountedServer
vom.Register(x4)
- var x5 idl_mounttable.MountEntry
+ var x5 idl_mounttable_types.MountEntry
vom.Register(x5)
// Decode the inputs from vomJSON-formatted command-line arguments.