forked from TrueCloudLab/frostfs-api-go
[#265] v2/reputation: Support PeerToPeerTrust message
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
771f395d9d
commit
269288119d
10 changed files with 172 additions and 6 deletions
|
@ -81,6 +81,61 @@ func (x *Trust) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToGRPCMessage converts PeerToPeerTrust to gRPC-generated
|
||||||
|
// reputation.PeerToPeerTrust message.
|
||||||
|
func (x *PeerToPeerTrust) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *reputation.PeerToPeerTrust
|
||||||
|
|
||||||
|
if x != nil {
|
||||||
|
m = new(reputation.PeerToPeerTrust)
|
||||||
|
|
||||||
|
m.SetTrustingPeer(x.trusting.ToGRPCMessage().(*reputation.PeerID))
|
||||||
|
m.SetTrust(x.trust.ToGRPCMessage().(*reputation.Trust))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromGRPCMessage tries to restore PeerToPeerTrust from grpc.Message.
|
||||||
|
//
|
||||||
|
// Returns message.ErrUnexpectedMessageType if m is not
|
||||||
|
// a gRPC-generated reputation.PeerToPeerTrust message.
|
||||||
|
func (x *PeerToPeerTrust) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*reputation.PeerToPeerTrust)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
trusting := v.GetTrustingPeer()
|
||||||
|
if trusting == nil {
|
||||||
|
x.trusting = nil
|
||||||
|
} else {
|
||||||
|
if x.trusting == nil {
|
||||||
|
x.trusting = new(PeerID)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = x.trusting.FromGRPCMessage(trusting)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trust := v.GetTrust()
|
||||||
|
if trust == nil {
|
||||||
|
x.trust = nil
|
||||||
|
} else {
|
||||||
|
if x.trust == nil {
|
||||||
|
x.trust = new(Trust)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = x.trust.FromGRPCMessage(trust)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// TrustsToGRPC converts slice of Trust structures
|
// TrustsToGRPC converts slice of Trust structures
|
||||||
// to slice of gRPC-generated Trust messages.
|
// to slice of gRPC-generated Trust messages.
|
||||||
func TrustsToGRPC(xs []*Trust) (res []*reputation.Trust) {
|
func TrustsToGRPC(xs []*Trust) (res []*reputation.Trust) {
|
||||||
|
@ -404,7 +459,7 @@ func (x *SendIntermediateResultRequestBody) ToGRPCMessage() grpc.Message {
|
||||||
m = new(reputation.SendIntermediateResultRequest_Body)
|
m = new(reputation.SendIntermediateResultRequest_Body)
|
||||||
|
|
||||||
m.SetIteration(x.iter)
|
m.SetIteration(x.iter)
|
||||||
m.SetTrust(x.trust.ToGRPCMessage().(*reputation.Trust))
|
m.SetTrust(x.trust.ToGRPCMessage().(*reputation.PeerToPeerTrust))
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
|
|
@ -68,7 +68,7 @@ func (x *SendIntermediateResultRequest_Body) SetIteration(v uint32) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetTrust sets current global trust value.
|
// SetTrust sets current global trust value.
|
||||||
func (x *SendIntermediateResultRequest_Body) SetTrust(v *Trust) {
|
func (x *SendIntermediateResultRequest_Body) SetTrust(v *PeerToPeerTrust) {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
x.Trust = v
|
x.Trust = v
|
||||||
}
|
}
|
||||||
|
|
BIN
v2/reputation/grpc/service.pb.go
generated
BIN
v2/reputation/grpc/service.pb.go
generated
Binary file not shown.
|
@ -25,6 +25,20 @@ func (x *Trust) SetValue(v float64) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetTrustingPeer sets trusting peer ID.
|
||||||
|
func (x *PeerToPeerTrust) SetTrustingPeer(v *PeerID) {
|
||||||
|
if x != nil {
|
||||||
|
x.TrustingPeer = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTrust sets trust value of trusting peer to the trusted one.
|
||||||
|
func (x *PeerToPeerTrust) SetTrust(v *Trust) {
|
||||||
|
if x != nil {
|
||||||
|
x.Trust = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SetManager sets manager ID.
|
// SetManager sets manager ID.
|
||||||
func (x *GlobalTrust_Body) SetManager(v *PeerID) {
|
func (x *GlobalTrust_Body) SetManager(v *PeerID) {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
|
|
BIN
v2/reputation/grpc/types.pb.go
generated
BIN
v2/reputation/grpc/types.pb.go
generated
Binary file not shown.
|
@ -21,6 +21,14 @@ func (x *Trust) UnmarshalJSON(data []byte) error {
|
||||||
return message.UnmarshalJSON(x, data, new(reputation.Trust))
|
return message.UnmarshalJSON(x, data, new(reputation.Trust))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *PeerToPeerTrust) MarshalJSON() ([]byte, error) {
|
||||||
|
return message.MarshalJSON(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *PeerToPeerTrust) UnmarshalJSON(data []byte) error {
|
||||||
|
return message.UnmarshalJSON(x, data, new(reputation.PeerToPeerTrust))
|
||||||
|
}
|
||||||
|
|
||||||
func (x *GlobalTrust) MarshalJSON() ([]byte, error) {
|
func (x *GlobalTrust) MarshalJSON() ([]byte, error) {
|
||||||
return message.MarshalJSON(x)
|
return message.MarshalJSON(x)
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,45 @@ func (x *Trust) Unmarshal(data []byte) error {
|
||||||
return message.Unmarshal(x, data, new(reputation.Trust))
|
return message.Unmarshal(x, data, new(reputation.Trust))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_ = iota
|
||||||
|
p2pTrustTrustingFNum
|
||||||
|
p2pTrustValueFNum
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x *PeerToPeerTrust) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
if x == nil {
|
||||||
|
return []byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, x.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
offset, err := protoutil.NestedStructureMarshal(p2pTrustTrustingFNum, buf, x.trusting)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = protoutil.NestedStructureMarshal(p2pTrustValueFNum, buf[offset:], x.trust)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *PeerToPeerTrust) StableSize() (size int) {
|
||||||
|
size += protoutil.NestedStructureSize(p2pTrustTrustingFNum, x.trusting)
|
||||||
|
size += protoutil.NestedStructureSize(p2pTrustValueFNum, x.trust)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *PeerToPeerTrust) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(x, data, new(reputation.PeerToPeerTrust))
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_ = iota
|
_ = iota
|
||||||
globalTrustBodyManagerFNum
|
globalTrustBodyManagerFNum
|
||||||
|
|
|
@ -25,5 +25,6 @@ func TestMessageConvert(t *testing.T) {
|
||||||
func(empty bool) message.Message { return reputationtest.GenerateSendIntermediateResultResponse(empty) },
|
func(empty bool) message.Message { return reputationtest.GenerateSendIntermediateResultResponse(empty) },
|
||||||
func(empty bool) message.Message { return reputationtest.GenerateGlobalTrustBody(empty) },
|
func(empty bool) message.Message { return reputationtest.GenerateGlobalTrustBody(empty) },
|
||||||
func(empty bool) message.Message { return reputationtest.GenerateGlobalTrust(empty) },
|
func(empty bool) message.Message { return reputationtest.GenerateGlobalTrust(empty) },
|
||||||
|
func(empty bool) message.Message { return reputationtest.GeneratePeerToPeerTrust(empty) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,15 @@ func GenerateTrust(empty bool) *reputation.Trust {
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GeneratePeerToPeerTrust(empty bool) *reputation.PeerToPeerTrust {
|
||||||
|
m := new(reputation.PeerToPeerTrust)
|
||||||
|
|
||||||
|
m.SetTrustingPeer(GeneratePeerID(empty))
|
||||||
|
m.SetTrust(GenerateTrust(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
func GenerateGlobalTrustBody(empty bool) *reputation.GlobalTrustBody {
|
func GenerateGlobalTrustBody(empty bool) *reputation.GlobalTrustBody {
|
||||||
m := new(reputation.GlobalTrustBody)
|
m := new(reputation.GlobalTrustBody)
|
||||||
|
|
||||||
|
@ -103,7 +112,7 @@ func GenerateSendIntermediateResultRequestBody(empty bool) *reputation.SendInter
|
||||||
m.SetIteration(564)
|
m.SetIteration(564)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.SetTrust(GenerateTrust(empty))
|
m.SetTrust(GeneratePeerToPeerTrust(empty))
|
||||||
|
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,46 @@ func (x *Trust) SetValue(v float64) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PeerToPeerTrust represents reputation.PeerToPeerTrust message
|
||||||
|
// from NeoFS API v2.
|
||||||
|
type PeerToPeerTrust struct {
|
||||||
|
trusting *PeerID
|
||||||
|
|
||||||
|
trust *Trust
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTrustingPeer returns trusting peer ID.
|
||||||
|
func (x *PeerToPeerTrust) GetTrustingPeer() *PeerID {
|
||||||
|
if x != nil {
|
||||||
|
return x.trusting
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTrustingPeer sets trusting peer ID.
|
||||||
|
func (x *PeerToPeerTrust) SetTrustingPeer(v *PeerID) {
|
||||||
|
if x != nil {
|
||||||
|
x.trusting = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTrust returns trust value of trusting peer to the trusted one.
|
||||||
|
func (x *PeerToPeerTrust) GetTrust() *Trust {
|
||||||
|
if x != nil {
|
||||||
|
return x.trust
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTrust sets trust value of trusting peer to the trusted one.
|
||||||
|
func (x *PeerToPeerTrust) SetTrust(v *Trust) {
|
||||||
|
if x != nil {
|
||||||
|
x.trust = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// GlobalTrustBody represents reputation.GlobalTrust.Body message
|
// GlobalTrustBody represents reputation.GlobalTrust.Body message
|
||||||
// from NeoFS API v2.
|
// from NeoFS API v2.
|
||||||
type GlobalTrustBody struct {
|
type GlobalTrustBody struct {
|
||||||
|
@ -259,7 +299,7 @@ func (x *SendLocalTrustResponse) SetBody(v *SendLocalTrustResponseBody) {
|
||||||
type SendIntermediateResultRequestBody struct {
|
type SendIntermediateResultRequestBody struct {
|
||||||
iter uint32
|
iter uint32
|
||||||
|
|
||||||
trust *Trust
|
trust *PeerToPeerTrust
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetIteration returns sequence number of the iteration.
|
// GetIteration returns sequence number of the iteration.
|
||||||
|
@ -279,7 +319,7 @@ func (x *SendIntermediateResultRequestBody) SetIteration(v uint32) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTrust returns current global trust value.
|
// GetTrust returns current global trust value.
|
||||||
func (x *SendIntermediateResultRequestBody) GetTrust() *Trust {
|
func (x *SendIntermediateResultRequestBody) GetTrust() *PeerToPeerTrust {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.trust
|
return x.trust
|
||||||
}
|
}
|
||||||
|
@ -288,7 +328,7 @@ func (x *SendIntermediateResultRequestBody) GetTrust() *Trust {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetTrust sets current global trust value.
|
// SetTrust sets current global trust value.
|
||||||
func (x *SendIntermediateResultRequestBody) SetTrust(v *Trust) {
|
func (x *SendIntermediateResultRequestBody) SetTrust(v *PeerToPeerTrust) {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
x.trust = v
|
x.trust = v
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue