Documentation ¶
Overview ¶
Package contract defines a set of common interfaces for all packages in this repository.
Note the purpose of this packages is to document what contract the libraries for package core should agree upon.
In general, use a centralized package for contracts is an anti-pattern in go as it prevents progressive upgrade. It is recommended to redeclare them in each individual package, unless there is a reason not to, eg. import cycle.
Package contract should be considered a closed set. Adding new interfaces to this package is strongly discouraged.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Codec ¶ added in v0.4.0
type Codec interface { Unmarshal(data []byte, value interface{}) error Marshal(value interface{}) ([]byte, error) }
Codec is an interface for serialization and deserialization.
type ConfigAccessor ¶
type ConfigAccessor interface { ConfigUnmarshaler String(string) string Int(string) int Strings(string) []string Bool(string) bool Get(string) interface{} Float64(string) float64 Duration(string) time.Duration }
ConfigAccessor builds upon the ConfigUnmarshaler and provides a richer set of API. Note: it is recommended to inject ConfigUnmarshaler as the dependency and call config.Upgrade to get the ConfigAccessor. The interface area of ConfigUnmarshaler is much smaller and thus much easier to customize.
type ConfigRouter ¶
type ConfigRouter interface {
Route(path string) ConfigUnmarshaler
}
ConfigRouter enables modular configuration by giving every piece of configuration a path.
type ConfigUnmarshaler ¶ added in v0.9.0
ConfigUnmarshaler is a minimum config interface that can be used to retrieve configuration from external system. If the configuration is hot reloaded, ConfigUnmarshaler should fetch the latest info.
type ConfigWatcher ¶
ConfigWatcher is an interface for hot-reload provider.
type Container ¶
type Container interface { ApplyRouter(router *mux.Router) ApplyGRPCServer(server *grpc.Server) ApplyCron(crontab *cron.Cron) ApplyRunGroup(g *run.Group) ApplyRootCommand(command *cobra.Command) Shutdown() Modules() []interface{} AddModule(module interface{}) }
Container holds modules.
type DIPopulator ¶ added in v0.9.0
type DIPopulator interface { // Populate is just another way of fetching dependencies from container. It // accepts a ptr to target, and populates the target from the container. Populate(target interface{}) error }
DIPopulator is an interface that models a container to which users can fetch dependencies. It is a syntax sugar to dig.Container. See dig.Container for the implementation requirement.
type Dispatcher ¶
type Dispatcher interface { Dispatch(ctx context.Context, topic interface{}, payload interface{}) error Subscribe(listener Listener) }
Dispatcher is the event registry that is able to send payload to each listener.
type Env ¶
type Env interface { IsLocal() bool IsDevelopment() bool IsTesting() bool IsStaging() bool IsProduction() bool String() string }
Env is the interface for environment of the application.
type LevelLogger ¶ added in v0.9.0
type LevelLogger interface { Logger Debug(args ...interface{}) Info(args ...interface{}) Warn(args ...interface{}) Err(args ...interface{}) Debugf(template string, args ...interface{}) Infof(template string, args ...interface{}) Warnf(template string, args ...interface{}) Errf(template string, args ...interface{}) Debugw(msg string, fields ...interface{}) Infow(msg string, fields ...interface{}) Warnw(msg string, fields ...interface{}) Errw(msg string, fields ...interface{}) }
LevelLogger is plaintext logger with level.