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, 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 Listener ¶
type Listener interface {
Listen() (topic interface{})
Process(ctx context.Context, payload interface{}) error
}
Listener is the handler for event.
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.