37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
|
package cachetype
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/hashicorp/consul/agent/cache"
|
||
|
)
|
||
|
|
||
|
// RegisterOptionsBlockingRefresh can be embedded into a struct to implement
|
||
|
// part of the agent/cache.Type interface.
|
||
|
// When embedded into a struct it identifies the cache type as one which
|
||
|
// supports blocking, and uses refresh to keep the cache fresh.
|
||
|
type RegisterOptionsBlockingRefresh struct{}
|
||
|
|
||
|
func (r RegisterOptionsBlockingRefresh) RegisterOptions() cache.RegisterOptions {
|
||
|
return cache.RegisterOptions{
|
||
|
// Maintain a blocking query, retry dropped connections quickly
|
||
|
Refresh: true,
|
||
|
SupportsBlocking: true,
|
||
|
RefreshTimer: 0 * time.Second,
|
||
|
RefreshTimeout: 10 * time.Minute,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// RegisterOptionsNoRefresh can be embedded into a struct to implement
|
||
|
// part of the agent/cache.Type interface.
|
||
|
// When embedded into a struct it identifies the cache type as one which
|
||
|
// does not support blocking, and should not be refreshed.
|
||
|
type RegisterOptionsNoRefresh struct{}
|
||
|
|
||
|
func (r RegisterOptionsNoRefresh) RegisterOptions() cache.RegisterOptions {
|
||
|
return cache.RegisterOptions{
|
||
|
Refresh: false,
|
||
|
SupportsBlocking: false,
|
||
|
}
|
||
|
}
|