blob: 421ff22dd1d2039991cc1fa04b280f5434464ccf [file] [log] [blame]
Cosmos Nicolaouef323db2014-09-07 22:13:28 -07001package profiles
2
3import (
Jiri Simsa519c5072014-09-17 21:37:57 -07004 "veyron.io/veyron/veyron2"
5 "veyron.io/veyron/veyron2/config"
Cosmos Nicolaou767b62d2014-09-19 13:58:40 -07006 "veyron.io/veyron/veyron2/ipc"
Cosmos Nicolaouf889c732014-10-16 20:46:54 -07007 "veyron.io/veyron/veyron2/rt"
Cosmos Nicolaouef323db2014-09-07 22:13:28 -07008
Cosmos Nicolaou39e3ae52014-11-14 13:30:01 -08009 "veyron.io/veyron/veyron/lib/appcycle"
Cosmos Nicolaou87c0a552014-12-02 23:05:49 -080010 _ "veyron.io/veyron/veyron/lib/tcp"
11 _ "veyron.io/veyron/veyron/lib/websocket"
Jiri Simsa519c5072014-09-17 21:37:57 -070012 "veyron.io/veyron/veyron/profiles/internal"
Cosmos Nicolaou87c0a552014-12-02 23:05:49 -080013 "veyron.io/veyron/veyron/profiles/internal/platform"
Cosmos Nicolaouf889c732014-10-16 20:46:54 -070014 _ "veyron.io/veyron/veyron/runtimes/google/rt"
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070015)
16
Cosmos Nicolaoud6c3c9c2014-09-30 15:42:53 -070017// LocalListenSpec is a ListenSpec for 127.0.0.1.
Cosmos Nicolaouf8d4c2b2014-10-23 22:36:38 -070018var LocalListenSpec = ipc.ListenSpec{
Cosmos Nicolaou767b62d2014-09-19 13:58:40 -070019 Protocol: "tcp",
20 Address: "127.0.0.1:0",
21 AddressChooser: internal.IPAddressChooser,
22}
23
Cosmos Nicolaou39e3ae52014-11-14 13:30:01 -080024type generic struct{ ac *appcycle.AppCycle }
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070025
Benjamin Prosnitzfdfbf7b2014-10-08 09:47:21 -070026var _ veyron2.Profile = (*generic)(nil)
27
Cosmos Nicolaouf889c732014-10-16 20:46:54 -070028func init() {
29 rt.RegisterProfile(New())
30}
31
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070032// New returns a new instance of a very generic Profile. It can be used
33// as a default by Runtime implementations, in unit tests etc.
34func New() veyron2.Profile {
35 return &generic{}
36}
37
38func (*generic) Name() string {
39 return "generic"
40}
41
Cosmos Nicolaou4e8da642014-11-13 08:32:05 -080042func (*generic) Runtime() (string, []veyron2.ROpt) {
43 return veyron2.GoogleRuntimeName, nil
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070044}
45
46func (*generic) Platform() *veyron2.Platform {
Cosmos Nicolaou87c0a552014-12-02 23:05:49 -080047 pstr, _ := platform.Platform()
48 return pstr
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070049}
50
Cosmos Nicolaou39e3ae52014-11-14 13:30:01 -080051func (g *generic) Init(rt veyron2.Runtime, _ *config.Publisher) (veyron2.AppCycle, error) {
James Ring0f5986f2014-12-08 14:26:46 -080052 rt.Logger().VI(1).Infof("%s", g)
Bogdan Caprita3e8f9642014-12-05 14:29:40 -080053 g.ac = appcycle.New()
Cosmos Nicolaou39e3ae52014-11-14 13:30:01 -080054 return g.ac, nil
55}
56
57func (g *generic) Cleanup() {
58 g.ac.Shutdown()
Cosmos Nicolaouef323db2014-09-07 22:13:28 -070059}
60
61func (g *generic) String() string {
62 return "generic profile on " + g.Platform().String()
63}