fb591f5fac
Document that `Replica.ToV2` method return `nil` when called on `nil`. Document that `ReplicaFromV2` function return `nil` when called on `nil`. Write corresponding unit tests. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package netmap
|
|
|
|
import (
|
|
"github.com/nspcc-dev/neofs-api-go/v2/netmap"
|
|
)
|
|
|
|
// Replica represents v2-compatible object replica descriptor.
|
|
type Replica netmap.Replica
|
|
|
|
// NewReplica creates and returns new Replica instance.
|
|
func NewReplica() *Replica {
|
|
return NewReplicaFromV2(new(netmap.Replica))
|
|
}
|
|
|
|
// NewReplicaFromV2 converts v2 Replica to Replica.
|
|
//
|
|
// Nil netmap.Replica converts to nil.
|
|
func NewReplicaFromV2(f *netmap.Replica) *Replica {
|
|
return (*Replica)(f)
|
|
}
|
|
|
|
// ToV2 converts Replica to v2 Replica.
|
|
//
|
|
// Nil Replica converts to nil.
|
|
func (r *Replica) ToV2() *netmap.Replica {
|
|
return (*netmap.Replica)(r)
|
|
}
|
|
|
|
// Count returns number of object replicas.
|
|
func (r *Replica) Count() uint32 {
|
|
return (*netmap.Replica)(r).
|
|
GetCount()
|
|
}
|
|
|
|
// SetCount sets number of object replicas.
|
|
func (r *Replica) SetCount(c uint32) {
|
|
(*netmap.Replica)(r).
|
|
SetCount(c)
|
|
}
|
|
|
|
// Selector returns name of selector bucket to put replicas.
|
|
func (r *Replica) Selector() string {
|
|
return (*netmap.Replica)(r).
|
|
GetSelector()
|
|
}
|
|
|
|
// SetSelector sets name of selector bucket to put replicas.
|
|
func (r *Replica) SetSelector(s string) {
|
|
(*netmap.Replica)(r).
|
|
SetSelector(s)
|
|
}
|
|
|
|
// Marshal marshals Replica into a protobuf binary form.
|
|
//
|
|
// Buffer is allocated when the argument is empty.
|
|
// Otherwise, the first buffer is used.
|
|
func (r *Replica) Marshal(b ...[]byte) ([]byte, error) {
|
|
var buf []byte
|
|
if len(b) > 0 {
|
|
buf = b[0]
|
|
}
|
|
|
|
return (*netmap.Replica)(r).
|
|
StableMarshal(buf)
|
|
}
|
|
|
|
// Unmarshal unmarshals protobuf binary representation of Replica.
|
|
func (r *Replica) Unmarshal(data []byte) error {
|
|
return (*netmap.Replica)(r).
|
|
Unmarshal(data)
|
|
}
|
|
|
|
// MarshalJSON encodes Replica to protobuf JSON format.
|
|
func (r *Replica) MarshalJSON() ([]byte, error) {
|
|
return (*netmap.Replica)(r).
|
|
MarshalJSON()
|
|
}
|
|
|
|
// UnmarshalJSON decodes Replica from protobuf JSON format.
|
|
func (r *Replica) UnmarshalJSON(data []byte) error {
|
|
return (*netmap.Replica)(r).
|
|
UnmarshalJSON(data)
|
|
}
|