github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/reputation/convert.go (about)

     1  package reputation
     2  
     3  import (
     4  	"github.com/TrueCloudLab/frostfs-api-go/v2/refs"
     5  	refsGRPC "github.com/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
     6  	reputation "github.com/TrueCloudLab/frostfs-api-go/v2/reputation/grpc"
     7  	"github.com/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
     8  	"github.com/TrueCloudLab/frostfs-api-go/v2/rpc/message"
     9  )
    10  
    11  // ToGRPCMessage converts PeerID to gRPC-generated
    12  // reputation.PeerID message.
    13  func (x *PeerID) ToGRPCMessage() grpc.Message {
    14  	var m *reputation.PeerID
    15  
    16  	if x != nil {
    17  		m = new(reputation.PeerID)
    18  
    19  		m.SetPublicKey(x.publicKey)
    20  	}
    21  
    22  	return m
    23  }
    24  
    25  // FromGRPCMessage tries to restore PeerID from grpc.Message.
    26  //
    27  // Returns message.ErrUnexpectedMessageType if m is not
    28  // a gRPC-generated reputation.PeerID message.
    29  func (x *PeerID) FromGRPCMessage(m grpc.Message) error {
    30  	v, ok := m.(*reputation.PeerID)
    31  	if !ok {
    32  		return message.NewUnexpectedMessageType(m, v)
    33  	}
    34  
    35  	x.publicKey = v.GetPublicKey()
    36  
    37  	return nil
    38  }
    39  
    40  // ToGRPCMessage converts Trust to gRPC-generated
    41  // reputation.Trust message.
    42  func (x *Trust) ToGRPCMessage() grpc.Message {
    43  	var m *reputation.Trust
    44  
    45  	if x != nil {
    46  		m = new(reputation.Trust)
    47  
    48  		m.SetValue(x.val)
    49  		m.SetPeer(x.peer.ToGRPCMessage().(*reputation.PeerID))
    50  	}
    51  
    52  	return m
    53  }
    54  
    55  // FromGRPCMessage tries to restore Trust from grpc.Message.
    56  //
    57  // Returns message.ErrUnexpectedMessageType if m is not
    58  // a gRPC-generated reputation.Trust message.
    59  func (x *Trust) FromGRPCMessage(m grpc.Message) error {
    60  	v, ok := m.(*reputation.Trust)
    61  	if !ok {
    62  		return message.NewUnexpectedMessageType(m, v)
    63  	}
    64  
    65  	peer := v.GetPeer()
    66  	if peer == nil {
    67  		x.peer = nil
    68  	} else {
    69  		if x.peer == nil {
    70  			x.peer = new(PeerID)
    71  		}
    72  
    73  		err := x.peer.FromGRPCMessage(peer)
    74  		if err != nil {
    75  			return err
    76  		}
    77  	}
    78  
    79  	x.val = v.GetValue()
    80  
    81  	return nil
    82  }
    83  
    84  // ToGRPCMessage converts PeerToPeerTrust to gRPC-generated
    85  // reputation.PeerToPeerTrust message.
    86  func (x *PeerToPeerTrust) ToGRPCMessage() grpc.Message {
    87  	var m *reputation.PeerToPeerTrust
    88  
    89  	if x != nil {
    90  		m = new(reputation.PeerToPeerTrust)
    91  
    92  		m.SetTrustingPeer(x.trusting.ToGRPCMessage().(*reputation.PeerID))
    93  		m.SetTrust(x.trust.ToGRPCMessage().(*reputation.Trust))
    94  	}
    95  
    96  	return m
    97  }
    98  
    99  // FromGRPCMessage tries to restore PeerToPeerTrust from grpc.Message.
   100  //
   101  // Returns message.ErrUnexpectedMessageType if m is not
   102  // a gRPC-generated reputation.PeerToPeerTrust message.
   103  func (x *PeerToPeerTrust) FromGRPCMessage(m grpc.Message) error {
   104  	v, ok := m.(*reputation.PeerToPeerTrust)
   105  	if !ok {
   106  		return message.NewUnexpectedMessageType(m, v)
   107  	}
   108  
   109  	var err error
   110  
   111  	trusting := v.GetTrustingPeer()
   112  	if trusting == nil {
   113  		x.trusting = nil
   114  	} else {
   115  		if x.trusting == nil {
   116  			x.trusting = new(PeerID)
   117  		}
   118  
   119  		err = x.trusting.FromGRPCMessage(trusting)
   120  		if err != nil {
   121  			return err
   122  		}
   123  	}
   124  
   125  	trust := v.GetTrust()
   126  	if trust == nil {
   127  		x.trust = nil
   128  	} else {
   129  		if x.trust == nil {
   130  			x.trust = new(Trust)
   131  		}
   132  
   133  		err = x.trust.FromGRPCMessage(trust)
   134  	}
   135  
   136  	return err
   137  }
   138  
   139  // TrustsToGRPC converts slice of Trust structures
   140  // to slice of gRPC-generated Trust messages.
   141  func TrustsToGRPC(xs []Trust) (res []*reputation.Trust) {
   142  	if xs != nil {
   143  		res = make([]*reputation.Trust, 0, len(xs))
   144  
   145  		for i := range xs {
   146  			res = append(res, xs[i].ToGRPCMessage().(*reputation.Trust))
   147  		}
   148  	}
   149  
   150  	return
   151  }
   152  
   153  // TrustsFromGRPC tries to restore slice of Trust structures from
   154  // slice of gRPC-generated reputation.Trust messages.
   155  func TrustsFromGRPC(xs []*reputation.Trust) (res []Trust, err error) {
   156  	if xs != nil {
   157  		res = make([]Trust, len(xs))
   158  
   159  		for i := range xs {
   160  			if xs[i] != nil {
   161  				err = res[i].FromGRPCMessage(xs[i])
   162  				if err != nil {
   163  					return
   164  				}
   165  			}
   166  		}
   167  	}
   168  
   169  	return
   170  }
   171  
   172  // ToGRPCMessage converts GlobalTrustBody to gRPC-generated
   173  // reputation.GlobalTrust_Body message.
   174  func (x *GlobalTrustBody) ToGRPCMessage() grpc.Message {
   175  	var m *reputation.GlobalTrust_Body
   176  
   177  	if x != nil {
   178  		m = new(reputation.GlobalTrust_Body)
   179  
   180  		m.SetManager(x.manager.ToGRPCMessage().(*reputation.PeerID))
   181  		m.SetTrust(x.trust.ToGRPCMessage().(*reputation.Trust))
   182  	}
   183  
   184  	return m
   185  }
   186  
   187  // FromGRPCMessage tries to restore GlobalTrustBody from grpc.Message.
   188  //
   189  // Returns message.ErrUnexpectedMessageType if m is not
   190  // a gRPC-generated reputation.GlobalTrust_Body message.
   191  func (x *GlobalTrustBody) FromGRPCMessage(m grpc.Message) error {
   192  	v, ok := m.(*reputation.GlobalTrust_Body)
   193  	if !ok {
   194  		return message.NewUnexpectedMessageType(m, v)
   195  	}
   196  
   197  	var err error
   198  
   199  	manager := v.GetManager()
   200  	if manager == nil {
   201  		x.manager = nil
   202  	} else {
   203  		if x.manager == nil {
   204  			x.manager = new(PeerID)
   205  		}
   206  
   207  		err = x.manager.FromGRPCMessage(manager)
   208  		if err != nil {
   209  			return err
   210  		}
   211  	}
   212  
   213  	trust := v.GetTrust()
   214  	if trust == nil {
   215  		x.trust = nil
   216  	} else {
   217  		if x.trust == nil {
   218  			x.trust = new(Trust)
   219  		}
   220  
   221  		err = x.trust.FromGRPCMessage(trust)
   222  	}
   223  
   224  	return err
   225  }
   226  
   227  // ToGRPCMessage converts GlobalTrust to gRPC-generated
   228  // reputation.GlobalTrust message.
   229  func (x *GlobalTrust) ToGRPCMessage() grpc.Message {
   230  	var m *reputation.GlobalTrust
   231  
   232  	if x != nil {
   233  		m = new(reputation.GlobalTrust)
   234  
   235  		m.SetVersion(x.version.ToGRPCMessage().(*refsGRPC.Version))
   236  		m.SetBody(x.body.ToGRPCMessage().(*reputation.GlobalTrust_Body))
   237  		m.SetSignature(x.sig.ToGRPCMessage().(*refsGRPC.Signature))
   238  	}
   239  
   240  	return m
   241  }
   242  
   243  // FromGRPCMessage tries to restore GlobalTrust from grpc.Message.
   244  //
   245  // Returns message.ErrUnexpectedMessageType if m is not
   246  // a gRPC-generated reputation.GlobalTrust message.
   247  func (x *GlobalTrust) FromGRPCMessage(m grpc.Message) error {
   248  	v, ok := m.(*reputation.GlobalTrust)
   249  	if !ok {
   250  		return message.NewUnexpectedMessageType(m, v)
   251  	}
   252  
   253  	var err error
   254  
   255  	version := v.GetVersion()
   256  	if version == nil {
   257  		x.version = nil
   258  	} else {
   259  		if x.version == nil {
   260  			x.version = new(refs.Version)
   261  		}
   262  
   263  		err = x.version.FromGRPCMessage(version)
   264  		if err != nil {
   265  			return err
   266  		}
   267  	}
   268  
   269  	body := v.GetBody()
   270  	if body == nil {
   271  		x.body = nil
   272  	} else {
   273  		if x.body == nil {
   274  			x.body = new(GlobalTrustBody)
   275  		}
   276  
   277  		err = x.body.FromGRPCMessage(body)
   278  		if err != nil {
   279  			return err
   280  		}
   281  	}
   282  
   283  	sig := v.GetSignature()
   284  	if sig == nil {
   285  		x.sig = nil
   286  	} else {
   287  		if x.sig == nil {
   288  			x.sig = new(refs.Signature)
   289  		}
   290  
   291  		err = x.sig.FromGRPCMessage(sig)
   292  	}
   293  
   294  	return err
   295  }
   296  
   297  // ToGRPCMessage converts AnnounceLocalTrustRequestBody to gRPC-generated
   298  // reputation.AnnounceLocalTrustRequest_Body message.
   299  func (x *AnnounceLocalTrustRequestBody) ToGRPCMessage() grpc.Message {
   300  	var m *reputation.AnnounceLocalTrustRequest_Body
   301  
   302  	if x != nil {
   303  		m = new(reputation.AnnounceLocalTrustRequest_Body)
   304  
   305  		m.SetEpoch(x.epoch)
   306  		m.SetTrusts(TrustsToGRPC(x.trusts))
   307  	}
   308  
   309  	return m
   310  }
   311  
   312  // FromGRPCMessage tries to restore AnnounceLocalTrustRequestBody from grpc.Message.
   313  //
   314  // Returns message.ErrUnexpectedMessageType if m is not
   315  // a gRPC-generated reputation.AnnounceLocalTrustRequest_Body message.
   316  func (x *AnnounceLocalTrustRequestBody) FromGRPCMessage(m grpc.Message) error {
   317  	v, ok := m.(*reputation.AnnounceLocalTrustRequest_Body)
   318  	if !ok {
   319  		return message.NewUnexpectedMessageType(m, v)
   320  	}
   321  
   322  	var err error
   323  
   324  	x.trusts, err = TrustsFromGRPC(v.GetTrusts())
   325  	if err != nil {
   326  		return err
   327  	}
   328  
   329  	x.epoch = v.GetEpoch()
   330  
   331  	return nil
   332  }
   333  
   334  // ToGRPCMessage converts AnnounceLocalTrustRequest to gRPC-generated
   335  // reputation.AnnounceLocalTrustRequest message.
   336  func (x *AnnounceLocalTrustRequest) ToGRPCMessage() grpc.Message {
   337  	var m *reputation.AnnounceLocalTrustRequest
   338  
   339  	if x != nil {
   340  		m = new(reputation.AnnounceLocalTrustRequest)
   341  
   342  		m.SetBody(x.body.ToGRPCMessage().(*reputation.AnnounceLocalTrustRequest_Body))
   343  		x.RequestHeaders.ToMessage(m)
   344  	}
   345  
   346  	return m
   347  }
   348  
   349  // FromGRPCMessage tries to restore AnnounceLocalTrustRequest from grpc.Message.
   350  //
   351  // Returns message.ErrUnexpectedMessageType if m is not
   352  // a gRPC-generated reputation.AnnounceLocalTrustRequest message.
   353  func (x *AnnounceLocalTrustRequest) FromGRPCMessage(m grpc.Message) error {
   354  	v, ok := m.(*reputation.AnnounceLocalTrustRequest)
   355  	if !ok {
   356  		return message.NewUnexpectedMessageType(m, v)
   357  	}
   358  
   359  	var err error
   360  
   361  	body := v.GetBody()
   362  	if body == nil {
   363  		x.body = nil
   364  	} else {
   365  		if x.body == nil {
   366  			x.body = new(AnnounceLocalTrustRequestBody)
   367  		}
   368  
   369  		err = x.body.FromGRPCMessage(body)
   370  		if err != nil {
   371  			return err
   372  		}
   373  	}
   374  
   375  	return x.RequestHeaders.FromMessage(v)
   376  }
   377  
   378  // ToGRPCMessage converts AnnounceLocalTrustResponseBody to gRPC-generated
   379  // reputation.AnnounceLocalTrustResponse_Body message.
   380  func (x *AnnounceLocalTrustResponseBody) ToGRPCMessage() grpc.Message {
   381  	var m *reputation.AnnounceLocalTrustResponse_Body
   382  
   383  	if x != nil {
   384  		m = new(reputation.AnnounceLocalTrustResponse_Body)
   385  	}
   386  
   387  	return m
   388  }
   389  
   390  // FromGRPCMessage tries to restore AnnounceLocalTrustResponseBody from grpc.Message.
   391  //
   392  // Returns message.ErrUnexpectedMessageType if m is not
   393  // a gRPC-generated reputation.AnnounceLocalTrustResponse_Body message.
   394  func (x *AnnounceLocalTrustResponseBody) FromGRPCMessage(m grpc.Message) error {
   395  	v, ok := m.(*reputation.AnnounceLocalTrustResponse_Body)
   396  	if !ok {
   397  		return message.NewUnexpectedMessageType(m, v)
   398  	}
   399  
   400  	return nil
   401  }
   402  
   403  // ToGRPCMessage converts AnnounceLocalTrustResponse to gRPC-generated
   404  // reputation.AnnounceLocalTrustResponse message.
   405  func (x *AnnounceLocalTrustResponse) ToGRPCMessage() grpc.Message {
   406  	var m *reputation.AnnounceLocalTrustResponse
   407  
   408  	if x != nil {
   409  		m = new(reputation.AnnounceLocalTrustResponse)
   410  
   411  		m.SetBody(x.body.ToGRPCMessage().(*reputation.AnnounceLocalTrustResponse_Body))
   412  		x.ResponseHeaders.ToMessage(m)
   413  	}
   414  
   415  	return m
   416  }
   417  
   418  // FromGRPCMessage tries to restore AnnounceLocalTrustResponse from grpc.Message.
   419  //
   420  // Returns message.ErrUnexpectedMessageType if m is not
   421  // a gRPC-generated reputation.AnnounceLocalTrustResponse message.
   422  func (x *AnnounceLocalTrustResponse) FromGRPCMessage(m grpc.Message) error {
   423  	v, ok := m.(*reputation.AnnounceLocalTrustResponse)
   424  	if !ok {
   425  		return message.NewUnexpectedMessageType(m, v)
   426  	}
   427  
   428  	var err error
   429  
   430  	body := v.GetBody()
   431  	if body == nil {
   432  		x.body = nil
   433  	} else {
   434  		if x.body == nil {
   435  			x.body = new(AnnounceLocalTrustResponseBody)
   436  		}
   437  
   438  		err = x.body.FromGRPCMessage(body)
   439  		if err != nil {
   440  			return err
   441  		}
   442  	}
   443  
   444  	return x.ResponseHeaders.FromMessage(v)
   445  }
   446  
   447  // ToGRPCMessage converts AnnounceIntermediateResultRequestBody to gRPC-generated
   448  // reputation.AnnounceIntermediateResultRequest_Body message.
   449  func (x *AnnounceIntermediateResultRequestBody) ToGRPCMessage() grpc.Message {
   450  	var m *reputation.AnnounceIntermediateResultRequest_Body
   451  
   452  	if x != nil {
   453  		m = new(reputation.AnnounceIntermediateResultRequest_Body)
   454  
   455  		m.SetEpoch(x.epoch)
   456  		m.SetIteration(x.iter)
   457  		m.SetTrust(x.trust.ToGRPCMessage().(*reputation.PeerToPeerTrust))
   458  	}
   459  
   460  	return m
   461  }
   462  
   463  // FromGRPCMessage tries to restore AnnounceIntermediateResultRequestBody from grpc.Message.
   464  //
   465  // Returns message.ErrUnexpectedMessageType if m is not
   466  // a gRPC-generated reputation.AnnounceIntermediateResultRequest_Body message.
   467  func (x *AnnounceIntermediateResultRequestBody) FromGRPCMessage(m grpc.Message) error {
   468  	v, ok := m.(*reputation.AnnounceIntermediateResultRequest_Body)
   469  	if !ok {
   470  		return message.NewUnexpectedMessageType(m, v)
   471  	}
   472  
   473  	trust := v.GetTrust()
   474  	if trust == nil {
   475  		x.trust = nil
   476  	} else {
   477  		if x.trust == nil {
   478  			x.trust = new(PeerToPeerTrust)
   479  		}
   480  
   481  		err := x.trust.FromGRPCMessage(trust)
   482  		if err != nil {
   483  			return err
   484  		}
   485  	}
   486  
   487  	x.epoch = v.GetEpoch()
   488  	x.iter = v.GetIteration()
   489  
   490  	return nil
   491  }
   492  
   493  // ToGRPCMessage converts AnnounceIntermediateResultRequest to gRPC-generated
   494  // reputation.AnnounceIntermediateResultRequest message.
   495  func (x *AnnounceIntermediateResultRequest) ToGRPCMessage() grpc.Message {
   496  	var m *reputation.AnnounceIntermediateResultRequest
   497  
   498  	if x != nil {
   499  		m = new(reputation.AnnounceIntermediateResultRequest)
   500  
   501  		m.SetBody(x.body.ToGRPCMessage().(*reputation.AnnounceIntermediateResultRequest_Body))
   502  		x.RequestHeaders.ToMessage(m)
   503  	}
   504  
   505  	return m
   506  }
   507  
   508  // FromGRPCMessage tries to restore AnnounceIntermediateResultRequest from grpc.Message.
   509  //
   510  // Returns message.ErrUnexpectedMessageType if m is not
   511  // a gRPC-generated reputation.AnnounceIntermediateResultRequest message.
   512  func (x *AnnounceIntermediateResultRequest) FromGRPCMessage(m grpc.Message) error {
   513  	v, ok := m.(*reputation.AnnounceIntermediateResultRequest)
   514  	if !ok {
   515  		return message.NewUnexpectedMessageType(m, v)
   516  	}
   517  
   518  	var err error
   519  
   520  	body := v.GetBody()
   521  	if body == nil {
   522  		x.body = nil
   523  	} else {
   524  		if x.body == nil {
   525  			x.body = new(AnnounceIntermediateResultRequestBody)
   526  		}
   527  
   528  		err = x.body.FromGRPCMessage(body)
   529  		if err != nil {
   530  			return err
   531  		}
   532  	}
   533  
   534  	return x.RequestHeaders.FromMessage(v)
   535  }
   536  
   537  // ToGRPCMessage converts AnnounceIntermediateResultResponseBody to gRPC-generated
   538  // reputation.AnnounceIntermediateResultResponse_Body message.
   539  func (x *AnnounceIntermediateResultResponseBody) ToGRPCMessage() grpc.Message {
   540  	var m *reputation.AnnounceIntermediateResultResponse_Body
   541  
   542  	if x != nil {
   543  		m = new(reputation.AnnounceIntermediateResultResponse_Body)
   544  	}
   545  
   546  	return m
   547  }
   548  
   549  // FromGRPCMessage tries to restore AnnounceIntermediateResultResponseBody from grpc.Message.
   550  //
   551  // Returns message.ErrUnexpectedMessageType if m is not
   552  // a gRPC-generated reputation.AnnounceIntermediateResultResponse_Body message.
   553  func (x *AnnounceIntermediateResultResponseBody) FromGRPCMessage(m grpc.Message) error {
   554  	v, ok := m.(*reputation.AnnounceIntermediateResultResponse_Body)
   555  	if !ok {
   556  		return message.NewUnexpectedMessageType(m, v)
   557  	}
   558  
   559  	return nil
   560  }
   561  
   562  // ToGRPCMessage converts AnnounceIntermediateResultResponse to gRPC-generated
   563  // reputation.AnnounceIntermediateResultResponse message.
   564  func (x *AnnounceIntermediateResultResponse) ToGRPCMessage() grpc.Message {
   565  	var m *reputation.AnnounceIntermediateResultResponse
   566  
   567  	if x != nil {
   568  		m = new(reputation.AnnounceIntermediateResultResponse)
   569  
   570  		m.SetBody(x.body.ToGRPCMessage().(*reputation.AnnounceIntermediateResultResponse_Body))
   571  		x.ResponseHeaders.ToMessage(m)
   572  	}
   573  
   574  	return m
   575  }
   576  
   577  // FromGRPCMessage tries to restore AnnounceIntermediateResultResponse from grpc.Message.
   578  //
   579  // Returns message.ErrUnexpectedMessageType if m is not
   580  // a gRPC-generated reputation.AnnounceIntermediateResultResponse message.
   581  func (x *AnnounceIntermediateResultResponse) FromGRPCMessage(m grpc.Message) error {
   582  	v, ok := m.(*reputation.AnnounceIntermediateResultResponse)
   583  	if !ok {
   584  		return message.NewUnexpectedMessageType(m, v)
   585  	}
   586  
   587  	var err error
   588  
   589  	body := v.GetBody()
   590  	if body == nil {
   591  		x.body = nil
   592  	} else {
   593  		if x.body == nil {
   594  			x.body = new(AnnounceIntermediateResultResponseBody)
   595  		}
   596  
   597  		err = x.body.FromGRPCMessage(body)
   598  		if err != nil {
   599  			return err
   600  		}
   601  	}
   602  
   603  	return x.ResponseHeaders.FromMessage(v)
   604  }