Documentation
¶
Index ¶
- func MatchRule(cfg *config.Cache, path []byte) *config.Rule
- func MatchRuleStr(cfg *config.Cache, path string) *config.Rule
- type Entry
- func EntryFromBytes(data []byte, cfg *config.Cache, backend repository.Backender) (*Entry, error)
- func NewEntryFastHttp(cfg *config.Cache, r *fasthttp.RequestCtx) (*Entry, error)
- func NewEntryFromField(key uint64, shard uint64, fingerprint [16]byte, payload []byte, ...) *Entry
- func NewEntryManual(cfg *config.Cache, path, query []byte, headers *[][2][]byte, ...) (*Entry, error)
- func NewEntryNetHttp(cfg *config.Cache, r *http.Request) (*Entry, error)
- func (e *Entry) Acquire(expectedVersion uint64) bool
- func (e *Entry) DumpPayload()
- func (e *Entry) Fingerprint() [16]byte
- func (e *Entry) GetFilteredAndSortedKeyHeadersNetHttp(r *http.Request) (kvPairs *[][2][]byte, releaseFn func(*[][2][]byte))
- func (e *Entry) GetFilteredAndSortedKeyQueriesNetHttp(r *http.Request) (kvPairs *[][2][]byte, releaseFn func(*[][2][]byte))
- func (e *Entry) Init() *Entry
- func (e *Entry) IsCompressed() bool
- func (e *Entry) IsSameEntry(another *Entry) bool
- func (e *Entry) IsSameFingerprint(another [16]byte) bool
- func (e *Entry) LruListElement() *list.Element[*VersionPointer]
- func (e *Entry) MapKey() uint64
- func (e *Entry) Payload() (path []byte, query []byte, queryHeaders *[][2][]byte, ...)
- func (e *Entry) PayloadBytes() []byte
- func (e *Entry) Release()
- func (e *Entry) Remove()
- func (e *Entry) Revalidate() error
- func (e *Entry) Rule() *config.Rule
- func (e *Entry) SetLruListElement(el *list.Element[*VersionPointer])
- func (e *Entry) SetMapKey(key uint64) *Entry
- func (e *Entry) SetPayload(path, query []byte, queryHeaders *[][2][]byte, headers *[][2][]byte, ...)
- func (e *Entry) SetRevalidator(revalidator Revalidator)
- func (e *Entry) ShardKey() uint64
- func (e *Entry) ShouldBeRefreshed(cfg *config.Cache) bool
- func (e *Entry) ToBytes() (data []byte, releaseFn func())
- func (e *Entry) UpdateAt() int64
- func (e *Entry) Version() uint64
- func (e *Entry) Weight() int64
- type Releaser
- type Revalidator
- type VersionPointer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Entry ¶ added in v0.9.3
type Entry struct {
// contains filtered or unexported fields
}
Entry is the packed request+response payload
func EntryFromBytes ¶ added in v0.9.3
func NewEntryFastHttp ¶ added in v0.9.3
NewEntryFastHttp accepts path, query and request headers as bytes slices.
func NewEntryFromField ¶ added in v0.9.3
func NewEntryManual ¶ added in v0.9.3
func NewEntryNetHttp ¶ added in v0.9.3
NewEntryNetHttp accepts path, query and request headers as bytes slices.
func (*Entry) DumpPayload ¶ added in v0.9.3
func (e *Entry) DumpPayload()
func (*Entry) Fingerprint ¶ added in v0.9.3
func (*Entry) GetFilteredAndSortedKeyHeadersNetHttp ¶ added in v0.9.3
func (*Entry) GetFilteredAndSortedKeyQueriesNetHttp ¶ added in v0.9.3
func (*Entry) IsCompressed ¶ added in v0.9.3
func (*Entry) IsSameEntry ¶ added in v0.9.5
func (*Entry) IsSameFingerprint ¶ added in v0.9.3
func (*Entry) LruListElement ¶ added in v0.9.3
func (e *Entry) LruListElement() *list.Element[*VersionPointer]
LruListElement returns the LRU list element pointer (for LRU cache management).
func (*Entry) Payload ¶ added in v0.9.3
func (e *Entry) Payload() ( path []byte, query []byte, queryHeaders *[][2][]byte, responseHeaders *[][2][]byte, body []byte, status int, releaseFn func(q, h *[][2][]byte), err error, )
Payload decompresses the entire payload and unpacks it into fields.
func (*Entry) PayloadBytes ¶ added in v0.9.3
func (*Entry) Revalidate ¶ added in v0.9.3
Revalidate calls the revalidator closure to fetch fresh data and updates the timestamp.
func (*Entry) SetLruListElement ¶ added in v0.9.3
func (e *Entry) SetLruListElement(el *list.Element[*VersionPointer])
SetLruListElement sets the LRU list element pointer.
func (*Entry) SetMapKey ¶ added in v0.9.3
SetMapKey is really dangerous - must be used exclusively in tests.
func (*Entry) SetPayload ¶ added in v0.9.3
func (e *Entry) SetPayload( path, query []byte, queryHeaders *[][2][]byte, headers *[][2][]byte, body []byte, status int, )
SetPayload packs and gzip-compresses the entire payload: Path, Query, QueryHeaders, StatusCode, ResponseHeaders, Body.
func (*Entry) SetRevalidator ¶ added in v0.9.3
func (e *Entry) SetRevalidator(revalidator Revalidator)
func (*Entry) ShouldBeRefreshed ¶ added in v0.9.3
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.
type Revalidator ¶ added in v0.9.3
type VersionPointer ¶ added in v0.9.5
type VersionPointer struct {
*Entry
// contains filtered or unexported fields
}
func NewVersionPointer ¶ added in v0.9.5
func NewVersionPointer(entry *Entry) *VersionPointer
func (*VersionPointer) Acquire ¶ added in v0.9.5
func (v *VersionPointer) Acquire() bool
func (*VersionPointer) ShouldBeRefreshed ¶ added in v0.9.5
func (v *VersionPointer) ShouldBeRefreshed(cfg *config.Cache) bool
func (*VersionPointer) Version ¶ added in v0.9.5
func (v *VersionPointer) Version() uint64