mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-04-04 19:36:54 +00:00 
			
		
		
		
	1.1.2 – Experimental gRPC/REST Support
This commit is contained in:
		
							parent
							
								
									40945c69b4
								
							
						
					
					
						commit
						3b72d52708
					
				
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @ -17,6 +17,17 @@ If you do not, or have already run the above, run: | |||||||
| 
 | 
 | ||||||
|     go run ./... |     go run ./... | ||||||
| 
 | 
 | ||||||
|  | ## EXPERIMENTAL – gRPC/REST Support | ||||||
|  | 
 | ||||||
|  | If you want to enable gRPC/REST, add the following entries to your config.yml: | ||||||
|  | 
 | ||||||
|  |     listenGrpcMultiaddr: <multiaddr>  | ||||||
|  |     listenRESTMultiaddr: <multiaddr> | ||||||
|  | 
 | ||||||
|  | Please note: this interface, while read-only, is unauthenticated and not rate- | ||||||
|  | limited. It is recommended that you only enable if you are properly controlling | ||||||
|  | access via firewall or only query via localhost. | ||||||
|  | 
 | ||||||
| ## Purpose | ## Purpose | ||||||
| 
 | 
 | ||||||
| The ceremony application provides a secure reference string (SRS) from which | The ceremony application provides a secure reference string (SRS) from which | ||||||
|  | |||||||
| @ -619,6 +619,10 @@ func (bs *BlossomSubRouter) EnoughPeers(bitmask []byte, suggested int) bool { | |||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (bs *BlossomSubRouter) PeerScore(p peer.ID) float64 { | ||||||
|  | 	return bs.score.Score(p) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (bs *BlossomSubRouter) AcceptFrom(p peer.ID) AcceptStatus { | func (bs *BlossomSubRouter) AcceptFrom(p peer.ID) AcceptStatus { | ||||||
| 	_, direct := bs.direct[p] | 	_, direct := bs.direct[p] | ||||||
| 	if direct { | 	if direct { | ||||||
|  | |||||||
| @ -41,6 +41,10 @@ func (fs *FloodSubRouter) Attach(p *PubSub) { | |||||||
| 	fs.tracer = p.tracer | 	fs.tracer = p.tracer | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (fs *FloodSubRouter) PeerScore(p peer.ID) float64 { | ||||||
|  | 	return fs.p.PeerScore(p) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (fs *FloodSubRouter) AddPeer(p peer.ID, proto protocol.ID) { | func (fs *FloodSubRouter) AddPeer(p peer.ID, proto protocol.ID) { | ||||||
| 	fs.tracer.AddPeer(p, proto) | 	fs.tracer.AddPeer(p, proto) | ||||||
| } | } | ||||||
|  | |||||||
| @ -189,6 +189,9 @@ type PubSubRouter interface { | |||||||
| 	// Attach is invoked by the PubSub constructor to attach the router to a
 | 	// Attach is invoked by the PubSub constructor to attach the router to a
 | ||||||
| 	// freshly initialized PubSub instance.
 | 	// freshly initialized PubSub instance.
 | ||||||
| 	Attach(*PubSub) | 	Attach(*PubSub) | ||||||
|  | 	// PeerScore returns the internal scoring basis for a given peer. This method should not be
 | ||||||
|  | 	// externally exposed to remote callers.
 | ||||||
|  | 	PeerScore(peer.ID) float64 | ||||||
| 	// AddPeer notifies the router that a new peer has been connected.
 | 	// AddPeer notifies the router that a new peer has been connected.
 | ||||||
| 	AddPeer(peer.ID, protocol.ID) | 	AddPeer(peer.ID, protocol.ID) | ||||||
| 	// RemovePeer notifies the router that a peer has been disconnected.
 | 	// RemovePeer notifies the router that a peer has been disconnected.
 | ||||||
| @ -1223,6 +1226,10 @@ func WithBitmaskMessageIdFn(msgId MsgIdFunction) BitmaskOpt { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (p *PubSub) PeerScore(pr peer.ID) float64 { | ||||||
|  | 	return p.rt.PeerScore(pr) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Join joins the bitmask and returns a Bitmask handle. Only one Bitmask handle should exist per bitmask, and Join will error if
 | // Join joins the bitmask and returns a Bitmask handle. Only one Bitmask handle should exist per bitmask, and Join will error if
 | ||||||
| // the Bitmask handle already exists.
 | // the Bitmask handle already exists.
 | ||||||
| func (p *PubSub) Join(bitmask []byte, opts ...BitmaskOpt) (*Bitmask, error) { | func (p *PubSub) Join(bitmask []byte, opts ...BitmaskOpt) (*Bitmask, error) { | ||||||
|  | |||||||
| @ -45,6 +45,10 @@ func (rs *RandomSubRouter) Attach(p *PubSub) { | |||||||
| 	rs.tracer = p.tracer | 	rs.tracer = p.tracer | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (rs *RandomSubRouter) PeerScore(p peer.ID) float64 { | ||||||
|  | 	return rs.p.PeerScore(p) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rs *RandomSubRouter) AddPeer(p peer.ID, proto protocol.ID) { | func (rs *RandomSubRouter) AddPeer(p peer.ID, proto protocol.ID) { | ||||||
| 	rs.tracer.AddPeer(p, proto) | 	rs.tracer.AddPeer(p, proto) | ||||||
| 	rs.peers[p] = proto | 	rs.peers[p] = proto | ||||||
|  | |||||||
| @ -3,17 +3,26 @@ package app | |||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| 
 | 
 | ||||||
|  | 	"go.uber.org/zap" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/consensus" | 	"source.quilibrium.com/quilibrium/monorepo/node/consensus" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/execution" | 	"source.quilibrium.com/quilibrium/monorepo/node/execution" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/execution/ceremony" | 	"source.quilibrium.com/quilibrium/monorepo/node/execution/ceremony" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/p2p" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/store" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Node struct { | type Node struct { | ||||||
|  | 	logger      *zap.Logger | ||||||
|  | 	clockStore  store.ClockStore | ||||||
|  | 	pubSub      p2p.PubSub | ||||||
| 	execEngines map[string]execution.ExecutionEngine | 	execEngines map[string]execution.ExecutionEngine | ||||||
| 	engine      consensus.ConsensusEngine | 	engine      consensus.ConsensusEngine | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func newNode( | func newNode( | ||||||
|  | 	logger *zap.Logger, | ||||||
|  | 	clockStore store.ClockStore, | ||||||
|  | 	pubSub p2p.PubSub, | ||||||
| 	ceremonyExecutionEngine *ceremony.CeremonyExecutionEngine, | 	ceremonyExecutionEngine *ceremony.CeremonyExecutionEngine, | ||||||
| 	engine consensus.ConsensusEngine, | 	engine consensus.ConsensusEngine, | ||||||
| ) (*Node, error) { | ) (*Node, error) { | ||||||
| @ -27,6 +36,9 @@ func newNode( | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return &Node{ | 	return &Node{ | ||||||
|  | 		logger, | ||||||
|  | 		clockStore, | ||||||
|  | 		pubSub, | ||||||
| 		execEngines, | 		execEngines, | ||||||
| 		engine, | 		engine, | ||||||
| 	}, nil | 	}, nil | ||||||
| @ -50,3 +62,23 @@ func (n *Node) Stop() { | |||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (n *Node) GetLogger() *zap.Logger { | ||||||
|  | 	return n.logger | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (n *Node) GetClockStore() store.ClockStore { | ||||||
|  | 	return n.clockStore | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (n *Node) GetPubSub() p2p.PubSub { | ||||||
|  | 	return n.pubSub | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (n *Node) GetExecutionEngines() []execution.ExecutionEngine { | ||||||
|  | 	list := []execution.ExecutionEngine{} | ||||||
|  | 	for _, e := range n.execEngines { | ||||||
|  | 		list = append(list, e) | ||||||
|  | 	} | ||||||
|  | 	return list | ||||||
|  | } | ||||||
|  | |||||||
| @ -23,19 +23,19 @@ import ( | |||||||
| 
 | 
 | ||||||
| func NewNode(configConfig *config.Config) (*Node, error) { | func NewNode(configConfig *config.Config) (*Node, error) { | ||||||
| 	zapLogger := logger() | 	zapLogger := logger() | ||||||
| 	engineConfig := configConfig.Engine |  | ||||||
| 	keyConfig := configConfig.Key |  | ||||||
| 	fileKeyManager := keys.NewFileKeyManager(keyConfig, zapLogger) |  | ||||||
| 	dbConfig := configConfig.DB | 	dbConfig := configConfig.DB | ||||||
| 	db := store.NewPebbleDB(dbConfig) | 	db := store.NewPebbleDB(dbConfig) | ||||||
| 	pebbleClockStore := store.NewPebbleClockStore(db, zapLogger) | 	pebbleClockStore := store.NewPebbleClockStore(db, zapLogger) | ||||||
| 	pebbleKeyStore := store.NewPebbleKeyStore(db, zapLogger) |  | ||||||
| 	p2PConfig := configConfig.P2P | 	p2PConfig := configConfig.P2P | ||||||
| 	blossomSub := p2p.NewBlossomSub(p2PConfig, zapLogger) | 	blossomSub := p2p.NewBlossomSub(p2PConfig, zapLogger) | ||||||
|  | 	engineConfig := configConfig.Engine | ||||||
|  | 	keyConfig := configConfig.Key | ||||||
|  | 	fileKeyManager := keys.NewFileKeyManager(keyConfig, zapLogger) | ||||||
|  | 	pebbleKeyStore := store.NewPebbleKeyStore(db, zapLogger) | ||||||
| 	ceremonyDataClockConsensusEngine := ceremony.NewCeremonyDataClockConsensusEngine(engineConfig, zapLogger, fileKeyManager, pebbleClockStore, pebbleKeyStore, blossomSub) | 	ceremonyDataClockConsensusEngine := ceremony.NewCeremonyDataClockConsensusEngine(engineConfig, zapLogger, fileKeyManager, pebbleClockStore, pebbleKeyStore, blossomSub) | ||||||
| 	ceremonyExecutionEngine := ceremony2.NewCeremonyExecutionEngine(zapLogger, ceremonyDataClockConsensusEngine, engineConfig, fileKeyManager, blossomSub, pebbleClockStore, pebbleKeyStore) | 	ceremonyExecutionEngine := ceremony2.NewCeremonyExecutionEngine(zapLogger, ceremonyDataClockConsensusEngine, engineConfig, fileKeyManager, blossomSub, pebbleClockStore, pebbleKeyStore) | ||||||
| 	masterClockConsensusEngine := master.NewMasterClockConsensusEngine(engineConfig, zapLogger, pebbleClockStore, fileKeyManager, blossomSub) | 	masterClockConsensusEngine := master.NewMasterClockConsensusEngine(engineConfig, zapLogger, pebbleClockStore, fileKeyManager, blossomSub) | ||||||
| 	node, err := newNode(ceremonyExecutionEngine, masterClockConsensusEngine) | 	node, err := newNode(zapLogger, pebbleClockStore, blossomSub, ceremonyExecutionEngine, masterClockConsensusEngine) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -21,6 +21,8 @@ type Config struct { | |||||||
| 	P2P                 *P2PConfig    `yaml:"p2p"` | 	P2P                 *P2PConfig    `yaml:"p2p"` | ||||||
| 	Engine              *EngineConfig `yaml:"engine"` | 	Engine              *EngineConfig `yaml:"engine"` | ||||||
| 	DB                  *DBConfig     `yaml:"db"` | 	DB                  *DBConfig     `yaml:"db"` | ||||||
|  | 	ListenGRPCMultiaddr string        `yaml:"listenGrpcMultiaddr"` | ||||||
|  | 	ListenRestMultiaddr string        `yaml:"listenRESTMultiaddr"` | ||||||
| 	LogFile             string        `yaml:"logFile"` | 	LogFile             string        `yaml:"logFile"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -343,3 +343,29 @@ func ( | |||||||
| ) GetActiveFrame() *protobufs.ClockFrame { | ) GetActiveFrame() *protobufs.ClockFrame { | ||||||
| 	return e.activeFrame | 	return e.activeFrame | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func ( | ||||||
|  | 	e *CeremonyDataClockConsensusEngine, | ||||||
|  | ) GetPeerInfo() *protobufs.PeerInfoResponse { | ||||||
|  | 	resp := &protobufs.PeerInfoResponse{} | ||||||
|  | 	e.peerMapMx.Lock() | ||||||
|  | 	for _, v := range e.peerMap { | ||||||
|  | 		resp.PeerInfo = append(resp.PeerInfo, &protobufs.PeerInfo{ | ||||||
|  | 			PeerId:     v.peerId, | ||||||
|  | 			Multiaddrs: []string{v.multiaddr}, | ||||||
|  | 			MaxFrame:   v.maxFrame, | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | 	for _, v := range e.uncooperativePeersMap { | ||||||
|  | 		resp.UncooperativePeerInfo = append( | ||||||
|  | 			resp.UncooperativePeerInfo, | ||||||
|  | 			&protobufs.PeerInfo{ | ||||||
|  | 				PeerId:     v.peerId, | ||||||
|  | 				Multiaddrs: []string{v.multiaddr}, | ||||||
|  | 				MaxFrame:   v.maxFrame, | ||||||
|  | 			}, | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | 	e.peerMapMx.Unlock() | ||||||
|  | 	return resp | ||||||
|  | } | ||||||
|  | |||||||
| @ -47,4 +47,5 @@ type DataConsensusEngine interface { | |||||||
| 		engineConfig *config.EngineConfig, | 		engineConfig *config.EngineConfig, | ||||||
| 	) (crypto.Signer, keys.KeyType, []byte, []byte) | 	) (crypto.Signer, keys.KeyType, []byte, []byte) | ||||||
| 	IsInProverTrie(key []byte) bool | 	IsInProverTrie(key []byte) bool | ||||||
|  | 	GetPeerInfo() *protobufs.PeerInfoResponse | ||||||
| } | } | ||||||
|  | |||||||
| @ -1141,3 +1141,7 @@ func (e *CeremonyExecutionEngine) ensureSecrets( | |||||||
| 		) | 		) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (e *CeremonyExecutionEngine) GetPeerInfo() *protobufs.PeerInfoResponse { | ||||||
|  | 	return e.clock.GetPeerInfo() | ||||||
|  | } | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| package execution | package execution | ||||||
| 
 | 
 | ||||||
| import "source.quilibrium.com/quilibrium/monorepo/node/protobufs" | import ( | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/protobufs" | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| type ExecutionEngine interface { | type ExecutionEngine interface { | ||||||
| 	GetName() string | 	GetName() string | ||||||
| @ -11,4 +13,5 @@ type ExecutionEngine interface { | |||||||
| 		address []byte, | 		address []byte, | ||||||
| 		message *protobufs.Message, | 		message *protobufs.Message, | ||||||
| 	) ([]*protobufs.Message, error) | 	) ([]*protobufs.Message, error) | ||||||
|  | 	GetPeerInfo() *protobufs.PeerInfoResponse | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								node/go.mod
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								node/go.mod
									
									
									
									
									
								
							| @ -33,8 +33,10 @@ require ( | |||||||
| 	github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect | 	github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect | ||||||
| 	github.com/consensys/gnark-crypto v0.5.3 // indirect | 	github.com/consensys/gnark-crypto v0.5.3 // indirect | ||||||
| 	github.com/davecgh/go-spew v1.1.1 // indirect | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
|  | 	github.com/golang/glog v1.1.0 // indirect | ||||||
| 	github.com/golang/snappy v0.0.4 // indirect | 	github.com/golang/snappy v0.0.4 // indirect | ||||||
| 	github.com/gorilla/websocket v1.5.0 // indirect | 	github.com/gorilla/websocket v1.5.0 // indirect | ||||||
|  | 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect | ||||||
| 	github.com/gtank/merlin v0.1.1 // indirect | 	github.com/gtank/merlin v0.1.1 // indirect | ||||||
| 	github.com/kr/pretty v0.3.1 // indirect | 	github.com/kr/pretty v0.3.1 // indirect | ||||||
| 	github.com/kr/text v0.2.0 // indirect | 	github.com/kr/text v0.2.0 // indirect | ||||||
| @ -43,7 +45,10 @@ require ( | |||||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
| 	github.com/quic-go/qtls-go1-19 v0.3.3 // indirect | 	github.com/quic-go/qtls-go1-19 v0.3.3 // indirect | ||||||
| 	github.com/quic-go/qtls-go1-20 v0.2.3 // indirect | 	github.com/quic-go/qtls-go1-20 v0.2.3 // indirect | ||||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect | 	google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect | ||||||
|  | 	google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect | ||||||
|  | 	google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect | ||||||
|  | 	google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 // indirect | ||||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -143,13 +148,13 @@ require ( | |||||||
| 	go.uber.org/fx v1.20.0 // indirect | 	go.uber.org/fx v1.20.0 // indirect | ||||||
| 	go.uber.org/multierr v1.11.0 // indirect | 	go.uber.org/multierr v1.11.0 // indirect | ||||||
| 	go.uber.org/zap v1.25.0 | 	go.uber.org/zap v1.25.0 | ||||||
| 	golang.org/x/crypto v0.12.0 | 	golang.org/x/crypto v0.13.0 | ||||||
| 	golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect | 	golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect | ||||||
| 	golang.org/x/mod v0.12.0 // indirect | 	golang.org/x/mod v0.12.0 // indirect | ||||||
| 	golang.org/x/net v0.14.0 // indirect | 	golang.org/x/net v0.15.0 // indirect | ||||||
| 	golang.org/x/sync v0.3.0 | 	golang.org/x/sync v0.3.0 | ||||||
| 	golang.org/x/sys v0.11.0 // indirect | 	golang.org/x/sys v0.12.0 // indirect | ||||||
| 	golang.org/x/text v0.12.0 // indirect | 	golang.org/x/text v0.13.0 // indirect | ||||||
| 	golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect | 	golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect | ||||||
| 	gonum.org/v1/gonum v0.11.0 // indirect | 	gonum.org/v1/gonum v0.11.0 // indirect | ||||||
| 	google.golang.org/grpc v1.58.2 | 	google.golang.org/grpc v1.58.2 | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								node/go.sum
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								node/go.sum
									
									
									
									
									
								
							| @ -155,6 +155,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | |||||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||||
| github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= | github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= | ||||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||||
|  | github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= | ||||||
|  | github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= | ||||||
| github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||||
| github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= | github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= | ||||||
| github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= | github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= | ||||||
| @ -214,6 +216,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm | |||||||
| github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | ||||||
| github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | ||||||
| github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= | github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= | ||||||
|  | github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= | ||||||
|  | github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= | ||||||
| github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= | github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= | ||||||
| github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= | github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= | ||||||
| github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | ||||||
| @ -596,6 +600,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh | |||||||
| golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= | golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= | ||||||
| golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= | golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= | ||||||
| golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= | golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= | ||||||
|  | golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= | ||||||
|  | golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= | ||||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= | golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= | ||||||
| golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= | golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= | ||||||
| @ -637,6 +643,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v | |||||||
| golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | ||||||
| golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= | golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= | ||||||
| golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= | golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= | ||||||
|  | golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= | ||||||
|  | golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= | ||||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| @ -682,6 +690,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= | golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= | ||||||
| golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= | ||||||
|  | golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| @ -689,6 +699,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | |||||||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= | golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= | ||||||
| golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
|  | golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= | ||||||
|  | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
| golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
| golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||||
| @ -735,8 +747,14 @@ google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk | |||||||
| google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||||
| google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | ||||||
|  | google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= | ||||||
|  | google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= | ||||||
|  | google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= | ||||||
|  | google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= | ||||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= | google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= | ||||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= | google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= | ||||||
| google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | ||||||
| google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | ||||||
| google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= | google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= | ||||||
| @ -749,6 +767,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji | |||||||
| google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= | google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= | ||||||
| google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= | google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= | ||||||
| google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= | google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= | ||||||
|  | google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= | ||||||
|  | google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= | ||||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								node/main.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								node/main.go
									
									
									
									
									
								
							| @ -17,6 +17,7 @@ import ( | |||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/config" | 	"source.quilibrium.com/quilibrium/monorepo/node/config" | ||||||
| 	qcrypto "source.quilibrium.com/quilibrium/monorepo/node/crypto" | 	qcrypto "source.quilibrium.com/quilibrium/monorepo/node/crypto" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/execution/ceremony/application" | 	"source.quilibrium.com/quilibrium/monorepo/node/execution/ceremony/application" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/rpc" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| @ -82,6 +83,28 @@ func main() { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	if nodeConfig.ListenGRPCMultiaddr != "" { | ||||||
|  | 		srv, err := rpc.NewRPCServer( | ||||||
|  | 			nodeConfig.ListenGRPCMultiaddr, | ||||||
|  | 			nodeConfig.ListenRestMultiaddr, | ||||||
|  | 			node.GetLogger(), | ||||||
|  | 			node.GetClockStore(), | ||||||
|  | 			node.GetPubSub(), | ||||||
|  | 			node.GetExecutionEngines(), | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			panic(err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		go func() { | ||||||
|  | 			err := srv.Start() | ||||||
|  | 			if err != nil { | ||||||
|  | 				panic(err) | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	node.Start() | 	node.Start() | ||||||
| 
 | 
 | ||||||
| 	<-done | 	<-done | ||||||
| @ -205,5 +228,5 @@ func printLogo() { | |||||||
| 
 | 
 | ||||||
| func printVersion() { | func printVersion() { | ||||||
| 	fmt.Println(" ") | 	fmt.Println(" ") | ||||||
| 	fmt.Println("                         Quilibrium Node - v1.1.1 – Dawn") | 	fmt.Println("                         Quilibrium Node - v1.1.2 – Dawn") | ||||||
| } | } | ||||||
|  | |||||||
| @ -29,6 +29,7 @@ import ( | |||||||
| 	blossomsub "source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub" | 	blossomsub "source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb" | 	"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/config" | 	"source.quilibrium.com/quilibrium/monorepo/node/config" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/protobufs" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type BlossomSub struct { | type BlossomSub struct { | ||||||
| @ -338,6 +339,23 @@ func (b *BlossomSub) GetPeerstoreCount() int { | |||||||
| 	return len(b.h.Peerstore().Peers()) | 	return len(b.h.Peerstore().Peers()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (b *BlossomSub) GetNetworkInfo() *protobufs.NetworkInfoResponse { | ||||||
|  | 	resp := &protobufs.NetworkInfoResponse{} | ||||||
|  | 	for _, p := range b.h.Network().Peers() { | ||||||
|  | 		addrs := b.h.Peerstore().Addrs(p) | ||||||
|  | 		multiaddrs := []string{} | ||||||
|  | 		for _, a := range addrs { | ||||||
|  | 			multiaddrs = append(multiaddrs, a.String()) | ||||||
|  | 		} | ||||||
|  | 		resp.NetworkInfo = append(resp.NetworkInfo, &protobufs.NetworkInfo{ | ||||||
|  | 			PeerId:     []byte(p), | ||||||
|  | 			Multiaddrs: multiaddrs, | ||||||
|  | 			PeerScore:  b.ps.PeerScore(p), | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | 	return resp | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (b *BlossomSub) GetNetworkPeersCount() int { | func (b *BlossomSub) GetNetworkPeersCount() int { | ||||||
| 	return len(b.h.Network().Peers()) | 	return len(b.h.Network().Peers()) | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ package p2p | |||||||
| import ( | import ( | ||||||
| 	"google.golang.org/grpc" | 	"google.golang.org/grpc" | ||||||
| 	"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb" | 	"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/protobufs" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type PubSub interface { | type PubSub interface { | ||||||
| @ -21,4 +22,5 @@ type PubSub interface { | |||||||
| 		server *grpc.Server, | 		server *grpc.Server, | ||||||
| 	) error | 	) error | ||||||
| 	GetDirectChannel(peerId []byte) (*grpc.ClientConn, error) | 	GetDirectChannel(peerId []byte) (*grpc.ClientConn, error) | ||||||
|  | 	GetNetworkInfo() *protobufs.NetworkInfoResponse | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,7 +5,12 @@ PWD = $(pwd) | |||||||
| all: $(GO) | all: $(GO) | ||||||
| 
 | 
 | ||||||
| %.pb.go: %.proto | %.pb.go: %.proto | ||||||
| 		protoc -I=. --go-grpc_out=paths=source_relative:. --go_out=paths=source_relative:. *.proto | 		protoc -I=. --go-grpc_out=paths=source_relative:. \
 | ||||||
|  | 		--grpc-gateway_out . \
 | ||||||
|  |     --grpc-gateway_opt logtostderr=true \
 | ||||||
|  |     --grpc-gateway_opt paths=source_relative \
 | ||||||
|  |     --grpc-gateway_opt generate_unbound_methods=true \
 | ||||||
|  | 		--go_out=paths=source_relative:. *.proto | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 		rm -f *.pb.go | 		rm -f *.pb.go | ||||||
|  | |||||||
							
								
								
									
										220
									
								
								node/protobufs/ceremony.pb.gw.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								node/protobufs/ceremony.pb.gw.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,220 @@ | |||||||
|  | // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
 | ||||||
|  | // source: ceremony.proto
 | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  | Package protobufs is a reverse proxy. | ||||||
|  | 
 | ||||||
|  | It translates gRPC into RESTful JSON APIs. | ||||||
|  | */ | ||||||
|  | package protobufs | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"context" | ||||||
|  | 	"io" | ||||||
|  | 	"net/http" | ||||||
|  | 
 | ||||||
|  | 	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime" | ||||||
|  | 	"github.com/grpc-ecosystem/grpc-gateway/v2/utilities" | ||||||
|  | 	"google.golang.org/grpc" | ||||||
|  | 	"google.golang.org/grpc/codes" | ||||||
|  | 	"google.golang.org/grpc/grpclog" | ||||||
|  | 	"google.golang.org/grpc/metadata" | ||||||
|  | 	"google.golang.org/grpc/status" | ||||||
|  | 	"google.golang.org/protobuf/proto" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Suppress "imported and not used" errors
 | ||||||
|  | var _ codes.Code | ||||||
|  | var _ io.Reader | ||||||
|  | var _ status.Status | ||||||
|  | var _ = runtime.String | ||||||
|  | var _ = utilities.NewDoubleArray | ||||||
|  | var _ = metadata.Join | ||||||
|  | 
 | ||||||
|  | func request_CeremonyService_GetCompressedSyncFrames_0(ctx context.Context, marshaler runtime.Marshaler, client CeremonyServiceClient, req *http.Request, pathParams map[string]string) (CeremonyService_GetCompressedSyncFramesClient, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq ClockFramesRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	stream, err := client.GetCompressedSyncFrames(ctx, &protoReq) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, metadata, err | ||||||
|  | 	} | ||||||
|  | 	header, err := stream.Header() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, metadata, err | ||||||
|  | 	} | ||||||
|  | 	metadata.HeaderMD = header | ||||||
|  | 	return stream, metadata, nil | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func request_CeremonyService_GetPublicChannel_0(ctx context.Context, marshaler runtime.Marshaler, client CeremonyServiceClient, req *http.Request, pathParams map[string]string) (CeremonyService_GetPublicChannelClient, runtime.ServerMetadata, error) { | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 	stream, err := client.GetPublicChannel(ctx) | ||||||
|  | 	if err != nil { | ||||||
|  | 		grpclog.Infof("Failed to start streaming: %v", err) | ||||||
|  | 		return nil, metadata, err | ||||||
|  | 	} | ||||||
|  | 	dec := marshaler.NewDecoder(req.Body) | ||||||
|  | 	handleSend := func() error { | ||||||
|  | 		var protoReq P2PChannelEnvelope | ||||||
|  | 		err := dec.Decode(&protoReq) | ||||||
|  | 		if err == io.EOF { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		if err != nil { | ||||||
|  | 			grpclog.Infof("Failed to decode request: %v", err) | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		if err := stream.Send(&protoReq); err != nil { | ||||||
|  | 			grpclog.Infof("Failed to send request: %v", err) | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	go func() { | ||||||
|  | 		for { | ||||||
|  | 			if err := handleSend(); err != nil { | ||||||
|  | 				break | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		if err := stream.CloseSend(); err != nil { | ||||||
|  | 			grpclog.Infof("Failed to terminate client stream: %v", err) | ||||||
|  | 		} | ||||||
|  | 	}() | ||||||
|  | 	header, err := stream.Header() | ||||||
|  | 	if err != nil { | ||||||
|  | 		grpclog.Infof("Failed to get header from client: %v", err) | ||||||
|  | 		return nil, metadata, err | ||||||
|  | 	} | ||||||
|  | 	metadata.HeaderMD = header | ||||||
|  | 	return stream, metadata, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterCeremonyServiceHandlerServer registers the http handlers for service CeremonyService to "mux".
 | ||||||
|  | // UnaryRPC     :call CeremonyServiceServer directly.
 | ||||||
|  | // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
 | ||||||
|  | // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterCeremonyServiceHandlerFromEndpoint instead.
 | ||||||
|  | func RegisterCeremonyServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server CeremonyServiceServer) error { | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_CeremonyService_GetCompressedSyncFrames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") | ||||||
|  | 		_, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 		return | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_CeremonyService_GetPublicChannel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") | ||||||
|  | 		_, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 		return | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterCeremonyServiceHandlerFromEndpoint is same as RegisterCeremonyServiceHandler but
 | ||||||
|  | // automatically dials to "endpoint" and closes the connection when "ctx" gets done.
 | ||||||
|  | func RegisterCeremonyServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { | ||||||
|  | 	conn, err := grpc.DialContext(ctx, endpoint, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	defer func() { | ||||||
|  | 		if err != nil { | ||||||
|  | 			if cerr := conn.Close(); cerr != nil { | ||||||
|  | 				grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) | ||||||
|  | 			} | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		go func() { | ||||||
|  | 			<-ctx.Done() | ||||||
|  | 			if cerr := conn.Close(); cerr != nil { | ||||||
|  | 				grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 	}() | ||||||
|  | 
 | ||||||
|  | 	return RegisterCeremonyServiceHandler(ctx, mux, conn) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterCeremonyServiceHandler registers the http handlers for service CeremonyService to "mux".
 | ||||||
|  | // The handlers forward requests to the grpc endpoint over "conn".
 | ||||||
|  | func RegisterCeremonyServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { | ||||||
|  | 	return RegisterCeremonyServiceHandlerClient(ctx, mux, NewCeremonyServiceClient(conn)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterCeremonyServiceHandlerClient registers the http handlers for service CeremonyService
 | ||||||
|  | // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "CeremonyServiceClient".
 | ||||||
|  | // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "CeremonyServiceClient"
 | ||||||
|  | // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
 | ||||||
|  | // "CeremonyServiceClient" to call the correct interceptors.
 | ||||||
|  | func RegisterCeremonyServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client CeremonyServiceClient) error { | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_CeremonyService_GetCompressedSyncFrames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.ceremony.pb.CeremonyService/GetCompressedSyncFrames", runtime.WithHTTPPathPattern("/quilibrium.node.ceremony.pb.CeremonyService/GetCompressedSyncFrames")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_CeremonyService_GetCompressedSyncFrames_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_CeremonyService_GetCompressedSyncFrames_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_CeremonyService_GetPublicChannel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.ceremony.pb.CeremonyService/GetPublicChannel", runtime.WithHTTPPathPattern("/quilibrium.node.ceremony.pb.CeremonyService/GetPublicChannel")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_CeremonyService_GetPublicChannel_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_CeremonyService_GetPublicChannel_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	pattern_CeremonyService_GetCompressedSyncFrames_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.ceremony.pb.CeremonyService", "GetCompressedSyncFrames"}, "")) | ||||||
|  | 
 | ||||||
|  | 	pattern_CeremonyService_GetPublicChannel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.ceremony.pb.CeremonyService", "GetPublicChannel"}, "")) | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	forward_CeremonyService_GetCompressedSyncFrames_0 = runtime.ForwardResponseStream | ||||||
|  | 
 | ||||||
|  | 	forward_CeremonyService_GetPublicChannel_0 = runtime.ForwardResponseStream | ||||||
|  | ) | ||||||
							
								
								
									
										851
									
								
								node/protobufs/node.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										851
									
								
								node/protobufs/node.pb.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,851 @@ | |||||||
|  | // Code generated by protoc-gen-go. DO NOT EDIT.
 | ||||||
|  | // versions:
 | ||||||
|  | // 	protoc-gen-go v1.30.0
 | ||||||
|  | // 	protoc        v3.21.12
 | ||||||
|  | // source: node.proto
 | ||||||
|  | 
 | ||||||
|  | package protobufs | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	protoreflect "google.golang.org/protobuf/reflect/protoreflect" | ||||||
|  | 	protoimpl "google.golang.org/protobuf/runtime/protoimpl" | ||||||
|  | 	reflect "reflect" | ||||||
|  | 	sync "sync" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	// Verify that this generated code is sufficiently up-to-date.
 | ||||||
|  | 	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) | ||||||
|  | 	// Verify that runtime/protoimpl is sufficiently up-to-date.
 | ||||||
|  | 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type GetFramesRequest struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	Filter            []byte `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` | ||||||
|  | 	FromFrameNumber   uint64 `protobuf:"varint,2,opt,name=from_frame_number,json=fromFrameNumber,proto3" json:"from_frame_number,omitempty"` | ||||||
|  | 	ToFrameNumber     uint64 `protobuf:"varint,3,opt,name=to_frame_number,json=toFrameNumber,proto3" json:"to_frame_number,omitempty"` | ||||||
|  | 	IncludeCandidates bool   `protobuf:"varint,4,opt,name=include_candidates,json=includeCandidates,proto3" json:"include_candidates,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) Reset() { | ||||||
|  | 	*x = GetFramesRequest{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[0] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*GetFramesRequest) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[0] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use GetFramesRequest.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*GetFramesRequest) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{0} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) GetFilter() []byte { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.Filter | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) GetFromFrameNumber() uint64 { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.FromFrameNumber | ||||||
|  | 	} | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) GetToFrameNumber() uint64 { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.ToFrameNumber | ||||||
|  | 	} | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFramesRequest) GetIncludeCandidates() bool { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.IncludeCandidates | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type GetFrameInfoRequest struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	Filter      []byte `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` | ||||||
|  | 	FrameNumber uint64 `protobuf:"varint,2,opt,name=frame_number,json=frameNumber,proto3" json:"frame_number,omitempty"` | ||||||
|  | 	Selector    []byte `protobuf:"bytes,3,opt,name=selector,proto3" json:"selector,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) Reset() { | ||||||
|  | 	*x = GetFrameInfoRequest{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[1] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*GetFrameInfoRequest) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[1] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use GetFrameInfoRequest.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*GetFrameInfoRequest) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{1} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) GetFilter() []byte { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.Filter | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) GetFrameNumber() uint64 { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.FrameNumber | ||||||
|  | 	} | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetFrameInfoRequest) GetSelector() []byte { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.Selector | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type GetPeerInfoRequest struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetPeerInfoRequest) Reset() { | ||||||
|  | 	*x = GetPeerInfoRequest{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[2] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetPeerInfoRequest) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*GetPeerInfoRequest) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *GetPeerInfoRequest) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[2] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use GetPeerInfoRequest.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*GetPeerInfoRequest) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{2} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type GetNetworkInfoRequest struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetNetworkInfoRequest) Reset() { | ||||||
|  | 	*x = GetNetworkInfoRequest{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[3] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *GetNetworkInfoRequest) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*GetNetworkInfoRequest) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *GetNetworkInfoRequest) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[3] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use GetNetworkInfoRequest.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*GetNetworkInfoRequest) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{3} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type FramesResponse struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	TruncatedClockFrames []*ClockFrame `protobuf:"bytes,1,rep,name=truncated_clock_frames,json=truncatedClockFrames,proto3" json:"truncated_clock_frames,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FramesResponse) Reset() { | ||||||
|  | 	*x = FramesResponse{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[4] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FramesResponse) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*FramesResponse) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *FramesResponse) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[4] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use FramesResponse.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*FramesResponse) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{4} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FramesResponse) GetTruncatedClockFrames() []*ClockFrame { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.TruncatedClockFrames | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type FrameInfoResponse struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	ClockFrame *ClockFrame `protobuf:"bytes,1,opt,name=clock_frame,json=clockFrame,proto3" json:"clock_frame,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FrameInfoResponse) Reset() { | ||||||
|  | 	*x = FrameInfoResponse{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[5] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FrameInfoResponse) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*FrameInfoResponse) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *FrameInfoResponse) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[5] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use FrameInfoResponse.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*FrameInfoResponse) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{5} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *FrameInfoResponse) GetClockFrame() *ClockFrame { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.ClockFrame | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type PeerInfo struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	PeerId     []byte   `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` | ||||||
|  | 	Multiaddrs []string `protobuf:"bytes,2,rep,name=multiaddrs,proto3" json:"multiaddrs,omitempty"` | ||||||
|  | 	MaxFrame   uint64   `protobuf:"varint,3,opt,name=max_frame,json=maxFrame,proto3" json:"max_frame,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) Reset() { | ||||||
|  | 	*x = PeerInfo{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[6] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*PeerInfo) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[6] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use PeerInfo.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*PeerInfo) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{6} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) GetPeerId() []byte { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.PeerId | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) GetMultiaddrs() []string { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.Multiaddrs | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfo) GetMaxFrame() uint64 { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.MaxFrame | ||||||
|  | 	} | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type PeerInfoResponse struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	PeerInfo              []*PeerInfo `protobuf:"bytes,1,rep,name=peer_info,json=peerInfo,proto3" json:"peer_info,omitempty"` | ||||||
|  | 	UncooperativePeerInfo []*PeerInfo `protobuf:"bytes,2,rep,name=uncooperative_peer_info,json=uncooperativePeerInfo,proto3" json:"uncooperative_peer_info,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfoResponse) Reset() { | ||||||
|  | 	*x = PeerInfoResponse{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[7] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfoResponse) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*PeerInfoResponse) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfoResponse) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[7] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use PeerInfoResponse.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*PeerInfoResponse) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{7} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfoResponse) GetPeerInfo() []*PeerInfo { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.PeerInfo | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *PeerInfoResponse) GetUncooperativePeerInfo() []*PeerInfo { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.UncooperativePeerInfo | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type NetworkInfo struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	PeerId     []byte   `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` | ||||||
|  | 	Multiaddrs []string `protobuf:"bytes,2,rep,name=multiaddrs,proto3" json:"multiaddrs,omitempty"` | ||||||
|  | 	PeerScore  float64  `protobuf:"fixed64,3,opt,name=peer_score,json=peerScore,proto3" json:"peer_score,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) Reset() { | ||||||
|  | 	*x = NetworkInfo{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[8] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*NetworkInfo) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[8] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use NetworkInfo.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*NetworkInfo) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{8} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) GetPeerId() []byte { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.PeerId | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) GetMultiaddrs() []string { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.Multiaddrs | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfo) GetPeerScore() float64 { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.PeerScore | ||||||
|  | 	} | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type NetworkInfoResponse struct { | ||||||
|  | 	state         protoimpl.MessageState | ||||||
|  | 	sizeCache     protoimpl.SizeCache | ||||||
|  | 	unknownFields protoimpl.UnknownFields | ||||||
|  | 
 | ||||||
|  | 	NetworkInfo []*NetworkInfo `protobuf:"bytes,1,rep,name=network_info,json=networkInfo,proto3" json:"network_info,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfoResponse) Reset() { | ||||||
|  | 	*x = NetworkInfoResponse{} | ||||||
|  | 	if protoimpl.UnsafeEnabled { | ||||||
|  | 		mi := &file_node_proto_msgTypes[9] | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		ms.StoreMessageInfo(mi) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfoResponse) String() string { | ||||||
|  | 	return protoimpl.X.MessageStringOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (*NetworkInfoResponse) ProtoMessage() {} | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfoResponse) ProtoReflect() protoreflect.Message { | ||||||
|  | 	mi := &file_node_proto_msgTypes[9] | ||||||
|  | 	if protoimpl.UnsafeEnabled && x != nil { | ||||||
|  | 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||||||
|  | 		if ms.LoadMessageInfo() == nil { | ||||||
|  | 			ms.StoreMessageInfo(mi) | ||||||
|  | 		} | ||||||
|  | 		return ms | ||||||
|  | 	} | ||||||
|  | 	return mi.MessageOf(x) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Deprecated: Use NetworkInfoResponse.ProtoReflect.Descriptor instead.
 | ||||||
|  | func (*NetworkInfoResponse) Descriptor() ([]byte, []int) { | ||||||
|  | 	return file_node_proto_rawDescGZIP(), []int{9} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *NetworkInfoResponse) GetNetworkInfo() []*NetworkInfo { | ||||||
|  | 	if x != nil { | ||||||
|  | 		return x.NetworkInfo | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var File_node_proto protoreflect.FileDescriptor | ||||||
|  | 
 | ||||||
|  | var file_node_proto_rawDesc = []byte{ | ||||||
|  | 	0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x71, 0x75, | ||||||
|  | 	0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, | ||||||
|  | 	0x64, 0x65, 0x2e, 0x70, 0x62, 0x1a, 0x0b, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, | ||||||
|  | 	0x74, 0x6f, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, | ||||||
|  | 	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, | ||||||
|  | 	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, | ||||||
|  | 	0x2a, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x75, | ||||||
|  | 	0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, | ||||||
|  | 	0x46, 0x72, 0x61, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x74, | ||||||
|  | 	0x6f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, | ||||||
|  | 	0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x6f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4e, 0x75, 0x6d, | ||||||
|  | 	0x62, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x63, | ||||||
|  | 	0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, | ||||||
|  | 	0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, | ||||||
|  | 	0x65, 0x73, 0x22, 0x6c, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, | ||||||
|  | 	0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, | ||||||
|  | 	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, | ||||||
|  | 	0x72, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, | ||||||
|  | 	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4e, 0x75, | ||||||
|  | 	0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, | ||||||
|  | 	0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, | ||||||
|  | 	0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, | ||||||
|  | 	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, | ||||||
|  | 	0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, | ||||||
|  | 	0x6c, 0x0a, 0x0e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, | ||||||
|  | 	0x65, 0x12, 0x5a, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, | ||||||
|  | 	0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, | ||||||
|  | 	0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, | ||||||
|  | 	0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x6f, | ||||||
|  | 	0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x14, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, | ||||||
|  | 	0x65, 0x64, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x5a, 0x0a, | ||||||
|  | 	0x11, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, | ||||||
|  | 	0x73, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x66, 0x72, 0x61, 0x6d, | ||||||
|  | 	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, | ||||||
|  | 	0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, | ||||||
|  | 	0x70, 0x62, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, | ||||||
|  | 	0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x08, 0x50, 0x65, 0x65, | ||||||
|  | 	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, | ||||||
|  | 	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, | ||||||
|  | 	0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, | ||||||
|  | 	0x28, 0x09, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x1b, | ||||||
|  | 	0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, | ||||||
|  | 	0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x10, | ||||||
|  | 	0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, | ||||||
|  | 	0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, | ||||||
|  | 	0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, | ||||||
|  | 	0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, | ||||||
|  | 	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, | ||||||
|  | 	0x12, 0x59, 0x0a, 0x17, 0x75, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, | ||||||
|  | 	0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, | ||||||
|  | 	0x0b, 0x32, 0x21, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, | ||||||
|  | 	0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, | ||||||
|  | 	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x15, 0x75, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, | ||||||
|  | 	0x69, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x65, 0x0a, 0x0b, 0x4e, | ||||||
|  | 	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, | ||||||
|  | 	0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x65, 0x65, | ||||||
|  | 	0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, | ||||||
|  | 	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, | ||||||
|  | 	0x64, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, | ||||||
|  | 	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x53, 0x63, 0x6f, | ||||||
|  | 	0x72, 0x65, 0x22, 0x5e, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, | ||||||
|  | 	0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x6e, 0x65, 0x74, | ||||||
|  | 	0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, | ||||||
|  | 	0x24, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, | ||||||
|  | 	0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, | ||||||
|  | 	0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, | ||||||
|  | 	0x66, 0x6f, 0x32, 0xaf, 0x03, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, | ||||||
|  | 	0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, | ||||||
|  | 	0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, | ||||||
|  | 	0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, | ||||||
|  | 	0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69, | ||||||
|  | 	0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, | ||||||
|  | 	0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, | ||||||
|  | 	0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, | ||||||
|  | 	0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, | ||||||
|  | 	0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, | ||||||
|  | 	0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, | ||||||
|  | 	0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, | ||||||
|  | 	0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, | ||||||
|  | 	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, | ||||||
|  | 	0x0b, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71, | ||||||
|  | 	0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, | ||||||
|  | 	0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, | ||||||
|  | 	0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, | ||||||
|  | 	0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, | ||||||
|  | 	0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, | ||||||
|  | 	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, | ||||||
|  | 	0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, | ||||||
|  | 	0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, | ||||||
|  | 	0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, | ||||||
|  | 	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, | ||||||
|  | 	0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, | ||||||
|  | 	0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, | ||||||
|  | 	0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71, | ||||||
|  | 	0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, | ||||||
|  | 	0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, | ||||||
|  | 	0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, | ||||||
|  | 	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	file_node_proto_rawDescOnce sync.Once | ||||||
|  | 	file_node_proto_rawDescData = file_node_proto_rawDesc | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func file_node_proto_rawDescGZIP() []byte { | ||||||
|  | 	file_node_proto_rawDescOnce.Do(func() { | ||||||
|  | 		file_node_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_proto_rawDescData) | ||||||
|  | 	}) | ||||||
|  | 	return file_node_proto_rawDescData | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var file_node_proto_msgTypes = make([]protoimpl.MessageInfo, 10) | ||||||
|  | var file_node_proto_goTypes = []interface{}{ | ||||||
|  | 	(*GetFramesRequest)(nil),      // 0: quilibrium.node.node.pb.GetFramesRequest
 | ||||||
|  | 	(*GetFrameInfoRequest)(nil),   // 1: quilibrium.node.node.pb.GetFrameInfoRequest
 | ||||||
|  | 	(*GetPeerInfoRequest)(nil),    // 2: quilibrium.node.node.pb.GetPeerInfoRequest
 | ||||||
|  | 	(*GetNetworkInfoRequest)(nil), // 3: quilibrium.node.node.pb.GetNetworkInfoRequest
 | ||||||
|  | 	(*FramesResponse)(nil),        // 4: quilibrium.node.node.pb.FramesResponse
 | ||||||
|  | 	(*FrameInfoResponse)(nil),     // 5: quilibrium.node.node.pb.FrameInfoResponse
 | ||||||
|  | 	(*PeerInfo)(nil),              // 6: quilibrium.node.node.pb.PeerInfo
 | ||||||
|  | 	(*PeerInfoResponse)(nil),      // 7: quilibrium.node.node.pb.PeerInfoResponse
 | ||||||
|  | 	(*NetworkInfo)(nil),           // 8: quilibrium.node.node.pb.NetworkInfo
 | ||||||
|  | 	(*NetworkInfoResponse)(nil),   // 9: quilibrium.node.node.pb.NetworkInfoResponse
 | ||||||
|  | 	(*ClockFrame)(nil),            // 10: quilibrium.node.clock.pb.ClockFrame
 | ||||||
|  | } | ||||||
|  | var file_node_proto_depIdxs = []int32{ | ||||||
|  | 	10, // 0: quilibrium.node.node.pb.FramesResponse.truncated_clock_frames:type_name -> quilibrium.node.clock.pb.ClockFrame
 | ||||||
|  | 	10, // 1: quilibrium.node.node.pb.FrameInfoResponse.clock_frame:type_name -> quilibrium.node.clock.pb.ClockFrame
 | ||||||
|  | 	6,  // 2: quilibrium.node.node.pb.PeerInfoResponse.peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
 | ||||||
|  | 	6,  // 3: quilibrium.node.node.pb.PeerInfoResponse.uncooperative_peer_info:type_name -> quilibrium.node.node.pb.PeerInfo
 | ||||||
|  | 	8,  // 4: quilibrium.node.node.pb.NetworkInfoResponse.network_info:type_name -> quilibrium.node.node.pb.NetworkInfo
 | ||||||
|  | 	0,  // 5: quilibrium.node.node.pb.NodeService.GetFrames:input_type -> quilibrium.node.node.pb.GetFramesRequest
 | ||||||
|  | 	1,  // 6: quilibrium.node.node.pb.NodeService.GetFrameInfo:input_type -> quilibrium.node.node.pb.GetFrameInfoRequest
 | ||||||
|  | 	2,  // 7: quilibrium.node.node.pb.NodeService.GetPeerInfo:input_type -> quilibrium.node.node.pb.GetPeerInfoRequest
 | ||||||
|  | 	3,  // 8: quilibrium.node.node.pb.NodeService.GetNetworkInfo:input_type -> quilibrium.node.node.pb.GetNetworkInfoRequest
 | ||||||
|  | 	4,  // 9: quilibrium.node.node.pb.NodeService.GetFrames:output_type -> quilibrium.node.node.pb.FramesResponse
 | ||||||
|  | 	5,  // 10: quilibrium.node.node.pb.NodeService.GetFrameInfo:output_type -> quilibrium.node.node.pb.FrameInfoResponse
 | ||||||
|  | 	7,  // 11: quilibrium.node.node.pb.NodeService.GetPeerInfo:output_type -> quilibrium.node.node.pb.PeerInfoResponse
 | ||||||
|  | 	9,  // 12: quilibrium.node.node.pb.NodeService.GetNetworkInfo:output_type -> quilibrium.node.node.pb.NetworkInfoResponse
 | ||||||
|  | 	9,  // [9:13] is the sub-list for method output_type
 | ||||||
|  | 	5,  // [5:9] is the sub-list for method input_type
 | ||||||
|  | 	5,  // [5:5] is the sub-list for extension type_name
 | ||||||
|  | 	5,  // [5:5] is the sub-list for extension extendee
 | ||||||
|  | 	0,  // [0:5] is the sub-list for field type_name
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func init() { file_node_proto_init() } | ||||||
|  | func file_node_proto_init() { | ||||||
|  | 	if File_node_proto != nil { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	file_clock_proto_init() | ||||||
|  | 	if !protoimpl.UnsafeEnabled { | ||||||
|  | 		file_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*GetFramesRequest); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*GetFrameInfoRequest); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*GetPeerInfoRequest); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*GetNetworkInfoRequest); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*FramesResponse); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*FrameInfoResponse); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*PeerInfo); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*PeerInfoResponse); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*NetworkInfo); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_node_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { | ||||||
|  | 			switch v := v.(*NetworkInfoResponse); i { | ||||||
|  | 			case 0: | ||||||
|  | 				return &v.state | ||||||
|  | 			case 1: | ||||||
|  | 				return &v.sizeCache | ||||||
|  | 			case 2: | ||||||
|  | 				return &v.unknownFields | ||||||
|  | 			default: | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	type x struct{} | ||||||
|  | 	out := protoimpl.TypeBuilder{ | ||||||
|  | 		File: protoimpl.DescBuilder{ | ||||||
|  | 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(), | ||||||
|  | 			RawDescriptor: file_node_proto_rawDesc, | ||||||
|  | 			NumEnums:      0, | ||||||
|  | 			NumMessages:   10, | ||||||
|  | 			NumExtensions: 0, | ||||||
|  | 			NumServices:   1, | ||||||
|  | 		}, | ||||||
|  | 		GoTypes:           file_node_proto_goTypes, | ||||||
|  | 		DependencyIndexes: file_node_proto_depIdxs, | ||||||
|  | 		MessageInfos:      file_node_proto_msgTypes, | ||||||
|  | 	}.Build() | ||||||
|  | 	File_node_proto = out.File | ||||||
|  | 	file_node_proto_rawDesc = nil | ||||||
|  | 	file_node_proto_goTypes = nil | ||||||
|  | 	file_node_proto_depIdxs = nil | ||||||
|  | } | ||||||
							
								
								
									
										426
									
								
								node/protobufs/node.pb.gw.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										426
									
								
								node/protobufs/node.pb.gw.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,426 @@ | |||||||
|  | // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
 | ||||||
|  | // source: node.proto
 | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  | Package protobufs is a reverse proxy. | ||||||
|  | 
 | ||||||
|  | It translates gRPC into RESTful JSON APIs. | ||||||
|  | */ | ||||||
|  | package protobufs | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"context" | ||||||
|  | 	"io" | ||||||
|  | 	"net/http" | ||||||
|  | 
 | ||||||
|  | 	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime" | ||||||
|  | 	"github.com/grpc-ecosystem/grpc-gateway/v2/utilities" | ||||||
|  | 	"google.golang.org/grpc" | ||||||
|  | 	"google.golang.org/grpc/codes" | ||||||
|  | 	"google.golang.org/grpc/grpclog" | ||||||
|  | 	"google.golang.org/grpc/metadata" | ||||||
|  | 	"google.golang.org/grpc/status" | ||||||
|  | 	"google.golang.org/protobuf/proto" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Suppress "imported and not used" errors
 | ||||||
|  | var _ codes.Code | ||||||
|  | var _ io.Reader | ||||||
|  | var _ status.Status | ||||||
|  | var _ = runtime.String | ||||||
|  | var _ = utilities.NewDoubleArray | ||||||
|  | var _ = metadata.Join | ||||||
|  | 
 | ||||||
|  | func request_NodeService_GetFrames_0(ctx context.Context, marshaler runtime.Marshaler, client NodeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetFramesRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := client.GetFrames(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func local_request_NodeService_GetFrames_0(ctx context.Context, marshaler runtime.Marshaler, server NodeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetFramesRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := server.GetFrames(ctx, &protoReq) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func request_NodeService_GetFrameInfo_0(ctx context.Context, marshaler runtime.Marshaler, client NodeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetFrameInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := client.GetFrameInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func local_request_NodeService_GetFrameInfo_0(ctx context.Context, marshaler runtime.Marshaler, server NodeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetFrameInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := server.GetFrameInfo(ctx, &protoReq) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func request_NodeService_GetPeerInfo_0(ctx context.Context, marshaler runtime.Marshaler, client NodeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetPeerInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := client.GetPeerInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func local_request_NodeService_GetPeerInfo_0(ctx context.Context, marshaler runtime.Marshaler, server NodeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetPeerInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := server.GetPeerInfo(ctx, &protoReq) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func request_NodeService_GetNetworkInfo_0(ctx context.Context, marshaler runtime.Marshaler, client NodeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetNetworkInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := client.GetNetworkInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func local_request_NodeService_GetNetworkInfo_0(ctx context.Context, marshaler runtime.Marshaler, server NodeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { | ||||||
|  | 	var protoReq GetNetworkInfoRequest | ||||||
|  | 	var metadata runtime.ServerMetadata | ||||||
|  | 
 | ||||||
|  | 	newReader, berr := utilities.IOReaderFactory(req.Body) | ||||||
|  | 	if berr != nil { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) | ||||||
|  | 	} | ||||||
|  | 	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { | ||||||
|  | 		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	msg, err := server.GetNetworkInfo(ctx, &protoReq) | ||||||
|  | 	return msg, metadata, err | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterNodeServiceHandlerServer registers the http handlers for service NodeService to "mux".
 | ||||||
|  | // UnaryRPC     :call NodeServiceServer directly.
 | ||||||
|  | // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
 | ||||||
|  | // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterNodeServiceHandlerFromEndpoint instead.
 | ||||||
|  | func RegisterNodeServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server NodeServiceServer) error { | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetFrames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		var stream runtime.ServerTransportStream | ||||||
|  | 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetFrames", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetFrames")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := local_request_NodeService_GetFrames_0(annotatedContext, inboundMarshaler, server, req, pathParams) | ||||||
|  | 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetFrames_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetFrameInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		var stream runtime.ServerTransportStream | ||||||
|  | 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetFrameInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetFrameInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := local_request_NodeService_GetFrameInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) | ||||||
|  | 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetFrameInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetPeerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		var stream runtime.ServerTransportStream | ||||||
|  | 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetPeerInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetPeerInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := local_request_NodeService_GetPeerInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) | ||||||
|  | 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetPeerInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetNetworkInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		var stream runtime.ServerTransportStream | ||||||
|  | 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetNetworkInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetNetworkInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := local_request_NodeService_GetNetworkInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) | ||||||
|  | 		md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetNetworkInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterNodeServiceHandlerFromEndpoint is same as RegisterNodeServiceHandler but
 | ||||||
|  | // automatically dials to "endpoint" and closes the connection when "ctx" gets done.
 | ||||||
|  | func RegisterNodeServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { | ||||||
|  | 	conn, err := grpc.DialContext(ctx, endpoint, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	defer func() { | ||||||
|  | 		if err != nil { | ||||||
|  | 			if cerr := conn.Close(); cerr != nil { | ||||||
|  | 				grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) | ||||||
|  | 			} | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		go func() { | ||||||
|  | 			<-ctx.Done() | ||||||
|  | 			if cerr := conn.Close(); cerr != nil { | ||||||
|  | 				grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 	}() | ||||||
|  | 
 | ||||||
|  | 	return RegisterNodeServiceHandler(ctx, mux, conn) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterNodeServiceHandler registers the http handlers for service NodeService to "mux".
 | ||||||
|  | // The handlers forward requests to the grpc endpoint over "conn".
 | ||||||
|  | func RegisterNodeServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { | ||||||
|  | 	return RegisterNodeServiceHandlerClient(ctx, mux, NewNodeServiceClient(conn)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RegisterNodeServiceHandlerClient registers the http handlers for service NodeService
 | ||||||
|  | // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "NodeServiceClient".
 | ||||||
|  | // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "NodeServiceClient"
 | ||||||
|  | // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
 | ||||||
|  | // "NodeServiceClient" to call the correct interceptors.
 | ||||||
|  | func RegisterNodeServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client NodeServiceClient) error { | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetFrames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetFrames", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetFrames")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_NodeService_GetFrames_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetFrames_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetFrameInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetFrameInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetFrameInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_NodeService_GetFrameInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetFrameInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetPeerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetPeerInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetPeerInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_NodeService_GetPeerInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetPeerInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	mux.Handle("POST", pattern_NodeService_GetNetworkInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { | ||||||
|  | 		ctx, cancel := context.WithCancel(req.Context()) | ||||||
|  | 		defer cancel() | ||||||
|  | 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) | ||||||
|  | 		var err error | ||||||
|  | 		var annotatedContext context.Context | ||||||
|  | 		annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/quilibrium.node.node.pb.NodeService/GetNetworkInfo", runtime.WithHTTPPathPattern("/quilibrium.node.node.pb.NodeService/GetNetworkInfo")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		resp, md, err := request_NodeService_GetNetworkInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) | ||||||
|  | 		annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) | ||||||
|  | 		if err != nil { | ||||||
|  | 			runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		forward_NodeService_GetNetworkInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) | ||||||
|  | 
 | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	pattern_NodeService_GetFrames_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetFrames"}, "")) | ||||||
|  | 
 | ||||||
|  | 	pattern_NodeService_GetFrameInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetFrameInfo"}, "")) | ||||||
|  | 
 | ||||||
|  | 	pattern_NodeService_GetPeerInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetPeerInfo"}, "")) | ||||||
|  | 
 | ||||||
|  | 	pattern_NodeService_GetNetworkInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"quilibrium.node.node.pb.NodeService", "GetNetworkInfo"}, "")) | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	forward_NodeService_GetFrames_0 = runtime.ForwardResponseMessage | ||||||
|  | 
 | ||||||
|  | 	forward_NodeService_GetFrameInfo_0 = runtime.ForwardResponseMessage | ||||||
|  | 
 | ||||||
|  | 	forward_NodeService_GetPeerInfo_0 = runtime.ForwardResponseMessage | ||||||
|  | 
 | ||||||
|  | 	forward_NodeService_GetNetworkInfo_0 = runtime.ForwardResponseMessage | ||||||
|  | ) | ||||||
							
								
								
									
										60
									
								
								node/protobufs/node.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								node/protobufs/node.proto
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | syntax = "proto3"; | ||||||
|  | 
 | ||||||
|  | package quilibrium.node.node.pb; | ||||||
|  | 
 | ||||||
|  | option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs"; | ||||||
|  | 
 | ||||||
|  | import "clock.proto"; | ||||||
|  | 
 | ||||||
|  | message GetFramesRequest { | ||||||
|  |   bytes filter = 1; | ||||||
|  |   uint64 from_frame_number = 2; | ||||||
|  |   uint64 to_frame_number = 3; | ||||||
|  |   bool include_candidates = 4; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message GetFrameInfoRequest { | ||||||
|  |   bytes filter = 1; | ||||||
|  |   uint64 frame_number = 2; | ||||||
|  |   bytes selector = 3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message GetPeerInfoRequest {} | ||||||
|  | 
 | ||||||
|  | message GetNetworkInfoRequest {} | ||||||
|  | 
 | ||||||
|  | message FramesResponse { | ||||||
|  |   repeated quilibrium.node.clock.pb.ClockFrame truncated_clock_frames = 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message FrameInfoResponse { | ||||||
|  |   quilibrium.node.clock.pb.ClockFrame clock_frame = 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message PeerInfo { | ||||||
|  |   bytes peer_id = 1; | ||||||
|  |   repeated string multiaddrs = 2; | ||||||
|  |   uint64 max_frame = 3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message PeerInfoResponse { | ||||||
|  |   repeated PeerInfo peer_info = 1; | ||||||
|  |   repeated PeerInfo uncooperative_peer_info = 2; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message NetworkInfo { | ||||||
|  |   bytes peer_id = 1; | ||||||
|  |   repeated string multiaddrs = 2; | ||||||
|  |   double peer_score = 3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message NetworkInfoResponse { | ||||||
|  |   repeated NetworkInfo network_info = 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | service NodeService { | ||||||
|  |   rpc GetFrames(GetFramesRequest) returns (FramesResponse); | ||||||
|  |   rpc GetFrameInfo(GetFrameInfoRequest) returns (FrameInfoResponse); | ||||||
|  |   rpc GetPeerInfo(GetPeerInfoRequest) returns (PeerInfoResponse); | ||||||
|  |   rpc GetNetworkInfo(GetNetworkInfoRequest) returns (NetworkInfoResponse); | ||||||
|  | } | ||||||
							
								
								
									
										220
									
								
								node/protobufs/node_grpc.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								node/protobufs/node_grpc.pb.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,220 @@ | |||||||
|  | // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 | ||||||
|  | // versions:
 | ||||||
|  | // - protoc-gen-go-grpc v1.3.0
 | ||||||
|  | // - protoc             v3.21.12
 | ||||||
|  | // source: node.proto
 | ||||||
|  | 
 | ||||||
|  | package protobufs | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	context "context" | ||||||
|  | 	grpc "google.golang.org/grpc" | ||||||
|  | 	codes "google.golang.org/grpc/codes" | ||||||
|  | 	status "google.golang.org/grpc/status" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // This is a compile-time assertion to ensure that this generated file
 | ||||||
|  | // is compatible with the grpc package it is being compiled against.
 | ||||||
|  | // Requires gRPC-Go v1.32.0 or later.
 | ||||||
|  | const _ = grpc.SupportPackageIsVersion7 | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	NodeService_GetFrames_FullMethodName      = "/quilibrium.node.node.pb.NodeService/GetFrames" | ||||||
|  | 	NodeService_GetFrameInfo_FullMethodName   = "/quilibrium.node.node.pb.NodeService/GetFrameInfo" | ||||||
|  | 	NodeService_GetPeerInfo_FullMethodName    = "/quilibrium.node.node.pb.NodeService/GetPeerInfo" | ||||||
|  | 	NodeService_GetNetworkInfo_FullMethodName = "/quilibrium.node.node.pb.NodeService/GetNetworkInfo" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // NodeServiceClient is the client API for NodeService service.
 | ||||||
|  | //
 | ||||||
|  | // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 | ||||||
|  | type NodeServiceClient interface { | ||||||
|  | 	GetFrames(ctx context.Context, in *GetFramesRequest, opts ...grpc.CallOption) (*FramesResponse, error) | ||||||
|  | 	GetFrameInfo(ctx context.Context, in *GetFrameInfoRequest, opts ...grpc.CallOption) (*FrameInfoResponse, error) | ||||||
|  | 	GetPeerInfo(ctx context.Context, in *GetPeerInfoRequest, opts ...grpc.CallOption) (*PeerInfoResponse, error) | ||||||
|  | 	GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type nodeServiceClient struct { | ||||||
|  | 	cc grpc.ClientConnInterface | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient { | ||||||
|  | 	return &nodeServiceClient{cc} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *nodeServiceClient) GetFrames(ctx context.Context, in *GetFramesRequest, opts ...grpc.CallOption) (*FramesResponse, error) { | ||||||
|  | 	out := new(FramesResponse) | ||||||
|  | 	err := c.cc.Invoke(ctx, NodeService_GetFrames_FullMethodName, in, out, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *nodeServiceClient) GetFrameInfo(ctx context.Context, in *GetFrameInfoRequest, opts ...grpc.CallOption) (*FrameInfoResponse, error) { | ||||||
|  | 	out := new(FrameInfoResponse) | ||||||
|  | 	err := c.cc.Invoke(ctx, NodeService_GetFrameInfo_FullMethodName, in, out, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *nodeServiceClient) GetPeerInfo(ctx context.Context, in *GetPeerInfoRequest, opts ...grpc.CallOption) (*PeerInfoResponse, error) { | ||||||
|  | 	out := new(PeerInfoResponse) | ||||||
|  | 	err := c.cc.Invoke(ctx, NodeService_GetPeerInfo_FullMethodName, in, out, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *nodeServiceClient) GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error) { | ||||||
|  | 	out := new(NetworkInfoResponse) | ||||||
|  | 	err := c.cc.Invoke(ctx, NodeService_GetNetworkInfo_FullMethodName, in, out, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NodeServiceServer is the server API for NodeService service.
 | ||||||
|  | // All implementations must embed UnimplementedNodeServiceServer
 | ||||||
|  | // for forward compatibility
 | ||||||
|  | type NodeServiceServer interface { | ||||||
|  | 	GetFrames(context.Context, *GetFramesRequest) (*FramesResponse, error) | ||||||
|  | 	GetFrameInfo(context.Context, *GetFrameInfoRequest) (*FrameInfoResponse, error) | ||||||
|  | 	GetPeerInfo(context.Context, *GetPeerInfoRequest) (*PeerInfoResponse, error) | ||||||
|  | 	GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*NetworkInfoResponse, error) | ||||||
|  | 	mustEmbedUnimplementedNodeServiceServer() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // UnimplementedNodeServiceServer must be embedded to have forward compatible implementations.
 | ||||||
|  | type UnimplementedNodeServiceServer struct { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (UnimplementedNodeServiceServer) GetFrames(context.Context, *GetFramesRequest) (*FramesResponse, error) { | ||||||
|  | 	return nil, status.Errorf(codes.Unimplemented, "method GetFrames not implemented") | ||||||
|  | } | ||||||
|  | func (UnimplementedNodeServiceServer) GetFrameInfo(context.Context, *GetFrameInfoRequest) (*FrameInfoResponse, error) { | ||||||
|  | 	return nil, status.Errorf(codes.Unimplemented, "method GetFrameInfo not implemented") | ||||||
|  | } | ||||||
|  | func (UnimplementedNodeServiceServer) GetPeerInfo(context.Context, *GetPeerInfoRequest) (*PeerInfoResponse, error) { | ||||||
|  | 	return nil, status.Errorf(codes.Unimplemented, "method GetPeerInfo not implemented") | ||||||
|  | } | ||||||
|  | func (UnimplementedNodeServiceServer) GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*NetworkInfoResponse, error) { | ||||||
|  | 	return nil, status.Errorf(codes.Unimplemented, "method GetNetworkInfo not implemented") | ||||||
|  | } | ||||||
|  | func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} | ||||||
|  | 
 | ||||||
|  | // UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service.
 | ||||||
|  | // Use of this interface is not recommended, as added methods to NodeServiceServer will
 | ||||||
|  | // result in compilation errors.
 | ||||||
|  | type UnsafeNodeServiceServer interface { | ||||||
|  | 	mustEmbedUnimplementedNodeServiceServer() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func RegisterNodeServiceServer(s grpc.ServiceRegistrar, srv NodeServiceServer) { | ||||||
|  | 	s.RegisterService(&NodeService_ServiceDesc, srv) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _NodeService_GetFrames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { | ||||||
|  | 	in := new(GetFramesRequest) | ||||||
|  | 	if err := dec(in); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	if interceptor == nil { | ||||||
|  | 		return srv.(NodeServiceServer).GetFrames(ctx, in) | ||||||
|  | 	} | ||||||
|  | 	info := &grpc.UnaryServerInfo{ | ||||||
|  | 		Server:     srv, | ||||||
|  | 		FullMethod: NodeService_GetFrames_FullMethodName, | ||||||
|  | 	} | ||||||
|  | 	handler := func(ctx context.Context, req interface{}) (interface{}, error) { | ||||||
|  | 		return srv.(NodeServiceServer).GetFrames(ctx, req.(*GetFramesRequest)) | ||||||
|  | 	} | ||||||
|  | 	return interceptor(ctx, in, info, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _NodeService_GetFrameInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { | ||||||
|  | 	in := new(GetFrameInfoRequest) | ||||||
|  | 	if err := dec(in); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	if interceptor == nil { | ||||||
|  | 		return srv.(NodeServiceServer).GetFrameInfo(ctx, in) | ||||||
|  | 	} | ||||||
|  | 	info := &grpc.UnaryServerInfo{ | ||||||
|  | 		Server:     srv, | ||||||
|  | 		FullMethod: NodeService_GetFrameInfo_FullMethodName, | ||||||
|  | 	} | ||||||
|  | 	handler := func(ctx context.Context, req interface{}) (interface{}, error) { | ||||||
|  | 		return srv.(NodeServiceServer).GetFrameInfo(ctx, req.(*GetFrameInfoRequest)) | ||||||
|  | 	} | ||||||
|  | 	return interceptor(ctx, in, info, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _NodeService_GetPeerInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { | ||||||
|  | 	in := new(GetPeerInfoRequest) | ||||||
|  | 	if err := dec(in); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	if interceptor == nil { | ||||||
|  | 		return srv.(NodeServiceServer).GetPeerInfo(ctx, in) | ||||||
|  | 	} | ||||||
|  | 	info := &grpc.UnaryServerInfo{ | ||||||
|  | 		Server:     srv, | ||||||
|  | 		FullMethod: NodeService_GetPeerInfo_FullMethodName, | ||||||
|  | 	} | ||||||
|  | 	handler := func(ctx context.Context, req interface{}) (interface{}, error) { | ||||||
|  | 		return srv.(NodeServiceServer).GetPeerInfo(ctx, req.(*GetPeerInfoRequest)) | ||||||
|  | 	} | ||||||
|  | 	return interceptor(ctx, in, info, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _NodeService_GetNetworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { | ||||||
|  | 	in := new(GetNetworkInfoRequest) | ||||||
|  | 	if err := dec(in); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	if interceptor == nil { | ||||||
|  | 		return srv.(NodeServiceServer).GetNetworkInfo(ctx, in) | ||||||
|  | 	} | ||||||
|  | 	info := &grpc.UnaryServerInfo{ | ||||||
|  | 		Server:     srv, | ||||||
|  | 		FullMethod: NodeService_GetNetworkInfo_FullMethodName, | ||||||
|  | 	} | ||||||
|  | 	handler := func(ctx context.Context, req interface{}) (interface{}, error) { | ||||||
|  | 		return srv.(NodeServiceServer).GetNetworkInfo(ctx, req.(*GetNetworkInfoRequest)) | ||||||
|  | 	} | ||||||
|  | 	return interceptor(ctx, in, info, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service.
 | ||||||
|  | // It's only intended for direct use with grpc.RegisterService,
 | ||||||
|  | // and not to be introspected or modified (even as a copy)
 | ||||||
|  | var NodeService_ServiceDesc = grpc.ServiceDesc{ | ||||||
|  | 	ServiceName: "quilibrium.node.node.pb.NodeService", | ||||||
|  | 	HandlerType: (*NodeServiceServer)(nil), | ||||||
|  | 	Methods: []grpc.MethodDesc{ | ||||||
|  | 		{ | ||||||
|  | 			MethodName: "GetFrames", | ||||||
|  | 			Handler:    _NodeService_GetFrames_Handler, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			MethodName: "GetFrameInfo", | ||||||
|  | 			Handler:    _NodeService_GetFrameInfo_Handler, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			MethodName: "GetPeerInfo", | ||||||
|  | 			Handler:    _NodeService_GetPeerInfo_Handler, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			MethodName: "GetNetworkInfo", | ||||||
|  | 			Handler:    _NodeService_GetNetworkInfo_Handler, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	Streams:  []grpc.StreamDesc{}, | ||||||
|  | 	Metadata: "node.proto", | ||||||
|  | } | ||||||
							
								
								
									
										296
									
								
								node/rpc/rpc_server.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										296
									
								
								node/rpc/rpc_server.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,296 @@ | |||||||
|  | package rpc | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"context" | ||||||
|  | 	"net/http" | ||||||
|  | 
 | ||||||
|  | 	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime" | ||||||
|  | 	"github.com/multiformats/go-multiaddr" | ||||||
|  | 	mn "github.com/multiformats/go-multiaddr/net" | ||||||
|  | 	"github.com/pkg/errors" | ||||||
|  | 	"go.uber.org/zap" | ||||||
|  | 	"google.golang.org/grpc" | ||||||
|  | 	"google.golang.org/grpc/credentials/insecure" | ||||||
|  | 	"google.golang.org/grpc/reflection" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/execution" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/p2p" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/protobufs" | ||||||
|  | 	"source.quilibrium.com/quilibrium/monorepo/node/store" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type RPCServer struct { | ||||||
|  | 	protobufs.UnimplementedNodeServiceServer | ||||||
|  | 	listenAddrGRPC   string | ||||||
|  | 	listenAddrHTTP   string | ||||||
|  | 	logger           *zap.Logger | ||||||
|  | 	clockStore       store.ClockStore | ||||||
|  | 	pubSub           p2p.PubSub | ||||||
|  | 	executionEngines []execution.ExecutionEngine | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetFrameInfo implements protobufs.NodeServiceServer.
 | ||||||
|  | func (r *RPCServer) GetFrameInfo( | ||||||
|  | 	ctx context.Context, | ||||||
|  | 	req *protobufs.GetFrameInfoRequest, | ||||||
|  | ) (*protobufs.FrameInfoResponse, error) { | ||||||
|  | 	if bytes.Equal(req.Filter, p2p.BITMASK_ALL) { | ||||||
|  | 		frame, err := r.clockStore.GetMasterClockFrame( | ||||||
|  | 			req.Filter, | ||||||
|  | 			req.FrameNumber, | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frame info") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return &protobufs.FrameInfoResponse{ | ||||||
|  | 			ClockFrame: frame, | ||||||
|  | 		}, nil | ||||||
|  | 	} else if req.Selector == nil { | ||||||
|  | 		frame, _, err := r.clockStore.GetDataClockFrame( | ||||||
|  | 			req.Filter, | ||||||
|  | 			req.FrameNumber, | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frame info") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return &protobufs.FrameInfoResponse{ | ||||||
|  | 			ClockFrame: frame, | ||||||
|  | 		}, nil | ||||||
|  | 	} else { | ||||||
|  | 		frames, err := r.clockStore.GetCandidateDataClockFrames( | ||||||
|  | 			req.Filter, | ||||||
|  | 			req.FrameNumber, | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frame info") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		for _, frame := range frames { | ||||||
|  | 			selector, err := frame.GetSelector() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, errors.Wrap(err, "get frame info") | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if bytes.Equal(selector.Bytes(), req.Selector) { | ||||||
|  | 				return &protobufs.FrameInfoResponse{ | ||||||
|  | 					ClockFrame: frame, | ||||||
|  | 				}, nil | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return nil, errors.Wrap(errors.New("not found"), "get frame info") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetFrames implements protobufs.NodeServiceServer.
 | ||||||
|  | func (r *RPCServer) GetFrames( | ||||||
|  | 	ctx context.Context, | ||||||
|  | 	req *protobufs.GetFramesRequest, | ||||||
|  | ) (*protobufs.FramesResponse, error) { | ||||||
|  | 	if bytes.Equal(req.Filter, p2p.BITMASK_ALL) { | ||||||
|  | 		iter, err := r.clockStore.RangeMasterClockFrames( | ||||||
|  | 			req.Filter, | ||||||
|  | 			req.FromFrameNumber, | ||||||
|  | 			req.ToFrameNumber, | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frames") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		frames := []*protobufs.ClockFrame{} | ||||||
|  | 		for iter.First(); iter.Valid(); iter.Next() { | ||||||
|  | 			frame, err := iter.Value() | ||||||
|  | 			if err != nil { | ||||||
|  | 				iter.Close() | ||||||
|  | 				return nil, errors.Wrap(err, "get frames") | ||||||
|  | 			} | ||||||
|  | 			frames = append(frames, frame) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if err := iter.Close(); err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frames") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return &protobufs.FramesResponse{ | ||||||
|  | 			TruncatedClockFrames: frames, | ||||||
|  | 		}, nil | ||||||
|  | 	} else { | ||||||
|  | 		iter, err := r.clockStore.RangeDataClockFrames( | ||||||
|  | 			req.Filter, | ||||||
|  | 			req.FromFrameNumber, | ||||||
|  | 			req.ToFrameNumber, | ||||||
|  | 		) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frame info") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		frames := []*protobufs.ClockFrame{} | ||||||
|  | 		for iter.First(); iter.Valid(); iter.Next() { | ||||||
|  | 			frame, err := iter.TruncatedValue() | ||||||
|  | 			if err != nil { | ||||||
|  | 				iter.Close() | ||||||
|  | 				return nil, errors.Wrap(err, "get frames") | ||||||
|  | 			} | ||||||
|  | 			frames = append(frames, frame) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if err := iter.Close(); err != nil { | ||||||
|  | 			return nil, errors.Wrap(err, "get frames") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if req.IncludeCandidates { | ||||||
|  | 			from := req.FromFrameNumber | ||||||
|  | 			if len(frames) > 0 { | ||||||
|  | 				from = frames[len(frames)-1].FrameNumber + 1 | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			for from < req.ToFrameNumber { | ||||||
|  | 				iter, err := r.clockStore.RangeCandidateDataClockFrames( | ||||||
|  | 					req.Filter, | ||||||
|  | 					[]byte{ | ||||||
|  | 						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 					}, | ||||||
|  | 					from, | ||||||
|  | 				) | ||||||
|  | 				if err != nil { | ||||||
|  | 					return nil, errors.Wrap(err, "get frames") | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				for iter.First(); iter.Valid(); iter.Next() { | ||||||
|  | 					frame, err := iter.TruncatedValue() | ||||||
|  | 					if err != nil { | ||||||
|  | 						iter.Close() | ||||||
|  | 						return nil, errors.Wrap(err, "get frames") | ||||||
|  | 					} | ||||||
|  | 					frames = append(frames, frame) | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				if err := iter.Close(); err != nil { | ||||||
|  | 					return nil, errors.Wrap(err, "get frames") | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				from++ | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return &protobufs.FramesResponse{ | ||||||
|  | 			TruncatedClockFrames: frames, | ||||||
|  | 		}, nil | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetNetworkInfo implements protobufs.NodeServiceServer.
 | ||||||
|  | func (r *RPCServer) GetNetworkInfo( | ||||||
|  | 	ctx context.Context, | ||||||
|  | 	req *protobufs.GetNetworkInfoRequest, | ||||||
|  | ) (*protobufs.NetworkInfoResponse, error) { | ||||||
|  | 	return r.pubSub.GetNetworkInfo(), nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetPeerInfo implements protobufs.NodeServiceServer.
 | ||||||
|  | func (r *RPCServer) GetPeerInfo( | ||||||
|  | 	ctx context.Context, | ||||||
|  | 	req *protobufs.GetPeerInfoRequest, | ||||||
|  | ) (*protobufs.PeerInfoResponse, error) { | ||||||
|  | 	resp := &protobufs.PeerInfoResponse{} | ||||||
|  | 	for _, e := range r.executionEngines { | ||||||
|  | 		r := e.GetPeerInfo() | ||||||
|  | 		resp.PeerInfo = append(resp.PeerInfo, r.PeerInfo...) | ||||||
|  | 		resp.UncooperativePeerInfo = append( | ||||||
|  | 			resp.UncooperativePeerInfo, | ||||||
|  | 			r.UncooperativePeerInfo..., | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | 	return resp, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func NewRPCServer( | ||||||
|  | 	listenAddrGRPC string, | ||||||
|  | 	listenAddrHTTP string, | ||||||
|  | 	logger *zap.Logger, | ||||||
|  | 	clockStore store.ClockStore, | ||||||
|  | 	pubSub p2p.PubSub, | ||||||
|  | 	executionEngines []execution.ExecutionEngine, | ||||||
|  | ) (*RPCServer, error) { | ||||||
|  | 	return &RPCServer{ | ||||||
|  | 		listenAddrGRPC:   listenAddrGRPC, | ||||||
|  | 		listenAddrHTTP:   listenAddrHTTP, | ||||||
|  | 		logger:           logger, | ||||||
|  | 		clockStore:       clockStore, | ||||||
|  | 		pubSub:           pubSub, | ||||||
|  | 		executionEngines: executionEngines, | ||||||
|  | 	}, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *RPCServer) Start() error { | ||||||
|  | 	s := grpc.NewServer( | ||||||
|  | 		grpc.MaxRecvMsgSize(400*1024*1024), | ||||||
|  | 		grpc.MaxSendMsgSize(400*1024*1024), | ||||||
|  | 	) | ||||||
|  | 	protobufs.RegisterNodeServiceServer(s, r) | ||||||
|  | 	reflection.Register(s) | ||||||
|  | 
 | ||||||
|  | 	mg, err := multiaddr.NewMultiaddr(r.listenAddrGRPC) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return errors.Wrap(err, "start") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	lis, err := mn.Listen(mg) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return errors.Wrap(err, "start") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	go func() { | ||||||
|  | 		if err := s.Serve(mn.NetListener(lis)); err != nil { | ||||||
|  | 			panic(err) | ||||||
|  | 		} | ||||||
|  | 	}() | ||||||
|  | 
 | ||||||
|  | 	if r.listenAddrHTTP != "" { | ||||||
|  | 		m, err := multiaddr.NewMultiaddr(r.listenAddrHTTP) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return errors.Wrap(err, "start") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		ma, err := mn.ToNetAddr(m) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return errors.Wrap(err, "start") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		mga, err := mn.ToNetAddr(mg) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return errors.Wrap(err, "start") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		go func() { | ||||||
|  | 			mux := runtime.NewServeMux() | ||||||
|  | 			opts := []grpc.DialOption{ | ||||||
|  | 				grpc.WithTransportCredentials(insecure.NewCredentials()), | ||||||
|  | 				grpc.WithDefaultCallOptions( | ||||||
|  | 					grpc.MaxCallRecvMsgSize(400*1024*1024), | ||||||
|  | 					grpc.MaxCallSendMsgSize(400*1024*1024), | ||||||
|  | 				), | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if err := protobufs.RegisterNodeServiceHandlerFromEndpoint( | ||||||
|  | 				context.Background(), | ||||||
|  | 				mux, | ||||||
|  | 				mga.String(), | ||||||
|  | 				opts, | ||||||
|  | 			); err != nil { | ||||||
|  | 				panic(err) | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if err := http.ListenAndServe(ma.String(), mux); err != nil { | ||||||
|  | 				panic(err) | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
| @ -1,6 +1,7 @@ | |||||||
| package store | package store | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"encoding/binary" | 	"encoding/binary" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 | 
 | ||||||
| @ -187,6 +188,26 @@ func (p *PebbleClockIterator) Valid() bool { | |||||||
| 	return p.i.Valid() | 	return p.i.Valid() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (p *PebbleClockIterator) TruncatedValue() ( | ||||||
|  | 	*protobufs.ClockFrame, | ||||||
|  | 	error, | ||||||
|  | ) { | ||||||
|  | 	if !p.i.Valid() { | ||||||
|  | 		return nil, ErrNotFound | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	value := p.i.Value() | ||||||
|  | 	frame := &protobufs.ClockFrame{} | ||||||
|  | 	if err := proto.Unmarshal(value, frame); err != nil { | ||||||
|  | 		return nil, errors.Wrap( | ||||||
|  | 			errors.Wrap(err, ErrInvalidData.Error()), | ||||||
|  | 			"get candidate clock frame iterator value", | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return frame, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (p *PebbleClockIterator) Value() (*protobufs.ClockFrame, error) { | func (p *PebbleClockIterator) Value() (*protobufs.ClockFrame, error) { | ||||||
| 	if !p.i.Valid() { | 	if !p.i.Valid() { | ||||||
| 		return nil, ErrNotFound | 		return nil, ErrNotFound | ||||||
| @ -227,6 +248,26 @@ func (p *PebbleCandidateClockIterator) Valid() bool { | |||||||
| 	return p.i.Valid() | 	return p.i.Valid() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (p *PebbleCandidateClockIterator) TruncatedValue() ( | ||||||
|  | 	*protobufs.ClockFrame, | ||||||
|  | 	error, | ||||||
|  | ) { | ||||||
|  | 	if !p.i.Valid() { | ||||||
|  | 		return nil, ErrNotFound | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	value := p.i.Value() | ||||||
|  | 	frame := &protobufs.ClockFrame{} | ||||||
|  | 	if err := proto.Unmarshal(value, frame); err != nil { | ||||||
|  | 		return nil, errors.Wrap( | ||||||
|  | 			errors.Wrap(err, ErrInvalidData.Error()), | ||||||
|  | 			"get candidate clock frame iterator value", | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return frame, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (p *PebbleCandidateClockIterator) Value() (*protobufs.ClockFrame, error) { | func (p *PebbleCandidateClockIterator) Value() (*protobufs.ClockFrame, error) { | ||||||
| 	if !p.i.Valid() { | 	if !p.i.Valid() { | ||||||
| 		return nil, ErrNotFound | 		return nil, ErrNotFound | ||||||
| @ -1008,11 +1049,27 @@ func (p *PebbleClockStore) RangeCandidateDataClockFrames( | |||||||
| 	parent []byte, | 	parent []byte, | ||||||
| 	frameNumber uint64, | 	frameNumber uint64, | ||||||
| ) (*PebbleCandidateClockIterator, error) { | ) (*PebbleCandidateClockIterator, error) { | ||||||
|  | 	fromParent := rightAlign(parent, 32) | ||||||
|  | 	toParent := rightAlign(parent, 32) | ||||||
|  | 
 | ||||||
|  | 	if bytes.Equal(parent, []byte{ | ||||||
|  | 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	}) { | ||||||
|  | 		toParent = []byte{ | ||||||
|  | 			0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
|  | 			0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
|  | 			0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
|  | 			0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	iter := p.db.NewIter(&pebble.IterOptions{ | 	iter := p.db.NewIter(&pebble.IterOptions{ | ||||||
| 		LowerBound: clockDataCandidateFrameKey( | 		LowerBound: clockDataCandidateFrameKey( | ||||||
| 			filter, | 			filter, | ||||||
| 			frameNumber, | 			frameNumber, | ||||||
| 			rightAlign(parent, 32), | 			fromParent, | ||||||
| 			[]byte{ | 			[]byte{ | ||||||
| 				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
| 				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
| @ -1023,7 +1080,7 @@ func (p *PebbleClockStore) RangeCandidateDataClockFrames( | |||||||
| 		UpperBound: clockDataCandidateFrameKey( | 		UpperBound: clockDataCandidateFrameKey( | ||||||
| 			filter, | 			filter, | ||||||
| 			frameNumber, | 			frameNumber, | ||||||
| 			rightAlign(parent, 32), | 			toParent, | ||||||
| 			[]byte{ | 			[]byte{ | ||||||
| 				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
| 				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Cassandra Heart
						Cassandra Heart