cranberry

Форк
0
/
peer_service.go 
37 строк · 886.0 Байт
1
package services
2

3
import (
4
	"context"
5

6
	gossip "gitverse.ru/IvanTimofeev/cranberry/internal/gossip"
7
	pbapi "gitverse.ru/IvanTimofeev/cranberry/pkg/grpc"
8
	grpc "google.golang.org/grpc"
9
	"google.golang.org/grpc/credentials/insecure"
10
)
11

12
type PeerService struct {
13
	peers []*gossip.PeerClient
14
}
15

16
func NewPeerService(peers []string) *PeerService {
17
	ps := &PeerService{
18
		peers: []*gossip.PeerClient{},
19
	}
20
	for _, addr := range peers {
21
		conn, err := grpc.NewClient(addr,
22
			grpc.WithTransportCredentials(insecure.NewCredentials()))
23
		if err != nil {
24
			return nil
25
		}
26
		defer conn.Close()
27
		client := pbapi.NewGossipServiceClient(conn)
28
		stream, _ := client.SendBlock(context.Background())
29
		peerClient, _ := gossip.NewPeerClient(stream, nil)
30
		ps.AddPeer(peerClient)
31
	}
32
	return ps
33
}
34

35
func (ps *PeerService) AddPeer(peerClient *gossip.PeerClient) {
36
	ps.peers = append(ps.peers, peerClient)
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.