package v2 import ( "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session" eaclSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/eacl" ) type XHeaderSource interface { GetXHeaders() []eaclSDK.Header } type requestXHeaderSource struct { req Request } func NewRequestXHeaderSource(req Request) XHeaderSource { return requestXHeaderSource{req: req} } type responseXHeaderSource struct { resp Response req Request } func NewResponseXHeaderSource(resp Response, req Request) XHeaderSource { return responseXHeaderSource{resp: resp, req: req} } func (s requestXHeaderSource) GetXHeaders() []eaclSDK.Header { ln := 0 for meta := s.req.GetMetaHeader(); meta != nil; meta = meta.GetOrigin() { ln += len(meta.GetXHeaders()) } res := make([]eaclSDK.Header, 0, ln) for meta := s.req.GetMetaHeader(); meta != nil; meta = meta.GetOrigin() { x := meta.GetXHeaders() for i := range x { res = append(res, (xHeader)(x[i])) } } return res } func (s responseXHeaderSource) GetXHeaders() []eaclSDK.Header { ln := 0 xHdrs := make([][]session.XHeader, 0) for meta := s.req.GetMetaHeader(); meta != nil; meta = meta.GetOrigin() { x := meta.GetXHeaders() ln += len(x) xHdrs = append(xHdrs, x) } res := make([]eaclSDK.Header, 0, ln) for i := range xHdrs { for j := range xHdrs[i] { res = append(res, xHeader(xHdrs[i][j])) } } return res }