/
socket_app_proxy.go
71 lines (54 loc) · 1.51 KB
/
socket_app_proxy.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
package app
import (
"time"
"github.com/abassian/huron/src/hashgraph"
"github.com/abassian/huron/src/proxy"
"github.com/sirupsen/logrus"
)
// SocketAppProxy ...
type SocketAppProxy struct {
clientAddress string
bindAddress string
client *SocketAppProxyClient
server *SocketAppProxyServer
logger *logrus.Logger
}
// NewSocketAppProxy ...
func NewSocketAppProxy(clientAddr string, bindAddr string, timeout time.Duration, logger *logrus.Logger) (*SocketAppProxy, error) {
if logger == nil {
logger = logrus.New()
logger.Level = logrus.DebugLevel
}
client := NewSocketAppProxyClient(clientAddr, timeout, logger)
server, err := NewSocketAppProxyServer(bindAddr, logger)
if err != nil {
return nil, err
}
proxy := &SocketAppProxy{
clientAddress: clientAddr,
bindAddress: bindAddr,
client: client,
server: server,
logger: logger,
}
go proxy.server.listen()
return proxy, nil
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Implement AppProxy Interface
// SubmitCh ...
func (p *SocketAppProxy) SubmitCh() chan []byte {
return p.server.submitCh
}
// CommitBlock ...
func (p *SocketAppProxy) CommitBlock(block hashgraph.Block) (proxy.CommitResponse, error) {
return p.client.CommitBlock(block)
}
// GetSnapshot ...
func (p *SocketAppProxy) GetSnapshot(blockIndex int) ([]byte, error) {
return p.client.GetSnapshot(blockIndex)
}
// Restore ...
func (p *SocketAppProxy) Restore(snapshot []byte) error {
return p.client.Restore(snapshot)
}