-
Notifications
You must be signed in to change notification settings - Fork 8
/
srv.go
86 lines (77 loc) · 1.95 KB
/
srv.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package system
import (
"context"
"time"
"github.com/powerpuffpenguin/webpc/m/helper"
grpc_system "github.com/powerpuffpenguin/webpc/protocol/forward/system"
"github.com/powerpuffpenguin/webpc/single/upgrade"
"github.com/powerpuffpenguin/webpc/version"
)
type server struct {
grpc_system.UnimplementedSystemServer
helper.Helper
}
var (
emptyVersionResponse grpc_system.VersionResponse
versionResponse = grpc_system.VersionResponse{
Platform: version.Platform,
Version: version.Version,
Commit: version.Commit,
Date: version.Date,
}
)
func (s server) Version(ctx context.Context, req *grpc_system.VersionRequest) (resp *grpc_system.VersionResponse, e error) {
s.SetHTTPCacheMaxAge(ctx, 60)
e = s.ServeMessage(ctx,
time.Unix(startAtResponse.Result, 0),
func(nobody bool) error {
if nobody {
resp = &emptyVersionResponse
} else {
resp = &versionResponse
}
return nil
},
)
return
}
var (
emptyStartAtResponse grpc_system.StartAtResponse
startAtResponse = grpc_system.StartAtResponse{
Result: time.Now().Unix(),
}
)
func (s server) StartAt(ctx context.Context, req *grpc_system.StartAtRequest) (resp *grpc_system.StartAtResponse, e error) {
s.SetHTTPCacheMaxAge(ctx, 60)
e = s.ServeMessage(ctx,
time.Unix(startAtResponse.Result, 0),
func(nobody bool) error {
if nobody {
resp = &emptyStartAtResponse
} else {
resp = &startAtResponse
}
return nil
},
)
return
}
var emptyUpgradedResponse grpc_system.UpgradedResponse
func (s server) Upgraded(ctx context.Context, req *grpc_system.UpgradedRequest) (resp *grpc_system.UpgradedResponse, e error) {
modtime, version, upgraded := upgrade.DefaultUpgrade().Upgraded()
s.SetHTTPCacheMaxAge(ctx, 60*60)
e = s.ServeMessage(ctx,
modtime,
func(nobody bool) error {
if nobody || !upgraded {
resp = &emptyUpgradedResponse
} else {
resp = &grpc_system.UpgradedResponse{
Version: version,
}
}
return nil
},
)
return
}