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)
Shutdown()
ApplyRunGroup(g *run.Group)
Modules() ifilter.Collection
ApplyCron(crontab *cron.Cron)
ApplyRootCommand(command *cobra.Command)
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.