blob: 9dd307ff743674ae3060aea5b31e93066e3d5e7f [file] [log] [blame]
Jiri Simsad7616c92015-03-24 23:44:30 -07001// Copyright 2015 The Vanadium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Todd Wang8c4e5cc2015-04-09 11:30:52 -07005// Daemon profiled implements the v.io/x/ref/services/repository.Profile
6// interface.
Jiri Simsa5293dcb2014-05-10 09:56:38 -07007package main
8
9import (
10 "flag"
11
Jiri Simsa6ac95222015-02-23 16:11:49 -080012 "v.io/v23"
Jiri Simsa337af232015-02-27 14:36:46 -080013 "v.io/x/lib/vlog"
Todd Wangb3511492015-04-07 23:32:34 -070014 "v.io/x/ref/lib/security/securityflag"
Jiri Simsaffceefa2015-02-28 11:03:34 -080015 "v.io/x/ref/lib/signals"
Todd Wangb3511492015-04-07 23:32:34 -070016
Suharsh Sivakumardcc11d72015-05-11 12:19:20 -070017 _ "v.io/x/ref/runtime/factories/roaming"
Jiri Simsa5293dcb2014-05-10 09:56:38 -070018)
19
Adam Sadovsky5181bdb2014-08-13 10:29:11 -070020var (
Jiri Simsa8a500822014-09-08 14:37:16 -070021 name = flag.String("name", "", "name to mount the profile repository as")
22 store = flag.String("store", "", "local directory to store profiles in")
Adam Sadovsky5181bdb2014-08-13 10:29:11 -070023)
24
Jiri Simsa5293dcb2014-05-10 09:56:38 -070025func main() {
Jiri Simsa6ac95222015-02-23 16:11:49 -080026 ctx, shutdown := v23.Init()
Matt Rosencrantzfa3082c2015-01-22 21:39:04 -080027 defer shutdown()
28
Jiri Simsa8a500822014-09-08 14:37:16 -070029 if *store == "" {
30 vlog.Fatalf("Specify a directory for storing profiles using --store=<name>")
Jiri Simsa5293dcb2014-05-10 09:56:38 -070031 }
Suharsh Sivakumar946f64d2015-01-08 10:48:13 -080032
Jiri Simsa6ac95222015-02-23 16:11:49 -080033 server, err := v23.NewServer(ctx)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070034 if err != nil {
35 vlog.Fatalf("NewServer() failed: %v", err)
36 }
Jiri Simsa8a500822014-09-08 14:37:16 -070037
Todd Wangb3511492015-04-07 23:32:34 -070038 dispatcher, err := NewDispatcher(*store, securityflag.NewAuthorizerOrDie())
Jiri Simsa5293dcb2014-05-10 09:56:38 -070039 if err != nil {
40 vlog.Fatalf("NewDispatcher() failed: %v", err)
41 }
Cosmos Nicolaoufdc838b2014-06-30 21:44:27 -070042
Jiri Simsa6ac95222015-02-23 16:11:49 -080043 ls := v23.GetListenSpec(ctx)
Matt Rosencrantzfa3082c2015-01-22 21:39:04 -080044 endpoint, err := server.Listen(ls)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070045 if err != nil {
Matt Rosencrantzfa3082c2015-01-22 21:39:04 -080046 vlog.Fatalf("Listen(%s) failed: %v", ls, err)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070047 }
Cosmos Nicolaou92dba582014-11-05 17:24:10 -080048 if err := server.ServeDispatcher(*name, dispatcher); err != nil {
49 vlog.Fatalf("ServeDispatcher(%v) failed: %v", *name, err)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070050 }
Jiri Simsa1023a342014-08-20 18:01:22 -070051 vlog.Infof("Profile repository running at endpoint=%q", endpoint)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070052
53 // Wait until shutdown.
Suharsh Sivakumar946f64d2015-01-08 10:48:13 -080054 <-signals.ShutdownOnSignals(ctx)
Jiri Simsa5293dcb2014-05-10 09:56:38 -070055}