frostfs-api-go/pkg/object/object.go
Leonard Lyubich 1ac6f2eeeb [#145] sdk/object: Refactor logic of field setters
In previous implementation RawObject constructor initialized internal v2
Object structure recursively so that further you can directly set the values
of nested fields. This caused the object created by constructor New to be
different from the object created from the empty object v2.

Remove recursive initialization of v2 Object from New and NewRaw
constructors. Make setters to initialize nested structures on demand.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-09-18 10:45:11 +03:00

39 lines
856 B
Go

package object
import (
"github.com/nspcc-dev/neofs-api-go/v2/object"
)
// Object represents v2-compatible NeoFS object that provides
// a convenient interface for working in isolation
// from the internal structure of an object.
//
// Object allows to work with the object in read-only
// mode as a reflection of the immutability of objects
// in the system.
type Object struct {
*rwObject
}
// NewFromV2 wraps v2 Object message to Object.
func NewFromV2(oV2 *object.Object) *Object {
return &Object{
rwObject: (*rwObject)(oV2),
}
}
// New creates and initializes blank Object.
//
// Works similar as NewFromV2(new(Object)).
func New() *Object {
return NewFromV2(new(object.Object))
}
// ToV2 converts Object to v2 Object message.
func (o *Object) ToV2() *object.Object {
if o != nil {
return (*object.Object)(o.rwObject)
}
return nil
}