model

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrPayloadIsEmpty = fmt.Errorf("payload is empty")

Functions

func MatchRule added in v0.9.3

func MatchRule(cfg config.Config, path []byte) *config.Rule

func WetherAnErrIsTheRuleNotFound added in v1.2.0

func WetherAnErrIsTheRuleNotFound(err error) bool

Types

type CacheItem added in v1.2.0

type CacheItem interface {
	Rule() *config.Rule
	MapKey() uint64
	ShardKey() uint64
	Fingerprint() [16]byte
	IsSameFingerprint(another [16]byte) bool
	SwapPayloads(another *Entry)
	IsSamePayload(another *Entry) bool
	SetPayload(req *fasthttp.Request, resp *fasthttp.Response) *Entry
	Payload() (req *fasthttp.Request, resp *fasthttp.Response, releaser Releaser, err error)
	ShouldBeRefreshed(cfg config.Config) bool
	LruListElement() *list.Element[*Entry]
	SetLruListElement(el *list.Element[*Entry])
	ToBytes() (data []byte, releaseFn func())
	RefreshedAt() int64
	Weight() int64
}

type Entry added in v0.9.3

type Entry struct {
	// contains filtered or unexported fields
}

func EntryFromBytes added in v0.9.3

func EntryFromBytes(data []byte, cfg config.Config) (*Entry, error)

func NewEntry added in v1.2.0

func NewEntry(cfg config.Config, r *fasthttp.RequestCtx) (*Entry, error)

func NewEntryWithPayload added in v1.2.0

func NewEntryWithPayload(cfg config.Config, req *fasthttp.Request, resp *fasthttp.Response) (*Entry, error)

func (*Entry) DumpBuffer added in v1.0.1

func (e *Entry) DumpBuffer(r *fasthttp.RequestCtx)

func (*Entry) DumpPayload added in v0.9.3

func (e *Entry) DumpPayload()

func (*Entry) Fingerprint added in v0.9.3

func (e *Entry) Fingerprint() [16]byte

func (*Entry) Init added in v0.9.3

func (e *Entry) Init() *Entry

func (*Entry) IsSameFingerprint added in v0.9.3

func (e *Entry) IsSameFingerprint(another [16]byte) bool

func (*Entry) IsSamePayload added in v1.0.1

func (e *Entry) IsSamePayload(another *Entry) bool

func (*Entry) LruListElement added in v0.9.3

func (e *Entry) LruListElement() *list.Element[*Entry]

func (*Entry) MapKey added in v0.9.3

func (e *Entry) MapKey() uint64

func (*Entry) Payload added in v0.9.3

func (e *Entry) Payload() (req *fasthttp.Request, resp *fasthttp.Response, releaser Releaser, err error)

Payload decompresses the entire payload and unpacks it into fields.

func (*Entry) RefreshedAt added in v1.2.0

func (e *Entry) RefreshedAt() int64

func (*Entry) Rule added in v0.9.3

func (e *Entry) Rule() *config.Rule

func (*Entry) SetLruListElement added in v0.9.3

func (e *Entry) SetLruListElement(el *list.Element[*Entry])

func (*Entry) SetMapKeyForTests added in v1.2.0

func (e *Entry) SetMapKeyForTests(key uint64) *Entry

SetMapKeyForTests is really dangerous - must be used exclusively in tests.

func (*Entry) SetPayload added in v0.9.3

func (e *Entry) SetPayload(req *fasthttp.Request, resp *fasthttp.Response) *Entry

SetPayload packs and gzip-compresses the entire payload: Path, Query, QueryHeaders, StatusCode, ResponseHeaders, Body.

func (*Entry) ShardKey added in v0.9.3

func (e *Entry) ShardKey() uint64

func (*Entry) ShouldBeRefreshed added in v0.9.3

func (e *Entry) ShouldBeRefreshed(cfg config.Config) bool

ShouldBeRefreshed implements probabilistic refresh logic ("beta" algorithm). Returns true if the entry is stale and, with a probability proportional to its staleness, should be refreshed now.

func (*Entry) SwapPayloads added in v1.0.1

func (e *Entry) SwapPayloads(another *Entry)

func (*Entry) ToBytes added in v0.9.3

func (e *Entry) ToBytes() (data []byte, releaseFn func())

func (*Entry) Weight added in v0.9.3

func (e *Entry) Weight() int64

type Releaser added in v0.9.3

type Releaser func(request *fasthttp.Request, response *fasthttp.Response)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL