frostfs-api-go/v2/container/convert.go
Leonard Lyubich ae2e951b77 v2/container: Implement Container uni-structure
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-09-18 10:42:14 +03:00

104 lines
1.8 KiB
Go

package container
import (
container "github.com/nspcc-dev/neofs-api-go/v2/container/grpc"
"github.com/nspcc-dev/neofs-api-go/v2/netmap"
"github.com/nspcc-dev/neofs-api-go/v2/refs"
"github.com/nspcc-dev/neofs-api-go/v2/service"
)
func AttributeToGRPCMessage(a *Attribute) *container.Container_Attribute {
if a == nil {
return nil
}
m := new(container.Container_Attribute)
m.SetKey(a.GetKey())
m.SetValue(a.GetValue())
return m
}
func AttributeFromGRPCMessage(m *container.Container_Attribute) *Attribute {
if m == nil {
return nil
}
a := new(Attribute)
a.SetKey(m.GetKey())
a.SetValue(m.GetValue())
return a
}
func ContainerToGRPCMessage(c *Container) *container.Container {
if c == nil {
return nil
}
m := new(container.Container)
m.SetVersion(
service.VersionToGRPCMessage(c.GetVersion()),
)
m.SetOwnerId(
refs.OwnerIDToGRPCMessage(c.GetOwnerID()),
)
m.SetNonce(c.GetNonce())
m.SetBasicAcl(c.GetBasicACL())
m.SetPlacementPolicy(
netmap.PlacementPolicyToGRPCMessage(c.GetPlacementPolicy()),
)
attr := c.GetAttributes()
attrMsg := make([]*container.Container_Attribute, 0, len(attr))
for i := range attr {
attrMsg = append(attrMsg, AttributeToGRPCMessage(attr[i]))
}
m.SetAttributes(attrMsg)
return m
}
func ContainerFromGRPCMessage(m *container.Container) *Container {
if m == nil {
return nil
}
c := new(Container)
c.SetVersion(
service.VersionFromGRPCMessage(m.GetVersion()),
)
c.SetOwnerID(
refs.OwnerIDFromGRPCMessage(m.GetOwnerId()),
)
c.SetNonce(m.GetNonce())
c.SetBasicACL(m.GetBasicAcl())
c.SetPlacementPolicy(
netmap.PlacementPolicyFromGRPCMessage(m.GetPlacementPolicy()),
)
attrMsg := m.GetAttributes()
attr := make([]*Attribute, 0, len(attrMsg))
for i := range attrMsg {
attr = append(attr, AttributeFromGRPCMessage(attrMsg[i]))
}
c.SetAttributes(attr)
return c
}