blob: 08a3aab92f003cb3db7c2b4e7b71de1671c992da [file] [log] [blame]
Ryan Brownfed691e2014-09-15 13:09:40 -07001package main
2
3import (
4 "flag"
5 "fmt"
6
Cosmos Nicolaouf889c732014-10-16 20:46:54 -07007 "veyron.io/veyron/veyron/lib/signals"
8 _ "veyron.io/veyron/veyron/profiles"
Suharsh Sivakumaraca1c322014-10-21 11:27:32 -07009 vsecurity "veyron.io/veyron/veyron/security"
10
11 "veyron.io/veyron/veyron2/ipc"
12 "veyron.io/veyron/veyron2/rt"
13 "veyron.io/veyron/veyron2/security"
Ryan Brownfed691e2014-09-15 13:09:40 -070014)
15
16var runServer = flag.Bool("server", false, "Whether to run in server mode")
17
18type pongd struct{}
19
20func (f *pongd) Ping(_ ipc.ServerContext, message string) (result string, err error) {
21 return "pong", nil
22}
23
24func clientMain() {
25 runtime := rt.Init()
26 log := runtime.Logger()
27 log.Info("Pinging...")
28
29 s, err := BindPingPong("pingpong")
30 if err != nil {
31 log.Fatal("error binding to server: ", err)
32 }
33
34 pong, err := s.Ping(runtime.NewContext(), "ping")
35 if err != nil {
36 log.Fatal("error pinging: ", err)
37 }
38 fmt.Println(pong)
39}
40
41func serverMain() {
42 r := rt.Init()
43 log := r.Logger()
44 s, err := r.NewServer()
45 if err != nil {
46 log.Fatal("failure creating server: ", err)
47 }
48 log.Info("Waiting for ping")
49
50 serverPong := NewServerPingPong(&pongd{})
51
Cosmos Nicolaouf8d4c2b2014-10-23 22:36:38 -070052 if endpoint, err := s.Listen(ipc.ListenSpec{Protocol: "tcp", Address: "127.0.0.1:0"}); err == nil {
Ryan Brownfed691e2014-09-15 13:09:40 -070053 fmt.Printf("Listening at: %v\n", endpoint)
54 } else {
55 log.Fatal("error listening to service: ", err)
56 }
57
Suharsh Sivakumaraca1c322014-10-21 11:27:32 -070058 auth := vsecurity.NewACLAuthorizer(security.ACL{In: map[security.BlessingPattern]security.LabelSet{
59 security.AllPrincipals: security.AllLabels,
60 }})
61 if err := s.Serve("pingpong", ipc.LeafDispatcher(serverPong, auth)); err != nil {
Ryan Brownfed691e2014-09-15 13:09:40 -070062 log.Fatal("error serving service: ", err)
63 }
64
65 // Wait forever.
66 <-signals.ShutdownOnSignals()
67}
68
69func main() {
70 flag.Parse()
71 if *runServer {
72 serverMain()
73 } else {
74 clientMain()
75 }
76}