Documentation ¶
Index ¶
- Variables
- func AddResponseMetadata(existing *v1.ResponseMeta, incoming *v1.ResponseMeta)
- func CheckDepth(ctx context.Context, req HasMetadata) error
- type Check
- type CollectingDispatchStream
- type Dispatcher
- type Expand
- type HandlingDispatchStream
- type HasMetadata
- type Lookup
- type LookupSubjects
- type LookupSubjectsStream
- type ReachableResources
- type ReachableResourcesStream
- type ReadyState
- type Stream
- type WrappedDispatchStream
Constants ¶
This section is empty.
Variables ¶
var ErrMaxDepth = errors.New("max depth exceeded: this usually indicates a recursive or too deep data dependency")
ErrMaxDepth is returned from CheckDepth when the max depth is exceeded.
Functions ¶
func AddResponseMetadata ¶ added in v1.12.0
func AddResponseMetadata(existing *v1.ResponseMeta, incoming *v1.ResponseMeta)
AddResponseMetadata adds the metadata found in the incoming metadata to the existing metadata, *modifying it in place*.
func CheckDepth ¶
func CheckDepth(ctx context.Context, req HasMetadata) error
CheckDepth returns ErrMaxDepth if there is insufficient depth remaining to dispatch.
Types ¶
type Check ¶
type Check interface { // DispatchCheck submits a single check request and returns its result. DispatchCheck(ctx context.Context, req *v1.DispatchCheckRequest) (*v1.DispatchCheckResponse, error) }
Check interface describes just the methods required to dispatch check requests.
type CollectingDispatchStream ¶ added in v1.8.0
type CollectingDispatchStream[T any] struct { // contains filtered or unexported fields }
CollectingDispatchStream is a dispatch stream that collects results in memory.
func NewCollectingDispatchStream ¶ added in v1.8.0
func NewCollectingDispatchStream[T any](ctx context.Context) *CollectingDispatchStream[T]
NewCollectingDispatchStream creates a new CollectingDispatchStream.
func (*CollectingDispatchStream[T]) Context ¶ added in v1.8.0
func (s *CollectingDispatchStream[T]) Context() context.Context
func (*CollectingDispatchStream[T]) Publish ¶ added in v1.8.0
func (s *CollectingDispatchStream[T]) Publish(result T) error
func (*CollectingDispatchStream[T]) Results ¶ added in v1.8.0
func (s *CollectingDispatchStream[T]) Results() []T
type Dispatcher ¶
type Dispatcher interface { Check Expand Lookup ReachableResources LookupSubjects // Close closes the dispatcher. Close() error // ReadyState returns true when dispatcher is able to respond to requests ReadyState() ReadyState }
Dispatcher interface describes a method for passing subchecks off to additional machines.
type Expand ¶
type Expand interface { // DispatchExpand submits a single expand request and returns its result. DispatchExpand(ctx context.Context, req *v1.DispatchExpandRequest) (*v1.DispatchExpandResponse, error) }
Expand interface describes just the methods required to dispatch expand requests.
type HandlingDispatchStream ¶ added in v1.12.0
type HandlingDispatchStream[T any] struct { // contains filtered or unexported fields }
HandlingDispatchStream is a dispatch stream that executes a handler for each item published. It uses an internal mutex to ensure it is thread safe.
func (*HandlingDispatchStream[T]) Context ¶ added in v1.12.0
func (s *HandlingDispatchStream[T]) Context() context.Context
func (*HandlingDispatchStream[T]) Publish ¶ added in v1.12.0
func (s *HandlingDispatchStream[T]) Publish(result T) error
type HasMetadata ¶
type HasMetadata interface { zerolog.LogObjectMarshaler GetMetadata() *v1.ResolverMeta }
HasMetadata is an interface for requests containing resolver metadata.
type Lookup ¶
type Lookup interface { // DispatchLookup submits a single lookup request and returns its result. DispatchLookup(ctx context.Context, req *v1.DispatchLookupRequest) (*v1.DispatchLookupResponse, error) }
Lookup interface describes just the methods required to dispatch lookup requests.
type LookupSubjects ¶ added in v1.12.0
type LookupSubjects interface { // DispatchLookupSubjects submits a single lookup subjects request, writing its results to the specified stream. DispatchLookupSubjects( req *v1.DispatchLookupSubjectsRequest, stream LookupSubjectsStream, ) error }
LookupSubjects interface describes just the methods required to dispatch lookup subjects requests.
type LookupSubjectsStream ¶ added in v1.12.0
type LookupSubjectsStream = Stream[*v1.DispatchLookupSubjectsResponse]
LookupSubjectsStream is an alias for the stream to which found subjects will be written.
type ReachableResources ¶ added in v1.8.0
type ReachableResources interface { // DispatchReachableResources submits a single reachable resources request, writing its results to the specified stream. DispatchReachableResources( req *v1.DispatchReachableResourcesRequest, stream ReachableResourcesStream, ) error }
ReachableResources interface describes just the methods required to dispatch reachable resources requests.
type ReachableResourcesStream ¶ added in v1.8.0
type ReachableResourcesStream = Stream[*v1.DispatchReachableResourcesResponse]
ReachableResourcesStream is an alias for the stream to which reachable resources will be written.
type ReadyState ¶ added in v1.18.1
type ReadyState struct { // Message is a human-readable status message for the current state. Message string // IsReady indicates whether the datastore is ready. IsReady bool }
ReadyState represents the ready state of the dispatcher.
type Stream ¶ added in v1.8.0
type Stream[T any] interface { // Publish publishes the result to the stream. Publish(T) error // Context returns the context for the stream. Context() context.Context }
Stream defines the interface generically matching a streaming dispatch response.
func NewHandlingDispatchStream ¶ added in v1.12.0
func NewHandlingDispatchStream[T any](ctx context.Context, processor func(result T) error) Stream[T]
NewHandlingDispatchStream returns a new handling dispatch stream.
func StreamWithContext ¶ added in v1.8.0
StreamWithContext returns the given dispatch stream, wrapped to return the given context.
func WrapGRPCStream ¶ added in v1.8.0
WrapGRPCStream wraps a gRPC result stream with a concurrent-safe dispatch stream. This is necessary because gRPC response streams are *not concurrent safe*. See: https://groups.google.com/g/grpc-io/c/aI6L6M4fzQ0?pli=1
type WrappedDispatchStream ¶ added in v1.8.0
type WrappedDispatchStream[T any] struct { Stream Stream[T] Ctx context.Context Processor func(result T) (T, bool, error) }
WrappedDispatchStream is a dispatch stream that wraps another dispatch stream, and performs an operation on each result before puppeting back up to the parent stream.
func (*WrappedDispatchStream[T]) Context ¶ added in v1.8.0
func (s *WrappedDispatchStream[T]) Context() context.Context
func (*WrappedDispatchStream[T]) Publish ¶ added in v1.8.0
func (s *WrappedDispatchStream[T]) Publish(result T) error