informer

package
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2022 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBufferedChannel

func NewBufferedChannel[V any](initBufferSize int) *bufferedChannel[V]

func WaitSynced added in v0.2.6

func WaitSynced[ObjectContent any](stopCh <-chan struct{}, informer Informer[ObjectContent]) bool

func WaitSyncedWithTimeout added in v0.2.6

func WaitSyncedWithTimeout[ObjectContent any](stopCh <-chan struct{}, timeout time.Duration, informer Informer[ObjectContent]) bool

Types

type Callback added in v0.2.6

type Callback[ObjectContent any] struct {
	OnCreate func(obj Object[ObjectContent])
	OnUpdate func(obj Object[ObjectContent])
	OnDelete func(meta ObjectMeta)
}

type Clock

type Clock interface {
	Now() time.Time
}

type Event

type Event[ObjectContent any] struct {
	Type EventType

	OldObject *Object[ObjectContent] // nil if create
	NewObject *Object[ObjectContent] // nil if delete
}

type EventDispatcher

type EventDispatcher[ObjectContent any] interface {
	Run(stopCh <-chan struct{})
	Push(event Event[ObjectContent])

	// should never call AddHandler and deleteHandler after Run
	AddHandler(handler EventHandler[ObjectContent]) (deleteHandler func())
}

func NewEventDispatcher

func NewEventDispatcher[ObjectContent any]() EventDispatcher[ObjectContent]

type EventHandler

type EventHandler[ObjectContent any] interface {
	Handle(event Event[ObjectContent])
}

type EventHandlerFunc

type EventHandlerFunc[ObjectContent any] func(event Event[ObjectContent])

func (EventHandlerFunc[ObjectContent]) Handle

func (ehf EventHandlerFunc[ObjectContent]) Handle(event Event[ObjectContent])

type EventType

type EventType string
const (
	CreateEvent EventType = "CREATE"
	UpdateEvent EventType = "UPDATE"
	DeleteEvent EventType = "DELETE"
)

type Informer

type Informer[ObjectContent any] interface {
	Run(ctx context.Context) error

	HasSynced() bool

	Lister[ObjectContent]

	// todo[maybe]: Indexer
	AddEventandler(handler EventHandler[ObjectContent]) (deleteHandler func())
}

func New

func New[ObjectContent any](lw ListAndWatch[ObjectContent]) (Informer[ObjectContent], error)

type Interface

type Interface[ObjectContent any] interface {
	Create(ctx context.Context, object Object[ObjectContent]) (Object[ObjectContent], error)

	// List return all objects
	List(ctx context.Context) ([]Object[ObjectContent], error)
	Get(ctx context.Context, name string) (Object[ObjectContent], error)

	Update(ctx context.Context, object Object[ObjectContent]) (Object[ObjectContent], error)

	Delete(ctx context.Context, name string) error
}

Interface is used to access remote resources. may implmented by HTTP API or MySQL, etc.

type ListAndWatch added in v0.2.6

type ListAndWatch[ObjectContent any] interface {
	List(ctx context.Context) ([]Object[ObjectContent], error)
	Watch(ctx context.Context, cb Callback[ObjectContent], watchingNotifyCh chan<- struct{}) error
}

type Lister

type Lister[ObjectContent any] interface {
	List() []*Object[ObjectContent]
	Get(name string) *Object[ObjectContent] // return nil, if not exist
}

type Object

type Object[Content any] struct {
	ObjectMeta

	Content Content
}

type ObjectMeta

type ObjectMeta struct {
	Name            string
	ResourceVersion string
}

type PollListAndWatch added in v0.2.6

type PollListAndWatch[ObjectContent any] struct {
	ListFunc func(ctx context.Context) ([]Object[ObjectContent], error) // required

	PollPeriod time.Duration // required

	// OnListError will be called when List error
	// it will block list
	// can be nil, will ignore list error
	OnListError func(err error, continuousCount int)
	// contains filtered or unexported fields
}

func (*PollListAndWatch[ObjectContent]) Create added in v0.2.6

func (p *PollListAndWatch[ObjectContent]) Create(obj Object[ObjectContent])

func (*PollListAndWatch[ObjectContent]) Delete added in v0.2.6

func (p *PollListAndWatch[ObjectContent]) Delete(meta ObjectMeta)

func (*PollListAndWatch[ObjectContent]) List added in v0.2.6

func (p *PollListAndWatch[ObjectContent]) List(ctx context.Context) ([]Object[ObjectContent], error)

func (*PollListAndWatch[ObjectContent]) Update added in v0.2.6

func (p *PollListAndWatch[ObjectContent]) Update(obj Object[ObjectContent])

func (*PollListAndWatch[ObjectContent]) Watch added in v0.2.6

func (p *PollListAndWatch[ObjectContent]) Watch(ctx context.Context, cb Callback[ObjectContent], watchingNotifyCh chan<- struct{}) error

type TypedEventHandler

type TypedEventHandler[ObjectContent any] struct {
	OnCreate EventHandlerFunc[ObjectContent]
	OnUpdate EventHandlerFunc[ObjectContent]
	OnDelete EventHandlerFunc[ObjectContent]
}

func (TypedEventHandler[ObjectContent]) Handle

func (teh TypedEventHandler[ObjectContent]) Handle(event Event[ObjectContent])

Jump to

Keyboard shortcuts

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