mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-28 14:47:16 +00:00
14c15cba43
* save * save * Squashed 'interfaces/' content from commit 08c32a09e git-subtree-dir: interfaces git-subtree-split: 08c32a09e40b1e6fcb5922e723191c9477545356 * Revert "Squashed 'interfaces/' content from commit 08c32a09e" This reverts commit 8393d9fd * save * seve * Squashed 'interfaces/' content from commit dd6a42724 git-subtree-dir: interfaces git-subtree-split: dd6a42724401f34c21662ca1aa1718effb92320d * ensure versions compatibility of all remote services * Revert "Squashed 'interfaces/' content from commit dd6a42724" This reverts commit 2a764bf9 * Squashed 'interfaces/' content from commit dd6a42724 git-subtree-dir: interfaces git-subtree-split: dd6a42724401f34c21662ca1aa1718effb92320d * Revert "Squashed 'interfaces/' content from commit dd6a42724" This reverts commit 52621846 * Squashed 'interfaces/' content from commit dd6a42724 git-subtree-dir: interfaces git-subtree-split: dd6a42724401f34c21662ca1aa1718effb92320d * a * a * a * a * a Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/ledgerwatch/erigon/ethdb/remote/remotedbserver"
|
|
"github.com/ledgerwatch/erigon/gointerfaces"
|
|
"github.com/ledgerwatch/erigon/gointerfaces/txpool"
|
|
"github.com/ledgerwatch/erigon/log"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/protobuf/types/known/emptypb"
|
|
)
|
|
|
|
type MiningService struct {
|
|
txpool.MiningClient
|
|
log log.Logger
|
|
version gointerfaces.Version
|
|
}
|
|
|
|
func NewMiningService(cc grpc.ClientConnInterface) *MiningService {
|
|
return &MiningService{
|
|
MiningClient: txpool.NewMiningClient(cc),
|
|
version: gointerfaces.VersionFromProto(remotedbserver.MiningAPIVersion),
|
|
log: log.New("remote_service", "mining"),
|
|
}
|
|
}
|
|
|
|
func (s *MiningService) EnsureVersionCompatibility() bool {
|
|
versionReply, err := s.Version(context.Background(), &emptypb.Empty{}, grpc.WaitForReady(true))
|
|
if err != nil {
|
|
s.log.Error("getting Version", "error", err)
|
|
return false
|
|
}
|
|
if !gointerfaces.EnsureVersion(s.version, versionReply) {
|
|
s.log.Error("incompatible interface versions", "client", s.version.String(),
|
|
"server", fmt.Sprintf("%d.%d.%d", versionReply.Major, versionReply.Minor, versionReply.Patch))
|
|
return false
|
|
}
|
|
s.log.Info("interfaces compatible", "client", s.version.String(),
|
|
"server", fmt.Sprintf("%d.%d.%d", versionReply.Major, versionReply.Minor, versionReply.Patch))
|
|
return true
|
|
}
|