peake100/rogerRabbit-go

View on GitHub
pkg/roger/rconsumer/middleware/providers.go

Summary

Maintainability
A
0 mins
Test Coverage
package middleware

// ProviderTypeID identifies a ProvidesMiddleware type for catching duplicate providers.
type ProviderTypeID string

// ProvidesMiddleware is the base interface that must be implemented by any middleware
// provider.
type ProvidesMiddleware interface {
    // TypeID returns a unique ID for verifying that a provider has not been registered
    // more than once.
    TypeID() ProviderTypeID
}

// ProvidesSetupChannel provides SetupChannel middleware as a method.
type ProvidesSetupChannel interface {
    ProvidesMiddleware
    SetupChannel(next HandlerSetupChannel) HandlerSetupChannel
}

// ProvidesDelivery provides Delivery middleware as a method.
type ProvidesDelivery interface {
    ProvidesMiddleware
    Delivery(next HandlerDelivery) HandlerDelivery
}

// ProvidesCleanupChannel provides CleanupChannel middleware as a method.
type ProvidesCleanupChannel interface {
    ProvidesMiddleware
    CleanupChannel(next HandlerCleanupChannel) HandlerCleanupChannel
}

// ProvidesAll provides all consumer middlewares.
type ProvidesAll interface {
    ProvidesSetupChannel
    ProvidesDelivery
    ProvidesCleanupChannel
}