Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseProcessor ¶
type BaseProcessor struct {
// contains filtered or unexported fields
}
BaseProcessor provoides implementation to set and get next processor. It can gracefully handle the case where the next processor doesn't exist.
func (*BaseProcessor) Next ¶
func (p *BaseProcessor) Next() Interface
Next returns the next processor otherwise it will return a no-op processor so that caller doesn't need to worry about calling a nil processor.
func (*BaseProcessor) WithNext ¶
func (p *BaseProcessor) WithNext(n ChainableProcessor) ChainableProcessor
WithNext sets the next Processor to pass the event.
type ChainableProcessor ¶
type ChainableProcessor interface { Interface // WithNext sets the next Processor to pass the event. WithNext(ChainableProcessor) ChainableProcessor }
ChainableProcessor is the interface to chainable Processor.
type FakeProcessor ¶
type FakeProcessor struct { BaseProcessor // AlwaysErr once set will always immediately return error. AlwaysErr bool // OneTimeErr once set will immediately return an error exactly once. OneTimeErr bool // BlockUntilCancel will block until context gets cancelled only // if no error return is required. BlockUntilCancel bool // PrevEventsCh records the events from the previous processor. PrevEventsCh chan *event.Event // InterceptFunc delegates the event modification. // If nil, the original event will be passed. InterceptFunc func(context.Context, *event.Event) *event.Event // WasCancelled records whether the processing was cancelled. WasCancelled bool // contains filtered or unexported fields }
FakeProcessor is a fake processor used for testing.
func (*FakeProcessor) Lock ¶
func (p *FakeProcessor) Lock() func()
Lock locks the FakeProcessor for any shared state change in different goroutines.
type Interface ¶
type Interface interface { // Process processes an event. It may decide to terminate the processing early // or it can pass the event to the next Processor for further processing. Process(ctx context.Context, e *event.Event) error // Next returns the next Processor to process events. Next() Interface }
Interface is the interface to process an event. If a processor can rely on its successor(s) for timeout, then it shouldn't explicitly handle timeout. If a processor has some internal long running processing, then it must handle timeout by itself.
func ChainProcessors ¶
func ChainProcessors(first ChainableProcessor, rest ...ChainableProcessor) Interface
ChainProcessors chains the given processors in order.