cranberry
1package services2
3import (4"context"5
6gossip "gitverse.ru/IvanTimofeev/cranberry/internal/gossip"7pbapi "gitverse.ru/IvanTimofeev/cranberry/pkg/grpc"8grpc "google.golang.org/grpc"9"google.golang.org/grpc/credentials/insecure"10)
11
12type PeerService struct {13peers []*gossip.PeerClient14}
15
16func NewPeerService(peers []string) *PeerService {17ps := &PeerService{18peers: []*gossip.PeerClient{},19}20for _, addr := range peers {21conn, err := grpc.NewClient(addr,22grpc.WithTransportCredentials(insecure.NewCredentials()))23if err != nil {24return nil25}26defer conn.Close()27client := pbapi.NewGossipServiceClient(conn)28stream, _ := client.SendBlock(context.Background())29peerClient, _ := gossip.NewPeerClient(stream, nil)30ps.AddPeer(peerClient)31}32return ps33}
34
35func (ps *PeerService) AddPeer(peerClient *gossip.PeerClient) {36ps.peers = append(ps.peers, peerClient)37}
38