Skip to content
This repository was archived by the owner on Jan 21, 2022. It is now read-only.

Commit 5a49112

Browse files
authored
Merge pull request #35 from spiral/feature/standalone-usage
- added the ability to work on Golang level only (without roadrunner …
2 parents e391b8e + feae27e commit 5a49112

5 files changed

Lines changed: 69 additions & 48 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
CHANGELOG
22
=========
33

4+
v1.2.0 (27.01.2020)
5+
-------------------
6+
- added the ability to work on Golang level only (without roadrunner worker and proto file)
7+
8+
v1.1.1 (27.01.2020)
9+
-------------------
10+
- [bugfix] invalid constructor parameters in ServiceException by @everflux
11+
412
v1.1.0 (30.11.2019)
513
-------------------
614
- added automatic CS fixing

‎build.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
cd $(dirname "${BASH_SOURCE[0]}")
33
OD="$(pwd)"
44
# Pushes application version into the build information.
5-
RR_VERSION=1.1.0
5+
RR_VERSION=1.2.0
66

77
# Hardcode some values to the core package
88
LDFLAGS="$LDFLAGS -X github.com/spiral/roadrunner/cmd/rr/cmd.Version=${RR_VERSION}"

‎config.go‎

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,9 @@ type TLS struct {
3737

3838
// Hydrate the config and validate it's values.
3939
func (c *Config) Hydrate(cfg service.Config) error {
40-
if c.Workers == nil {
41-
c.Workers = &roadrunner.ServerConfig{}
42-
}
43-
40+
c.Workers = &roadrunner.ServerConfig{}
4441
c.Workers.InitDefaults()
42+
4543
if err := cfg.Unmarshal(c); err != nil {
4644
return err
4745
}
@@ -52,20 +50,25 @@ func (c *Config) Hydrate(cfg service.Config) error {
5250

5351
// Valid validates the configuration.
5452
func (c *Config) Valid() error {
55-
if c.Proto == "" {
53+
if c.Proto == "" && c.Workers.Command != "" {
54+
// only when rr server is set
5655
return errors.New("proto file is required")
5756
}
5857

59-
if _, err := os.Stat(c.Proto); err != nil {
60-
if os.IsNotExist(err) {
61-
return fmt.Errorf("proto file '%s' does not exists", c.Proto)
62-
}
58+
if c.Proto != "" {
59+
if _, err := os.Stat(c.Proto); err != nil {
60+
if os.IsNotExist(err) {
61+
return fmt.Errorf("proto file '%s' does not exists", c.Proto)
62+
}
6363

64-
return err
64+
return err
65+
}
6566
}
6667

67-
if err := c.Workers.Pool.Valid(); err != nil {
68-
return err
68+
if c.Workers.Command != "" {
69+
if err := c.Workers.Pool.Valid(); err != nil {
70+
return err
71+
}
6972
}
7073

7174
if !strings.Contains(c.Listen, ":") {

‎go.mod‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/prometheus/client_golang v1.0.0
99
github.com/sirupsen/logrus v1.3.0
1010
github.com/spf13/cobra v0.0.3
11-
github.com/spiral/roadrunner v1.4.8
11+
github.com/spiral/roadrunner v1.5.3
1212
github.com/stretchr/testify v1.3.0
1313
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a
1414
google.golang.org/grpc v1.18.0

‎service.go‎

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -63,47 +63,55 @@ func (svc *Service) Init(cfg *Config, r *rpc.Service, e env.Environment) (ok boo
6363
}
6464
}
6565

66+
if svc.cfg.Workers.Command != "" {
67+
svc.rr = roadrunner.NewServer(svc.cfg.Workers)
68+
}
69+
6670
return true, nil
6771
}
6872

6973
// Serve GRPC grpc.
7074
func (svc *Service) Serve() (err error) {
7175
svc.mu.Lock()
7276

73-
if svc.env != nil {
74-
if err := svc.env.Copy(svc.cfg.Workers); err != nil {
75-
return err
76-
}
77-
}
78-
79-
svc.cfg.Workers.SetEnv("RR_GRPC", "true")
80-
81-
svc.rr = roadrunner.NewServer(svc.cfg.Workers)
82-
svc.rr.Listen(svc.throw)
83-
84-
if svc.cr != nil {
85-
svc.rr.Attach(svc.cr)
86-
}
87-
8877
if svc.grpc, err = svc.createGPRCServer(); err != nil {
78+
svc.mu.Unlock()
8979
return err
9080
}
9181

92-
lis, err := svc.cfg.Listener()
82+
ls, err := svc.cfg.Listener()
9383
if err != nil {
84+
svc.mu.Unlock()
9485
return err
9586
}
87+
defer ls.Close()
88+
89+
if svc.rr != nil {
90+
if svc.env != nil {
91+
if err := svc.env.Copy(svc.cfg.Workers); err != nil {
92+
svc.mu.Unlock()
93+
return err
94+
}
95+
}
9696

97-
defer lis.Close()
97+
svc.cfg.Workers.SetEnv("RR_GRPC", "true")
9898

99-
svc.mu.Unlock()
99+
svc.rr.Listen(svc.throw)
100100

101-
if err := svc.rr.Start(); err != nil {
102-
return err
101+
if svc.cr != nil {
102+
svc.rr.Attach(svc.cr)
103+
}
104+
105+
if err := svc.rr.Start(); err != nil {
106+
svc.mu.Unlock()
107+
return err
108+
}
109+
defer svc.rr.Stop()
103110
}
104-
defer svc.rr.Stop()
105111

106-
return svc.grpc.Serve(lis)
112+
svc.mu.Unlock()
113+
114+
return svc.grpc.Serve(ls)
107115
}
108116

109117
// Stop the service.
@@ -167,22 +175,24 @@ func (svc *Service) createGPRCServer() (*grpc.Server, error) {
167175

168176
server := grpc.NewServer(opts...)
169177

170-
// php proxy services
171-
services, err := parser.File(svc.cfg.Proto, path.Dir(svc.cfg.Proto))
172-
if err != nil {
173-
return nil, err
174-
}
175-
176-
for _, service := range services {
177-
p := NewProxy(fmt.Sprintf("%s.%s", service.Package, service.Name), svc.cfg.Proto, svc.rr)
178-
for _, m := range service.Methods {
179-
p.RegisterMethod(m.Name)
178+
if svc.cfg.Proto != "" && svc.rr != nil {
179+
// php proxy services
180+
services, err := parser.File(svc.cfg.Proto, path.Dir(svc.cfg.Proto))
181+
if err != nil {
182+
return nil, err
180183
}
181184

182-
server.RegisterService(p.ServiceDesc(), p)
185+
for _, service := range services {
186+
p := NewProxy(fmt.Sprintf("%s.%s", service.Package, service.Name), svc.cfg.Proto, svc.rr)
187+
for _, m := range service.Methods {
188+
p.RegisterMethod(m.Name)
189+
}
190+
191+
server.RegisterService(p.ServiceDesc(), p)
192+
}
183193
}
184194

185-
// external services
195+
// external and native services
186196
for _, r := range svc.services {
187197
r(server)
188198
}

0 commit comments

Comments
 (0)