forked from TrueCloudLab/frostfs-api-go
[#350] v2/session: Support status
field in ResponseMetaHeader
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
ca746f3800
commit
2d70391e31
5 changed files with 73 additions and 1 deletions
|
@ -10,6 +10,8 @@ import (
|
|||
"github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||
refsGRPC "github.com/nspcc-dev/neofs-api-go/v2/refs/grpc"
|
||||
session "github.com/nspcc-dev/neofs-api-go/v2/session/grpc"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/status"
|
||||
statusGRPC "github.com/nspcc-dev/neofs-api-go/v2/status/grpc"
|
||||
)
|
||||
|
||||
func (c *CreateRequestBody) ToGRPCMessage() grpc.Message {
|
||||
|
@ -560,6 +562,7 @@ func (r *ResponseMetaHeader) ToGRPCMessage() grpc.Message {
|
|||
m.SetEpoch(r.epoch)
|
||||
m.SetTtl(r.ttl)
|
||||
m.SetOrigin(r.origin.ToGRPCMessage().(*session.ResponseMetaHeader))
|
||||
m.SetStatus(r.status.ToGRPCMessage().(*statusGRPC.Status))
|
||||
}
|
||||
|
||||
return m
|
||||
|
@ -601,6 +604,20 @@ func (r *ResponseMetaHeader) FromGRPCMessage(m grpc.Message) error {
|
|||
}
|
||||
}
|
||||
|
||||
st := v.GetStatus()
|
||||
if st == nil {
|
||||
r.status = nil
|
||||
} else {
|
||||
if r.status == nil {
|
||||
r.status = new(status.Status)
|
||||
}
|
||||
|
||||
err = r.status.FromGRPCMessage(st)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
r.xHeaders, err = XHeadersFromGRPC(v.GetXHeaders())
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -3,6 +3,7 @@ package session
|
|||
import (
|
||||
acl "github.com/nspcc-dev/neofs-api-go/v2/acl/grpc"
|
||||
refs "github.com/nspcc-dev/neofs-api-go/v2/refs/grpc"
|
||||
status "github.com/nspcc-dev/neofs-api-go/v2/status/grpc"
|
||||
)
|
||||
|
||||
// SetKey sets key to the X-Header.
|
||||
|
@ -219,6 +220,13 @@ func (m *ResponseMetaHeader) SetOrigin(v *ResponseMetaHeader) {
|
|||
}
|
||||
}
|
||||
|
||||
// SetStatus sets response status.
|
||||
func (m *ResponseMetaHeader) SetStatus(v *status.Status) {
|
||||
if m != nil {
|
||||
m.Status = v
|
||||
}
|
||||
}
|
||||
|
||||
// SetBodySignature sets signature of the request body.
|
||||
func (m *RequestVerificationHeader) SetBodySignature(v *refs.Signature) {
|
||||
if m != nil {
|
||||
|
|
|
@ -52,6 +52,7 @@ const (
|
|||
respMetaHeaderTTLField = 3
|
||||
respMetaHeaderXHeadersField = 4
|
||||
respMetaHeaderOriginField = 5
|
||||
respMetaHeaderStatusField = 6
|
||||
|
||||
respVerifHeaderBodySignatureField = 1
|
||||
respVerifHeaderMetaSignatureField = 2
|
||||
|
@ -712,7 +713,14 @@ func (r *ResponseMetaHeader) StableMarshal(buf []byte) ([]byte, error) {
|
|||
offset += n
|
||||
}
|
||||
|
||||
_, err = proto.NestedStructureMarshal(respMetaHeaderOriginField, buf[offset:], r.origin)
|
||||
n, err = proto.NestedStructureMarshal(respMetaHeaderOriginField, buf[offset:], r.origin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
offset += n
|
||||
|
||||
_, err = proto.NestedStructureMarshal(respMetaHeaderStatusField, buf[offset:], r.status)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -737,6 +745,7 @@ func (r *ResponseMetaHeader) StableSize() (size int) {
|
|||
}
|
||||
|
||||
size += proto.NestedStructureSize(respMetaHeaderOriginField, r.origin)
|
||||
size += proto.NestedStructureSize(respMetaHeaderStatusField, r.status)
|
||||
|
||||
return size
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
acltest "github.com/nspcc-dev/neofs-api-go/v2/acl/test"
|
||||
refstest "github.com/nspcc-dev/neofs-api-go/v2/refs/test"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/session"
|
||||
statustest "github.com/nspcc-dev/neofs-api-go/v2/status/test"
|
||||
)
|
||||
|
||||
func GenerateCreateRequestBody(empty bool) *session.CreateRequestBody {
|
||||
|
@ -89,6 +90,7 @@ func generateResponseMetaHeader(empty, withOrigin bool) *session.ResponseMetaHea
|
|||
|
||||
m.SetXHeaders(GenerateXHeaders(empty))
|
||||
m.SetVersion(refstest.GenerateVersion(empty))
|
||||
m.SetStatus(statustest.Status(empty))
|
||||
|
||||
if withOrigin {
|
||||
m.SetOrigin(generateResponseMetaHeader(empty, false))
|
||||
|
|
|
@ -3,6 +3,7 @@ package session
|
|||
import (
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/acl"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/status"
|
||||
)
|
||||
|
||||
type CreateRequestBody struct {
|
||||
|
@ -105,6 +106,8 @@ type ResponseMetaHeader struct {
|
|||
xHeaders []*XHeader
|
||||
|
||||
origin *ResponseMetaHeader
|
||||
|
||||
status *status.Status
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -608,6 +611,39 @@ func (r *ResponseMetaHeader) SetOrigin(v *ResponseMetaHeader) {
|
|||
}
|
||||
}
|
||||
|
||||
// GetStatus returns response status.
|
||||
func (r *ResponseMetaHeader) GetStatus() *status.Status {
|
||||
if r != nil {
|
||||
return r.status
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetStatus sets response status.
|
||||
func (r *ResponseMetaHeader) SetStatus(v *status.Status) {
|
||||
if r != nil {
|
||||
r.status = v
|
||||
}
|
||||
}
|
||||
|
||||
// SetStatus sets status of the message which can carry ResponseMetaHeader.
|
||||
//
|
||||
// Sets status field on the "highest" level of meta headers.
|
||||
// If meta header is missing in message, it is allocated.
|
||||
func SetStatus(msg interface {
|
||||
GetMetaHeader() *ResponseMetaHeader
|
||||
SetMetaHeader(*ResponseMetaHeader)
|
||||
}, st *status.Status) {
|
||||
meta := msg.GetMetaHeader()
|
||||
if meta == nil {
|
||||
meta = new(ResponseMetaHeader)
|
||||
msg.SetMetaHeader(meta)
|
||||
}
|
||||
|
||||
meta.SetStatus(st)
|
||||
}
|
||||
|
||||
func (c *ObjectSessionContext) sessionTokenContext() {}
|
||||
|
||||
func (c *ObjectSessionContext) GetVerb() ObjectSessionVerb {
|
||||
|
|
Loading…
Reference in a new issue