package response import ( "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs" "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/netmap" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/util" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/version" ) // Service represents universal v2 service // that sets response meta header values. type Service struct { version refs.Version state netmap.State } // NewService creates, initializes and returns Service instance. func NewService(nmState netmap.State) *Service { s := &Service{state: nmState} version.Current().WriteToV2(&s.version) return s } // SetMeta sets adds meta-header to resp. func (s *Service) SetMeta(resp util.ResponseMessage) { meta := new(session.ResponseMetaHeader) meta.SetVersion(&s.version) meta.SetTTL(1) // FIXME: #1160 TTL must be calculated meta.SetEpoch(s.state.CurrentEpoch()) if origin := resp.GetMetaHeader(); origin != nil { // FIXME: #1160 what if origin is set by local server? meta.SetOrigin(origin) } resp.SetMetaHeader(meta) }