Documentation
¶
Index ¶
- func NewBufferedChannel[V any](initBufferSize int) *bufferedChannel[V]
- func WaitFirstSynced[ObjectContent any](stopCh <-chan struct{}, informer Informer[ObjectContent]) bool
- func WaitFirstSyncedWithTimeout[ObjectContent any](stopCh <-chan struct{}, timeout time.Duration, ...) bool
- type Clock
- type Config
- type Event
- type EventDispatcher
- type EventHandler
- type EventHandlerFunc
- type EventType
- type Informer
- type Interface
- type Lister
- type Object
- type ObjectMeta
- type TypedEventHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewBufferedChannel ¶
func WaitFirstSynced ¶
Types ¶
type Config ¶
type Config struct {
ResyncPeriod time.Duration `validate:"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)
// Clock use to mock time-related functions
// can be nil, will use realClock
Clock Clock
}
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 EventHandlerFunc ¶
func (EventHandlerFunc[ObjectContent]) Handle ¶
func (ehf EventHandlerFunc[ObjectContent]) Handle(event Event[ObjectContent])
type Informer ¶
type Informer[ObjectContent any] interface { Run(ctx context.Context) // LastSyncTime return last successful sync time, update after List returned LastSyncTime() time.Time Interface() Interface[ObjectContent] Lister[ObjectContent] // todo[maybe]: Indexer AddHandler(handler EventHandler[ObjectContent]) (deleteHandler func()) }
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 Object ¶
type Object[Content any] struct { ObjectMeta Content Content }
type ObjectMeta ¶
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])
Click to show internal directories.
Click to hide internal directories.