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 ¶
const ( IpKey contextKey = "ip" // IP address TenantKey contextKey = "tenant" // Tenant TransportKey contextKey = "transport" // Transport, such as HTTP RequestUrlKey contextKey = "requestUrl" // Request url )
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 { String(string) string Int(string) int Strings(string) []string Bool(string) bool Get(string) interface{} Float64(string) float64 Unmarshal(path string, o interface{}) error }
ConfigAccessor models a the basic configuration. If the configuration is hot reloaded, ConfigAccessor should fetch the latest info.
type ConfigRouter ¶
type ConfigRouter interface {
Route(path string) ConfigAccessor
}
ConfigRouter enables modular configuration by giving every piece of configuration a path.
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() ifilter.Collection AddModule(module interface{}) }
Container holds modules.
type Dispatcher ¶
type Dispatcher interface { Dispatch(ctx context.Context, event Event) error Subscribe(listener Listener) }
Dispatcher is the event registry that is able to send event 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 Event ¶
type Event interface { Type() string Data() interface{} }
Event is an interface for event, the unit of message.
type MapTenant ¶
type MapTenant map[string]interface{}
MapTenant is an demo Tenant implementation. Useful for testing.
type Marshaller ¶
Marshaller is an interface for the data type that knows how to marshal itself.