/
grpc.go
69 lines (56 loc) · 1.22 KB
/
grpc.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
package byzantine
import (
"fmt"
"net"
"github.com/spf13/viper"
"github.com/oasisprotocol/oasis-core/go/common/grpc"
"github.com/oasisprotocol/oasis-core/go/common/identity"
"github.com/oasisprotocol/oasis-core/go/common/node"
cmdGrpc "github.com/oasisprotocol/oasis-core/go/oasis-node/cmd/common/grpc"
)
type externalGrpc struct {
grpc *grpc.Server
}
func getGrpcAddress() []node.Address {
return []node.Address{
{
TCPAddr: net.TCPAddr{
IP: net.IPv4(127, 0, 0, 1),
Port: viper.GetInt(cmdGrpc.CfgServerPort),
},
},
}
}
func newExternalGrpc(id *identity.Identity) (*externalGrpc, error) {
// Create externally-accessible gRPC server.
serverConfig := &grpc.ServerConfig{
Name: "external",
Port: uint16(viper.GetInt(cmdGrpc.CfgServerPort)),
Identity: id,
}
grpc, err := grpc.NewServer(serverConfig)
if err != nil {
return nil, err
}
g := &externalGrpc{
grpc,
}
return g, nil
}
func (g *externalGrpc) start() error {
if g.grpc == nil {
return fmt.Errorf("grpc service not initialized")
}
// Run the gRPC server.
if err := g.grpc.Start(); err != nil {
return err
}
return nil
}
func (g *externalGrpc) stop() {
if g.grpc == nil {
return
}
g.grpc.Stop()
g.grpc = nil
}