rclone/vendor/storj.io/drpc/drpccache/README.md
Caleb Case e7bd392a69 backend/tardigrade: Upgrade to uplink v1.0.6
This fixes an important bug with listing that affects users with more
than 500 objects in a listing operation.
2020-05-29 18:00:08 +01:00

75 lines
1.3 KiB
Markdown

# package drpccache
`import "storj.io/drpc/drpccache"`
Package drpccache implements per stream cache for drpc.
## Usage
#### func WithContext
```go
func WithContext(parent context.Context, cache *Cache) context.Context
```
WithContext returns a context with the value cache associated with the context.
#### type Cache
```go
type Cache struct {
}
```
Cache is a per stream cache.
#### func FromContext
```go
func FromContext(ctx context.Context) *Cache
```
FromContext returns a cache from a context.
Example usage:
cache := drpccache.FromContext(stream.Context())
if cache != nil {
value := cache.LoadOrCreate("initialized", func() (interface{}) {
return 42
})
}
#### func New
```go
func New() *Cache
```
New returns a new cache.
#### func (*Cache) Clear
```go
func (cache *Cache) Clear()
```
Clear clears the cache.
#### func (*Cache) Load
```go
func (cache *Cache) Load(key interface{}) interface{}
```
Load returns the value with the given key.
#### func (*Cache) LoadOrCreate
```go
func (cache *Cache) LoadOrCreate(key interface{}, fn func() interface{}) interface{}
```
LoadOrCreate returns the value with the given key.
#### func (*Cache) Store
```go
func (cache *Cache) Store(key, value interface{})
```
Store sets the value at a key.