blob: 0109f79e83cdc28b89e2ecade253ad745f4dfad5 [file] [log] [blame]
// grpserverd is a group server daemon.
package main
// Example invocation:
// grpserverd --veyron.tcp.address="127.0.0.1:0" --name=grpserverd
import (
"flag"
"v.io/core/veyron2"
"v.io/core/veyron2/services/security/access"
"v.io/core/veyron2/vlog"
"v.io/core/veyron/lib/signals"
_ "v.io/core/veyron/profiles/roaming"
"v.io/core/veyron/services/security/groups/memstore"
"v.io/core/veyron/services/security/groups/server"
)
// TODO(sadovsky): Perhaps this should be one of the standard Veyron flags.
var (
name = flag.String("name", "", "Name to mount at.")
)
func main() {
ctx, shutdown := veyron2.Init()
defer shutdown()
s, err := veyron2.NewServer(ctx)
if err != nil {
vlog.Fatal("veyron2.NewServer() failed: ", err)
}
if _, err := s.Listen(veyron2.GetListenSpec(ctx)); err != nil {
vlog.Fatal("s.Listen() failed: ", err)
}
// TODO(sadovsky): Switch to using NewAuthorizerOrDie.
acl := access.TaggedACLMap{}
m := server.NewManager(memstore.New(), acl)
// Publish the service in the mount table.
if err := s.ServeDispatcher(*name, m); err != nil {
vlog.Fatal("s.ServeDispatcher() failed: ", err)
}
vlog.Info("Mounted at: ", *name)
// Wait forever.
<-signals.ShutdownOnSignals(ctx)
}