Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.7 KiB

package pbsubscribe
import (
"time"
"github.com/hashicorp/consul/acl"
)
// RequestDatacenter implements structs.RPCInfo
func (req *SubscribeRequest) RequestDatacenter() string {
return req.Datacenter
}
// IsRead implements structs.RPCInfo
func (req *SubscribeRequest) IsRead() bool {
return true
}
// AllowStaleRead implements structs.RPCInfo
func (req *SubscribeRequest) AllowStaleRead() bool {
return true
}
// TokenSecret implements structs.RPCInfo
func (req *SubscribeRequest) TokenSecret() string {
return req.Token
}
// SetTokenSecret implements structs.RPCInfo
func (req *SubscribeRequest) SetTokenSecret(token string) {
req.Token = token
}
// HasTimedOut implements structs.RPCInfo
func (req *SubscribeRequest) HasTimedOut(start time.Time, rpcHoldTimeout, maxQueryTime, defaultQueryTime time.Duration) (bool, error) {
return time.Since(start) > req.Timeout(rpcHoldTimeout, maxQueryTime, defaultQueryTime), nil
}
// Timeout implements structs.RPCInfo
func (req *SubscribeRequest) Timeout(rpcHoldTimeout, maxQueryTime, defaultQueryTime time.Duration) time.Duration {
return rpcHoldTimeout
}
// EnterpriseMeta returns the EnterpriseMeta encoded in the request's Subject.
func (req *SubscribeRequest) EnterpriseMeta() acl.EnterpriseMeta {
if req.GetWildcardSubject() {
// Note: EnterpriseMeta is ignored for the wildcard subject (as it will
// receive all events in the topic regardless of partition, namespace etc).
return acl.EnterpriseMeta{}
}
if sub := req.GetNamedSubject(); sub != nil {
return acl.NewEnterpriseMetaWithPartition(sub.Partition, sub.Namespace)
}
// Deprecated top-level Partition and Namespace fields.
return acl.NewEnterpriseMetaWithPartition(req.Partition, req.Namespace)
}