middleware

package
v1.9.14 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WriteTimeoutFieldName = "server.socket.timeout.write"
	ReadTimeoutFieldName  = "server.socket.timeout.read"

	WriteTimeoutDefault = 10 * time.Second
	ReadTimeoutDefault  = 10 * time.Second
)

Variables

View Source
var (
	ReadBytesLoggerComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger) {
				socketServer.Use(ReadBytesLogger(logger))
			})
		}),
	}

	ReadBytesMetricComponent = &app.Component{
		Dependencies: app.Components{
			metric.Component,
			logger.Component,
			server.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger, metric *metric.Metric) {
				socketServer.Use(ReadBytesMetric(logger, metric))
			})
		}),
	}

	ReadTimeoutComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			configurator.Component,
			server.Component,
		},
		Constructor: app.Constructor(func(container container.Container) error {
			return container.Provide(NewReadConfig)
		}),
		BindFlags: app.BindFlags(func(flagSet *pflag.FlagSet, container container.Container) error {
			return container.Invoke(func(config *ReadConfig) {
				flagSet.DurationVar(&config.Timeout, ReadTimeoutFieldName, ReadTimeoutDefault, "read timeout after which the connection will be considered invalid")
			})
		}),
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, config *ReadConfig, logger logger.Logger, configurator configurator.Configurator) {
				if config.Timeout == 0 || config.Timeout == ReadTimeoutDefault {
					configurator.SetDefault(ReadTimeoutFieldName, ReadTimeoutDefault)
					config.Timeout = configurator.GetDuration(ReadTimeoutFieldName)
				}

				socketServer.Use(ReadTimeout(config, logger))
			})
		}),
	}

	ReadComponent = &app.Component{
		Dependencies: app.Components{
			ReadBytesLoggerComponent,
			ReadBytesMetricComponent,
			ReadTimeoutComponent,
		},
	}

	WriteBytesLoggerComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger) {
				socketServer.Use(WriteBytesLogger(logger))
			})
		}),
	}

	WriteBytesMetricComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
			metric.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger, metric *metric.Metric) {
				socketServer.Use(WriteBytesMetric(logger, metric))
			})
		}),
	}

	WriteTimeoutComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			configurator.Component,
			server.Component,
		},
		Constructor: app.Constructor(func(container container.Container) error {
			return container.Provide(NewWriteConfig)
		}),
		BindFlags: app.BindFlags(func(flagSet *pflag.FlagSet, container container.Container) error {
			return container.Invoke(func(config *WriteConfig) {
				flagSet.DurationVar(&config.Timeout, WriteTimeoutFieldName, WriteTimeoutDefault, "write timeout, after which the connection will be considered invalid")
			})
		}),
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, config *WriteConfig, logger logger.Logger, configurator configurator.Configurator) {
				if config.Timeout == 0 || config.Timeout == WriteTimeoutDefault {
					configurator.SetDefault(WriteTimeoutFieldName, WriteTimeoutDefault)
					config.Timeout = configurator.GetDuration(WriteTimeoutFieldName)
				}

				socketServer.Use(WriteTimeout(config, logger))
			})
		}),
	}

	WriteComponent = &app.Component{
		Dependencies: app.Components{
			WriteBytesLoggerComponent,
			WriteBytesMetricComponent,
			WriteTimeoutComponent,
		},
	}

	ConnectionLoggerComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger) {
				socketServer.Use(ConnectionLogger(logger))
			})
		}),
	}

	ConnectionCounterComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
		},
		Constructor: app.Constructor(func(container container.Container) error {
			return container.Provides(NewConnectionCounter)
		}),
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, connectionCounter *ConnectionCounter) {
				socketServer.Use(connectionCounter)
			})
		}),
	}

	RecovererComponent = &app.Component{
		Dependencies: app.Components{
			logger.Component,
			server.Component,
		},
		Run: app.Run(func(container container.Container) error {
			return container.Invoke(func(socketServer server.Server, logger logger.Logger) {
				socketServer.Use(Recoverer(logger))
			})
		}),
	}

	Component = &app.Component{Dependencies: app.Components{
		ReadComponent,
		WriteComponent,
		ConnectionLoggerComponent,
		ConnectionCounterComponent,
		RecovererComponent,
	}}
)

Functions

func ConnectionLogger added in v1.8.12

func ConnectionLogger(informer logger.Informer) server.MiddlewareFunc

func ReadBytesLogger added in v1.8.12

func ReadBytesLogger(logger logger.Logger) server.MiddlewareFunc

func ReadBytesMetric added in v1.8.12

func ReadBytesMetric(informer logger.Informer, metric *metric.Metric) server.MiddlewareFunc

func ReadBytesMetricWithName added in v1.9.13

func ReadBytesMetricWithName(informer logger.Informer, metric *metric.Metric, name string) server.MiddlewareFunc

func ReadTimeout added in v1.8.12

func ReadTimeout(config *ReadConfig, informer logger.Informer) server.Middleware

func Recoverer added in v1.8.12

func Recoverer(logger logger.Logger) server.MiddlewareFunc

func WriteBytesLogger added in v1.8.12

func WriteBytesLogger(logger logger.Logger) server.MiddlewareFunc

func WriteBytesMetric added in v1.8.12

func WriteBytesMetric(informer logger.Informer, metric *metric.Metric) server.MiddlewareFunc

func WriteBytesMetricWithName added in v1.9.13

func WriteBytesMetricWithName(informer logger.Informer, metric *metric.Metric, name string) server.MiddlewareFunc

func WriteTimeout added in v1.8.12

func WriteTimeout(config *WriteConfig, informer logger.Informer) server.MiddlewareFunc

Types

type ConnectionCounter added in v1.8.12

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

func NewConnectionCounter

func NewConnectionCounter(appConfig *app.Config) *ConnectionCounter

func (*ConnectionCounter) Middleware added in v1.8.12

func (middleware *ConnectionCounter) Middleware(next server.Handler) server.Handler

type ReadConfig added in v1.8.12

type ReadConfig struct {
	Timeout time.Duration
}

func NewReadConfig added in v1.8.12

func NewReadConfig() *ReadConfig

type WriteConfig added in v1.8.12

type WriteConfig struct {
	Timeout time.Duration
}

func NewWriteConfig added in v1.8.12

func NewWriteConfig() *WriteConfig

Jump to

Keyboard shortcuts

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