mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-04 01:54:28 +00:00
47df98a499
log.Warn/Error uses "err" key to log errors in most places. This renames "error" to "err" in some places to adhere to this convention.
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/ledgerwatch/erigon-lib/gointerfaces"
|
|
"github.com/ledgerwatch/erigon-lib/gointerfaces/txpool"
|
|
"github.com/ledgerwatch/erigon/ethdb/privateapi"
|
|
"github.com/ledgerwatch/log/v3"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/protobuf/types/known/emptypb"
|
|
)
|
|
|
|
type MiningService struct {
|
|
txpool.MiningClient
|
|
log log.Logger
|
|
version gointerfaces.Version
|
|
}
|
|
|
|
func NewMiningService(client txpool.MiningClient) *MiningService {
|
|
return &MiningService{
|
|
MiningClient: client,
|
|
version: gointerfaces.VersionFromProto(privateapi.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", "err", 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
|
|
}
|