access

package
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2024 License: Apache-2.0 Imports: 8 Imported by: 127

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApiAccessBuilder added in v0.4.16

type ApiAccessBuilder struct {
	// contains filtered or unexported fields
}

ApiAccessBuilder is a helper object allowing constructing various API-based and resource-oriented access objects without explicit resource type.

func (*ApiAccessBuilder) GetDescriptor added in v0.4.16

func (re *ApiAccessBuilder) GetDescriptor() resource.Descriptor

func (*ApiAccessBuilder) MakeApiAccess added in v0.4.16

func (re *ApiAccessBuilder) MakeApiAccess(grpcConn grpc.ClientConnInterface) resource.Access

func (*ApiAccessBuilder) MakeQueryWatcher added in v0.6.0

func (re *ApiAccessBuilder) MakeQueryWatcher(id int, grpcConn grpc.ClientConnInterface, params *QueryWatcherConfigParams, ch chan QueryWatcherEvent) QueryWatcher

func (*ApiAccessBuilder) MakeQueryWatcherEvent added in v1.0.0

func (re *ApiAccessBuilder) MakeQueryWatcherEvent(evtId int, changes resource.ResourceChangeList, isReset, isLostSync, isCurrent bool, snapshotSize int64) QueryWatcherEvent

func (*ApiAccessBuilder) MakeWatcher added in v0.4.16

func (re *ApiAccessBuilder) MakeWatcher(grpcConn grpc.ClientConnInterface, params *WatcherConfigParams, filters ...WatcherFilterParams) Watcher

func (*ApiAccessBuilder) MakeWatcherFilterParams added in v0.4.16

func (re *ApiAccessBuilder) MakeWatcherFilterParams(filter resource.Filter, parentName resource.Name) WatcherFilterParams

type ApiAccessConstructor added in v0.4.16

type ApiAccessConstructor func(grpcConn grpc.ClientConnInterface) resource.Access

type QueryWatcher added in v0.6.0

type QueryWatcher interface {
	QueryWatcher()
	Run(ctx context.Context) error
}

type QueryWatcherConfigParams added in v0.6.0

type QueryWatcherConfigParams struct {
	Parent           resource.Name
	Filter           resource.Filter
	Cursor           resource.Cursor
	FieldMask        object.FieldMask
	OrderBy          resource.OrderBy
	WatchType        watch_type.WatchType
	View             view.View
	ChunkSize        int
	PageSize         int
	StartingTime     *timestamppb.Timestamp
	RecoveryDeadline time.Duration
	RetryTimeout     time.Duration
}

type QueryWatcherConstructor added in v0.6.0

type QueryWatcherConstructor func(id int, grpcConn grpc.ClientConnInterface, params *QueryWatcherConfigParams, ch chan QueryWatcherEvent) QueryWatcher

type QueryWatcherEvent added in v0.6.0

type QueryWatcherEvent interface {
	GetWatcherIdentifier() int
	GetChanges() resource.ResourceChangeList
	IsReset() bool
	IsLostSync() bool
	IsSync() bool
	GetSnapshotSize() int64
	HasSnapshotSize() bool
}

type QueryWatcherEventConstructor added in v1.0.0

type QueryWatcherEventConstructor func(evtId int, changes resource.ResourceChangeList, isReset, isLostSync, isCurrent bool, snapshotSize int64) QueryWatcherEvent

type Registry added in v0.4.16

type Registry struct {
	// contains filtered or unexported fields
}

Registry contains all known builders of resource-oriented API access objects. It is responsibility of developer to import all resource access packages in order to ensure FindApiAccessBuilder does not return nil object.

func GetRegistry added in v0.4.16

func GetRegistry() *Registry

GetRegistry returns global registry instance

func (*Registry) FindApiAccessBuilder added in v0.4.16

func (r *Registry) FindApiAccessBuilder(descriptor resource.Descriptor) *ApiAccessBuilder

func (*Registry) RegisterApiAccessConstructor added in v0.4.16

func (r *Registry) RegisterApiAccessConstructor(descriptor resource.Descriptor, constructor ApiAccessConstructor)

func (*Registry) RegisterQueryWatcherConstructor added in v0.6.0

func (r *Registry) RegisterQueryWatcherConstructor(descriptor resource.Descriptor, constructor QueryWatcherConstructor)

func (*Registry) RegisterQueryWatcherEventConstructor added in v1.0.0

func (r *Registry) RegisterQueryWatcherEventConstructor(descriptor resource.Descriptor, constructor QueryWatcherEventConstructor)

func (*Registry) RegisterWatcherConstructor added in v0.4.16

func (r *Registry) RegisterWatcherConstructor(descriptor resource.Descriptor, constructor WatcherConstructor)

func (*Registry) RegisterWatcherFilterConstructor added in v0.4.16

func (r *Registry) RegisterWatcherFilterConstructor(descriptor resource.Descriptor, constructor WatcherFilterConstructor)

type Watcher added in v0.4.16

