File tree Expand file tree Collapse file tree 3 files changed +43
-39
lines changed Expand file tree Collapse file tree 3 files changed +43
-39
lines changed Original file line number Diff line number Diff line change @@ -9,36 +9,21 @@ import (
99
1010func main () {}
1111
12- var (
13- server * app.Server
14- )
15-
1612//export Start
1713func Start (cfgPtr * C.char ) (* C.char , * C.char ) {
18- if server != nil {
19- return C .CString (server .Addr ()), nil
20- }
21-
2214 if cfgPtr == nil {
2315 return nil , C .CString ("cfg is required" )
2416 }
2517 cfg := C .GoString (cfgPtr )
2618
27- var err error
28-
29- server , err = app .NewServer (cfg )
19+ result , err := app .Start (cfg )
3020 if err != nil {
3121 return nil , C .CString (err .Error ())
3222 }
33- go server .Start ()
34-
35- return C .CString (server .Addr ()), nil
23+ return C .CString (result ), nil
3624}
3725
3826//export Stop
3927func Stop () {
40- if server != nil {
41- server .Shutdown ()
42- }
43- server = nil
28+ app .Stop ()
4429}
Original file line number Diff line number Diff line change @@ -7,29 +7,10 @@ import (
77 _ "golang.org/x/mobile/bind"
88)
99
10- var (
11- server * app.Server
12- )
13-
1410func Start (cfg string ) (string , error ) {
15- if server != nil {
16- return server .Addr (), nil
17- }
18-
19- var err error
20-
21- server , err = app .NewServer (cfg )
22- if err != nil {
23- return "" , err
24- }
25- go server .Start ()
26-
27- return server .Addr (), nil
11+ return app .Start (cfg )
2812}
2913
3014func Stop () {
31- if server != nil {
32- server .Shutdown ()
33- }
34- server = nil
15+ app .Stop ()
3516}
Original file line number Diff line number Diff line change 1+ package app
2+
3+ import (
4+ "net/http"
5+ )
6+
7+ var (
8+ _server * Server
9+ _result string
10+ )
11+
12+ func Start (cfg string ) (string , error ) {
13+ if _server != nil {
14+ return _result , nil
15+ }
16+
17+ var err error
18+
19+ _server , err = NewServer (cfg )
20+ if err != nil {
21+ return "" , err
22+ }
23+ _result = _server .Addr ()
24+
25+ go func () {
26+ if err := _server .Start (); err != nil && err != http .ErrServerClosed {
27+ panic (err )
28+ }
29+ }()
30+ return _result , nil
31+ }
32+
33+ func Stop () {
34+ if _server != nil {
35+ _server .Shutdown ()
36+ }
37+ _server = nil
38+ }
You can’t perform that action at this time.
0 commit comments