forked from TrueCloudLab/frostfs-api-go
Evgenii Stratonikov
5e1c6a908f
``` goos: linux goarch: amd64 pkg: git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz │ old │ new │ │ sec/op │ sec/op vs base │ ObjectIDSlice/0_elements/to_grpc_message-8 3.193n ± 2% 3.242n ± 0% +1.50% (p=0.034 n=10) ObjectIDSlice/0_elements/from_grpc_message-8 3.197n ± 2% 3.343n ± 1% +4.57% (p=0.000 n=10) ObjectIDSlice/0_elements/marshal-8 5.666n ± 3% 5.642n ± 0% -0.42% (p=0.000 n=10) ObjectIDSlice/1_elements/to_grpc_message-8 53.10n ± 6% 29.78n ± 12% -43.92% (p=0.000 n=10) ObjectIDSlice/1_elements/from_grpc_message-8 28.99n ± 5% 29.77n ± 7% ~ (p=0.165 n=10) ObjectIDSlice/1_elements/marshal-8 49.08n ± 7% 50.72n ± 6% ~ (p=0.218 n=10) ObjectIDSlice/50_elements/to_grpc_message-8 1652.5n ± 7% 277.2n ± 1% -83.22% (p=0.000 n=10) ObjectIDSlice/50_elements/from_grpc_message-8 261.2n ± 11% 226.7n ± 15% -13.19% (p=0.003 n=10) ObjectIDSlice/50_elements/marshal-8 1.512µ ± 6% 1.514µ ± 6% ~ (p=0.955 n=10) geomean 52.15n 39.99n -23.31% │ old │ new │ │ B/op │ B/op vs base │ ObjectIDSlice/0_elements/to_grpc_message-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/0_elements/from_grpc_message-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/0_elements/marshal-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/1_elements/to_grpc_message-8 32.00 ± 0% 24.00 ± 0% -25.00% (p=0.000 n=10) ObjectIDSlice/1_elements/from_grpc_message-8 24.00 ± 0% 24.00 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/1_elements/marshal-8 48.00 ± 0% 48.00 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/50_elements/to_grpc_message-8 1.578Ki ± 0% 1.250Ki ± 0% -20.79% (p=0.000 n=10) ObjectIDSlice/50_elements/from_grpc_message-8 1.250Ki ± 0% 1.250Ki ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/50_elements/marshal-8 2.000Ki ± 0% 2.000Ki ± 0% ~ (p=1.000 n=10) ¹ geomean ² -5.62% ² ¹ all samples are equal ² summaries must be >0 to compute geomean │ old │ new │ │ allocs/op │ allocs/op vs base │ ObjectIDSlice/0_elements/to_grpc_message-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/0_elements/from_grpc_message-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/0_elements/marshal-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/1_elements/to_grpc_message-8 2.000 ± 0% 1.000 ± 0% -50.00% (p=0.000 n=10) ObjectIDSlice/1_elements/from_grpc_message-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/1_elements/marshal-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/50_elements/to_grpc_message-8 51.000 ± 0% 1.000 ± 0% -98.04% (p=0.000 n=10) ObjectIDSlice/50_elements/from_grpc_message-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹ ObjectIDSlice/50_elements/marshal-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹ geomean ² -40.18% ² ¹ all samples are equal ² summaries must be >0 to compute geomean ``` Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
264 lines
4.4 KiB
Go
264 lines
4.4 KiB
Go
package refs
|
|
|
|
import (
|
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
)
|
|
|
|
func (o *OwnerID) ToGRPCMessage() grpc.Message {
|
|
var m *refs.OwnerID
|
|
|
|
if o != nil {
|
|
m = new(refs.OwnerID)
|
|
|
|
m.SetValue(o.val)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (o *OwnerID) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.OwnerID)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
o.val = v.GetValue()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *ContainerID) ToGRPCMessage() grpc.Message {
|
|
var m *refs.ContainerID
|
|
|
|
if c != nil {
|
|
m = new(refs.ContainerID)
|
|
|
|
m.SetValue(c.val)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (c *ContainerID) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.ContainerID)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
c.val = v.GetValue()
|
|
|
|
return nil
|
|
}
|
|
|
|
func ContainerIDsToGRPCMessage(ids []ContainerID) (res []refs.ContainerID) {
|
|
if ids != nil {
|
|
res = make([]refs.ContainerID, 0, len(ids))
|
|
|
|
for i := range ids {
|
|
res = append(res, *ids[i].ToGRPCMessage().(*refs.ContainerID))
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func ContainerIDsFromGRPCMessage(idsV2 []refs.ContainerID) (res []ContainerID, err error) {
|
|
if idsV2 != nil {
|
|
res = make([]ContainerID, len(idsV2))
|
|
|
|
for i := range idsV2 {
|
|
err = res[i].FromGRPCMessage(&idsV2[i])
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (o *ObjectID) ToGRPCMessage() grpc.Message {
|
|
var m *refs.ObjectID
|
|
|
|
if o != nil {
|
|
m = new(refs.ObjectID)
|
|
|
|
m.SetValue(o.val)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (o *ObjectID) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.ObjectID)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
o.val = v.GetValue()
|
|
|
|
return nil
|
|
}
|
|
|
|
func ObjectIDListToGRPCMessage(ids []ObjectID) (res []refs.ObjectID) {
|
|
if ids != nil {
|
|
res = make([]refs.ObjectID, 0, len(ids))
|
|
|
|
for i := range ids {
|
|
res = append(res, *ids[i].ToGRPCMessage().(*refs.ObjectID))
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func ObjectIDListFromGRPCMessage(idsV2 []refs.ObjectID) (res []ObjectID, err error) {
|
|
if idsV2 != nil {
|
|
res = make([]ObjectID, len(idsV2))
|
|
|
|
for i := range idsV2 {
|
|
err = res[i].FromGRPCMessage(&idsV2[i])
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (a *Address) ToGRPCMessage() grpc.Message {
|
|
var m *refs.Address
|
|
|
|
if a != nil {
|
|
m = new(refs.Address)
|
|
|
|
m.SetContainerId(a.cid.ToGRPCMessage().(*refs.ContainerID))
|
|
m.SetObjectId(a.oid.ToGRPCMessage().(*refs.ObjectID))
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (a *Address) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.Address)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
var err error
|
|
|
|
cid := v.GetContainerId()
|
|
if cid == nil {
|
|
a.cid = nil
|
|
} else {
|
|
if a.cid == nil {
|
|
a.cid = new(ContainerID)
|
|
}
|
|
|
|
err = a.cid.FromGRPCMessage(cid)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
oid := v.GetObjectId()
|
|
if oid == nil {
|
|
a.oid = nil
|
|
} else {
|
|
if a.oid == nil {
|
|
a.oid = new(ObjectID)
|
|
}
|
|
|
|
err = a.oid.FromGRPCMessage(oid)
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func ChecksumTypeToGRPC(t ChecksumType) refs.ChecksumType {
|
|
return refs.ChecksumType(t)
|
|
}
|
|
|
|
func ChecksumTypeFromGRPC(t refs.ChecksumType) ChecksumType {
|
|
return ChecksumType(t)
|
|
}
|
|
|
|
func (c *Checksum) ToGRPCMessage() grpc.Message {
|
|
var m *refs.Checksum
|
|
|
|
if c != nil {
|
|
m = new(refs.Checksum)
|
|
|
|
m.SetType(ChecksumTypeToGRPC(c.typ))
|
|
m.SetSum(c.sum)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (c *Checksum) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.Checksum)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
c.typ = ChecksumTypeFromGRPC(v.GetType())
|
|
c.sum = v.GetSum()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (v *Version) ToGRPCMessage() grpc.Message {
|
|
var m *refs.Version
|
|
|
|
if v != nil {
|
|
m = new(refs.Version)
|
|
|
|
m.SetMajor(v.major)
|
|
m.SetMinor(v.minor)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (v *Version) FromGRPCMessage(m grpc.Message) error {
|
|
ver, ok := m.(*refs.Version)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
v.major = ver.GetMajor()
|
|
v.minor = ver.GetMinor()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *Signature) ToGRPCMessage() grpc.Message {
|
|
var m *refs.Signature
|
|
|
|
if s != nil {
|
|
m = new(refs.Signature)
|
|
|
|
m.SetKey(s.key)
|
|
m.SetSign(s.sign)
|
|
m.SetScheme(refs.SignatureScheme(s.scheme))
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (s *Signature) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*refs.Signature)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, s)
|
|
}
|
|
|
|
s.key = v.GetKey()
|
|
s.sign = v.GetSign()
|
|
s.scheme = SignatureScheme(v.GetScheme())
|
|
|
|
return nil
|
|
}
|