type Watcher interface {
	// IEvents returns an abstract channel of WatcherEvent instances.
	// It must not be called if its strong-typed version Events() was ever called.
	IEvents() <-chan WatcherEvent

	// InSync informs if watched collection is in sync.
	InSync() bool

	// GetIFilters returns all currently active filters.
	GetIFilters() []WatcherFilterParams

	// ResetIFilters resets active filters. It will trigger LostSync event.
	// It can be called anytime during watcher runtime.
	// Watcher will no longer send events related to old filters, but there
	// may be still old events already in the events queue. It is necessary to check
	// integer number (filter versions) returned by this function and compare
	// with filter version returned by any WatcherEvent.
	ResetIFilters(ctx context.Context, filters ...WatcherFilterParams) (int32, error)

	// Run starts watcher.
	Run(ctx context.Context) error
}

Watcher is a high-level component using watch collection API method. Unlike raw watch, Watcher is capable of managing multiple queries at once (achieving OR filter, not possible via raw API). It also handles in transparent way brief reconnections, hiding all recovery implementation details. It only communicates LostSync/Resync events to users in case of long-term connection failures. Although each Watcher implements this interface (allowing users to develop applications in abstraction of type if they need), each struct also has strong-typed methods specific to their underlying type

type WatcherConfigBase added in v0.4.16

type WatcherConfigBase struct {
	// Event buffer size
	WatcherEventBufferSize int

	// Time that watcher will wait before attempting to establish connection with server in the event of failure like
	// connectivity lost. This does not generate any event downstream. IF you need to receive notification about failure,
	// see RecoveryDeadline
	RetryTimeout time.Duration

	// In case of single failure of connectivity with server watcher will make attempts to recover
	// without communicating LostSync event - unless recovery exceeds specified RecoveryDeadline.
	// If watcher manages to recover eventually after deadline, next event will come with Resync flag set.
	// If you dont want to have any lost sync events and you want watcher handle it, set value to 0.
	RecoveryDeadline time.Duration
}

WatcherConfigBase is a base struct for all actual implementations of WatcherConfig

func NewWatcherConfigBase added in v0.4.16

func NewWatcherConfigBase() *WatcherConfigBase

type WatcherConfigParams added in v0.4.16

type WatcherConfigParams struct {
	CfgBase   *WatcherConfigBase
	FieldMask object.FieldMask
	OrderBy   resource.OrderBy
	WatchType watch_type.WatchType
	View      view.View
	ChunkSize int
}

type WatcherConstructor added in v0.4.16

type WatcherConstructor func(grpcConn grpc.ClientConnInterface, params *WatcherConfigParams, filters ...WatcherFilterParams) Watcher

type WatcherEvent

type WatcherEvent interface {
	// LostSync communicates issue like network connectivity problem
	LostSync() bool

	// Resync returns true if changes contains all data in current snapshot (Added changes)
	Resync() bool

	// GetRawAt returns change at given index, or nil if outside bounds
	GetRawAt(index int) WatcherEventChange

	// Length returns size of the change (always 0 if LostSync is true)
	Length() int

	// AppendRawChange adds additional change. Panic for incorrect type
	AppendRawChange(change WatcherEventChange)

	// FilterVersion returns version of filter that generated this event.
	FilterVersion() int32
}

WatcherEvent informs user of Watcher about events & changes happening on observed collection.

type WatcherEventBase added in v0.4.16

type WatcherEventBase struct {
	// contains filtered or unexported fields
}

WatcherEventBase is a base struct for all actual implementations of WatcherEvent.

func NewWatcherEventBase added in v0.4.16

func NewWatcherEventBase(resync bool, filterVer int32) WatcherEventBase

func NewWatcherEventBaseLostSync added in v0.4.16

func NewWatcherEventBaseLostSync(filterVer int32) WatcherEventBase

func (WatcherEventBase) FilterVersion added in v0.8.2

func (eb WatcherEventBase) FilterVersion() int32

func (WatcherEventBase) LostSync added in v0.4.16

func (eb WatcherEventBase) LostSync() bool

func (WatcherEventBase) Resync added in v0.4.16

func (eb WatcherEventBase) Resync() bool

type WatcherEventChange

type WatcherEventChange interface {
	// IsAdd tells if resource is newly added to the observed collection
	IsAdd() bool

	// IsModify tells if resource has been modified within observed collection
	IsModify() bool

	// IsDelete tells if resource has been removed from collection.
	IsDelete() bool

	// GetRawName returns name regardless of type
	GetRawName() resource.Name

	// GetRawAdded returns non-nil resource if IsAdd returns true
	GetRawAdded() resource.Resource

	// GetRawPrevious returns non-nil resource if IsModify returns true
	GetRawPrevious() resource.Resource

	// GetRawDeleted returns non-nil resource if IsDelete returns true
	GetRawDeleted() resource.Resource

	// GetRawCurrent returns non-nil resource if IsAdd or IsModify returns true
	GetRawCurrent() resource.Resource
}

WatcherEventChange is a higher-level object built on top of API resource.ResourceChange object decorated with extra information like previous resource (in case of modify) or contents of deleted resource (in case of deletion).

type WatcherFilterConstructor added in v0.4.16

type WatcherFilterConstructor func(filter resource.Filter, parentName resource.Name) WatcherFilterParams

type WatcherFilterParams added in v0.4.16

type WatcherFilterParams interface {
	GetIParentName() resource.Name
	GetIFilter() resource.Filter
}

WatcherFilterParams is a wrap over resource filter and parent. Parent may not apply (by always nil) if resource does not have any parent.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL