pkg namespace, func NamespaceClient(string) NamespaceClientStub
pkg namespace, func NamespaceServer(NamespaceServerMethods) NamespaceServerStub
pkg namespace, func New(*context.T) *Server
pkg namespace, method (*NamespaceGlobServerCallStub) Init(rpc.StreamServerCall)
pkg namespace, method (*NamespaceGlobServerCallStub) SendStream() interface {  Send(item naming.GlobReply) error;}
pkg namespace, method (*Server) Delete(*context.T, rpc.ServerCall, string, bool) error
pkg namespace, method (*Server) DisableCache(*context.T, rpc.ServerCall, bool) error
pkg namespace, method (*Server) FlushCacheEntry(*context.T, rpc.ServerCall, string) (bool, error)
pkg namespace, method (*Server) GetPermissions(*context.T, rpc.ServerCall, string) (access.Permissions, string, error)
pkg namespace, method (*Server) Glob(*context.T, *NamespaceGlobServerCallStub, string) error
pkg namespace, method (*Server) Mount(*context.T, rpc.ServerCall, string, string, time.Duration, bool) error
pkg namespace, method (*Server) Resolve(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, method (*Server) ResolveToMountTable(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, method (*Server) Roots(*context.T, rpc.ServerCall) ([]string, error)
pkg namespace, method (*Server) SetPermissions(*context.T, rpc.ServerCall, string, access.Permissions, string) error
pkg namespace, method (*Server) SetRoots(*context.T, rpc.ServerCall, []string) error
pkg namespace, method (*Server) Unmount(*context.T, rpc.ServerCall, string, string) error
pkg namespace, type NamespaceClientMethods interface { Delete, DisableCache, FlushCacheEntry, GetPermissions, Glob, Mount, Resolve, ResolveToMountTable, Roots, SetPermissions, SetRoots, Unmount }
pkg namespace, type NamespaceClientMethods interface, Delete(*context.T, string, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientMethods interface, DisableCache(*context.T, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientMethods interface, FlushCacheEntry(*context.T, string, ...rpc.CallOpt) (bool, error)
pkg namespace, type NamespaceClientMethods interface, GetPermissions(*context.T, string, ...rpc.CallOpt) (access.Permissions, string, error)
pkg namespace, type NamespaceClientMethods interface, Glob(*context.T, string, ...rpc.CallOpt) (NamespaceGlobClientCall, error)
pkg namespace, type NamespaceClientMethods interface, Mount(*context.T, string, string, time.Duration, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientMethods interface, Resolve(*context.T, string, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientMethods interface, ResolveToMountTable(*context.T, string, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientMethods interface, Roots(*context.T, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientMethods interface, SetPermissions(*context.T, string, access.Permissions, string, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientMethods interface, SetRoots(*context.T, []string, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientMethods interface, Unmount(*context.T, string, string, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface { Delete, DisableCache, FlushCacheEntry, GetPermissions, Glob, Mount, Resolve, ResolveToMountTable, Roots, SetPermissions, SetRoots, Unmount }
pkg namespace, type NamespaceClientStub interface, Delete(*context.T, string, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface, DisableCache(*context.T, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface, FlushCacheEntry(*context.T, string, ...rpc.CallOpt) (bool, error)
pkg namespace, type NamespaceClientStub interface, GetPermissions(*context.T, string, ...rpc.CallOpt) (access.Permissions, string, error)
pkg namespace, type NamespaceClientStub interface, Glob(*context.T, string, ...rpc.CallOpt) (NamespaceGlobClientCall, error)
pkg namespace, type NamespaceClientStub interface, Mount(*context.T, string, string, time.Duration, bool, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface, Resolve(*context.T, string, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientStub interface, ResolveToMountTable(*context.T, string, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientStub interface, Roots(*context.T, ...rpc.CallOpt) ([]string, error)
pkg namespace, type NamespaceClientStub interface, SetPermissions(*context.T, string, access.Permissions, string, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface, SetRoots(*context.T, []string, ...rpc.CallOpt) error
pkg namespace, type NamespaceClientStub interface, Unmount(*context.T, string, string, ...rpc.CallOpt) error
pkg namespace, type NamespaceGlobClientCall interface { Finish, RecvStream }
pkg namespace, type NamespaceGlobClientCall interface, Finish() error
pkg namespace, type NamespaceGlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() naming.GlobReply;; Err() error;}
pkg namespace, type NamespaceGlobClientStream interface { RecvStream }
pkg namespace, type NamespaceGlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() naming.GlobReply;; Err() error;}
pkg namespace, type NamespaceGlobServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
pkg namespace, type NamespaceGlobServerCall interface, GrantedBlessings() security.Blessings
pkg namespace, type NamespaceGlobServerCall interface, LocalEndpoint() naming.Endpoint
pkg namespace, type NamespaceGlobServerCall interface, RemoteEndpoint() naming.Endpoint
pkg namespace, type NamespaceGlobServerCall interface, Security() security.Call
pkg namespace, type NamespaceGlobServerCall interface, SendStream() interface {  Send(item naming.GlobReply) error;}
pkg namespace, type NamespaceGlobServerCall interface, Server() Server
pkg namespace, type NamespaceGlobServerCall interface, Suffix() string
pkg namespace, type NamespaceGlobServerCallStub struct
pkg namespace, type NamespaceGlobServerCallStub struct, embedded rpc.StreamServerCall
pkg namespace, type NamespaceGlobServerStream interface { SendStream }
pkg namespace, type NamespaceGlobServerStream interface, SendStream() interface {  Send(item naming.GlobReply) error;}
pkg namespace, type NamespaceServerMethods interface { Delete, DisableCache, FlushCacheEntry, GetPermissions, Glob, Mount, Resolve, ResolveToMountTable, Roots, SetPermissions, SetRoots, Unmount }
pkg namespace, type NamespaceServerMethods interface, Delete(*context.T, rpc.ServerCall, string, bool) error
pkg namespace, type NamespaceServerMethods interface, DisableCache(*context.T, rpc.ServerCall, bool) error
pkg namespace, type NamespaceServerMethods interface, FlushCacheEntry(*context.T, rpc.ServerCall, string) (bool, error)
pkg namespace, type NamespaceServerMethods interface, GetPermissions(*context.T, rpc.ServerCall, string) (access.Permissions, string, error)
pkg namespace, type NamespaceServerMethods interface, Glob(*context.T, NamespaceGlobServerCall, string) error
pkg namespace, type NamespaceServerMethods interface, Mount(*context.T, rpc.ServerCall, string, string, time.Duration, bool) error
pkg namespace, type NamespaceServerMethods interface, Resolve(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerMethods interface, ResolveToMountTable(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerMethods interface, Roots(*context.T, rpc.ServerCall) ([]string, error)
pkg namespace, type NamespaceServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, string, access.Permissions, string) error
pkg namespace, type NamespaceServerMethods interface, SetRoots(*context.T, rpc.ServerCall, []string) error
pkg namespace, type NamespaceServerMethods interface, Unmount(*context.T, rpc.ServerCall, string, string) error
pkg namespace, type NamespaceServerStub interface { Delete, Describe__, DisableCache, FlushCacheEntry, GetPermissions, Glob, Mount, Resolve, ResolveToMountTable, Roots, SetPermissions, SetRoots, Unmount }
pkg namespace, type NamespaceServerStub interface, Delete(*context.T, rpc.ServerCall, string, bool) error
pkg namespace, type NamespaceServerStub interface, Describe__() []rpc.InterfaceDesc
pkg namespace, type NamespaceServerStub interface, DisableCache(*context.T, rpc.ServerCall, bool) error
pkg namespace, type NamespaceServerStub interface, FlushCacheEntry(*context.T, rpc.ServerCall, string) (bool, error)
pkg namespace, type NamespaceServerStub interface, GetPermissions(*context.T, rpc.ServerCall, string) (access.Permissions, string, error)
pkg namespace, type NamespaceServerStub interface, Glob(*context.T, *NamespaceGlobServerCallStub, string) error
pkg namespace, type NamespaceServerStub interface, Mount(*context.T, rpc.ServerCall, string, string, time.Duration, bool) error
pkg namespace, type NamespaceServerStub interface, Resolve(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerStub interface, ResolveToMountTable(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerStub interface, Roots(*context.T, rpc.ServerCall) ([]string, error)
pkg namespace, type NamespaceServerStub interface, SetPermissions(*context.T, rpc.ServerCall, string, access.Permissions, string) error
pkg namespace, type NamespaceServerStub interface, SetRoots(*context.T, rpc.ServerCall, []string) error
pkg namespace, type NamespaceServerStub interface, Unmount(*context.T, rpc.ServerCall, string, string) error
pkg namespace, type NamespaceServerStubMethods interface { Delete, DisableCache, FlushCacheEntry, GetPermissions, Glob, Mount, Resolve, ResolveToMountTable, Roots, SetPermissions, SetRoots, Unmount }
pkg namespace, type NamespaceServerStubMethods interface, Delete(*context.T, rpc.ServerCall, string, bool) error
pkg namespace, type NamespaceServerStubMethods interface, DisableCache(*context.T, rpc.ServerCall, bool) error
pkg namespace, type NamespaceServerStubMethods interface, FlushCacheEntry(*context.T, rpc.ServerCall, string) (bool, error)
pkg namespace, type NamespaceServerStubMethods interface, GetPermissions(*context.T, rpc.ServerCall, string) (access.Permissions, string, error)
pkg namespace, type NamespaceServerStubMethods interface, Glob(*context.T, *NamespaceGlobServerCallStub, string) error
pkg namespace, type NamespaceServerStubMethods interface, Mount(*context.T, rpc.ServerCall, string, string, time.Duration, bool) error
pkg namespace, type NamespaceServerStubMethods interface, Resolve(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerStubMethods interface, ResolveToMountTable(*context.T, rpc.ServerCall, string) ([]string, error)
pkg namespace, type NamespaceServerStubMethods interface, Roots(*context.T, rpc.ServerCall) ([]string, error)
pkg namespace, type NamespaceServerStubMethods interface, SetPermissions(*context.T, rpc.ServerCall, string, access.Permissions, string) error
pkg namespace, type NamespaceServerStubMethods interface, SetRoots(*context.T, rpc.ServerCall, []string) error
pkg namespace, type NamespaceServerStubMethods interface, Unmount(*context.T, rpc.ServerCall, string, string) error
pkg namespace, type Server struct
pkg namespace, var NamespaceDesc rpc.InterfaceDesc
