package apemanager import ( "fmt" apemanager "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc" "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message" "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto" ) const ( chainTargetTargetTypeField = 1 chainTargetNameField = 2 chainRawField = 1 addChainReqBodyTargetField = 1 addChainReqBodyChainField = 2 addChainRespBodyChainIDField = 1 removeChainReqBodyTargetField = 1 removeChainReqBodyChainField = 2 /* Fields for RemoveResponseBody are missed since RemoveResponseBody is empty. */ listChainsReqBodyTargetField = 1 listChainsRespBodyChainsField = 1 ) func (t *ChainTarget) StableSize() (size int) { if t == nil { return 0 } size += proto.EnumSize(chainTargetTargetTypeField, int32(t.targeType)) size += proto.StringSize(chainTargetNameField, t.name) return size } func (t *ChainTarget) StableMarshal(buf []byte) []byte { if t == nil { return []byte{} } if buf == nil { buf = make([]byte, t.StableSize()) } var offset int offset += proto.EnumMarshal(chainTargetTargetTypeField, buf[offset:], int32(t.targeType)) proto.StringMarshal(chainTargetNameField, buf[offset:], t.name) return buf } func (t *ChainTarget) Unmarshal(data []byte) error { return message.Unmarshal(t, data, new(apemanager.ChainTarget)) } func (c *Chain) StableSize() (size int) { if c == nil { return 0 } switch v := c.GetKind().(type) { case *ChainRaw: if v != nil { size += proto.BytesSize(chainRawField, v.GetRaw()) } default: panic(fmt.Sprintf("unsupported chain kind: %T", v)) } return size } func (c *Chain) StableMarshal(buf []byte) []byte { if c == nil { return []byte{} } if buf == nil { buf = make([]byte, c.StableSize()) } var offset int switch v := c.GetKind().(type) { case *ChainRaw: if v != nil { proto.BytesMarshal(chainRawField, buf[offset:], v.GetRaw()) } default: panic(fmt.Sprintf("unsupported chain kind: %T", v)) } return buf } func (c *Chain) Unmarshal(data []byte) error { return message.Unmarshal(c, data, new(apemanager.Chain)) } func (rb *AddChainRequestBody) StableSize() (size int) { if rb == nil { return 0 } size += proto.NestedStructureSize(addChainReqBodyTargetField, rb.target) size += proto.NestedStructureSize(addChainReqBodyChainField, rb.chain) return size } func (rb *AddChainRequestBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } var offset int offset += proto.NestedStructureMarshal(addChainReqBodyTargetField, buf[offset:], rb.target) proto.NestedStructureMarshal(addChainReqBodyChainField, buf[offset:], rb.chain) return buf } func (rb *AddChainRequestBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.AddChainRequest_Body)) } func (rb *AddChainResponseBody) StableSize() (size int) { if rb == nil { return 0 } size += proto.BytesSize(addChainRespBodyChainIDField, rb.chainID) return size } func (rb *AddChainResponseBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } var offset int proto.BytesMarshal(addChainRespBodyChainIDField, buf[offset:], rb.chainID) return buf } func (rb *AddChainResponseBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.AddChainResponse_Body)) } func (rb *RemoveChainRequestBody) StableSize() (size int) { if rb == nil { return 0 } size += proto.NestedStructureSize(addChainReqBodyTargetField, rb.target) size += proto.BytesSize(addChainReqBodyChainField, rb.chainID) return size } func (rb *RemoveChainRequestBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } var offset int offset += proto.NestedStructureMarshal(removeChainReqBodyTargetField, buf[offset:], rb.target) proto.BytesMarshal(removeChainReqBodyChainField, buf[offset:], rb.chainID) return buf } func (rb *RemoveChainRequestBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.RemoveChainRequest_Body)) } func (rb *RemoveChainResponseBody) StableSize() (size int) { if rb == nil { return 0 } return size } func (rb *RemoveChainResponseBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } return buf } func (rb *RemoveChainResponseBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.RemoveChainResponse_Body)) } func (rb *ListChainsRequestBody) StableSize() (size int) { if rb == nil { return 0 } size += proto.NestedStructureSize(listChainsReqBodyTargetField, rb.target) return size } func (rb *ListChainsRequestBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } var offset int proto.NestedStructureMarshal(addChainReqBodyTargetField, buf[offset:], rb.target) return buf } func (rb *ListChainsRequestBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.ListChainsRequest_Body)) } func (rb *ListChainsResponseBody) StableSize() (size int) { if rb == nil { return 0 } for _, chain := range rb.GetChains() { size += proto.NestedStructureSize(listChainsRespBodyChainsField, chain) } return size } func (rb *ListChainsResponseBody) StableMarshal(buf []byte) []byte { if rb == nil { return []byte{} } if buf == nil { buf = make([]byte, rb.StableSize()) } var offset int for _, chain := range rb.GetChains() { offset += proto.NestedStructureMarshal(listChainsRespBodyChainsField, buf[offset:], chain) } return buf } func (rb *ListChainsResponseBody) Unmarshal(data []byte) error { return message.Unmarshal(rb, data, new(apemanager.ListChainsResponse_Body)) }