Documentation
¶
Index ¶
- Constants
- func ConvertAssign(dest, src interface{}) error
- func HandleBusMiddleware(worker Worker)
- func InSlice(array interface{}, item interface{}) bool
- func NewMap(dst interface{}) error
- func NewSlice(dsc interface{}, len int) error
- func Prepare(f func(Initiator))
- func SliceDelete(arr interface{}, indexArr ...int) error
- type Application
- func (app *Application) BindBooting(f func(bootManager BootManager))
- func (app *Application) BindController(relativePath string, controller IrisController, handlers ...IrisHandler)
- func (app *Application) BindControllerByParty(router IrisParty, controller interface{})
- func (app *Application) BindControllerWithParty(router IrisParty, controller IrisController)
- func (app *Application) BindFactory(f interface{})
- func (app *Application) BindInfra(single bool, com interface{})
- func (app *Application) BindRepository(f interface{})
- func (app *Application) BindService(f interface{})
- func (app *Application) CreateParty(relativePath string, handlers ...IrisHandler) IrisParty
- func (app *Application) EventsPath(infra interface{}) map[string]string
- func (app *Application) FetchInfra(ctx IrisContext, com interface{})
- func (app *Application) FetchService(ctx IrisContext, service interface{})
- func (app *Application) FetchSingleInfra(com interface{}) bool
- func (app *Application) GetInfra(ctx IrisContext, com interface{})
- func (app *Application) GetService(ctx IrisContext, service interface{})
- func (app *Application) GetServiceLocator() *ServiceLocatorImpl
- func (app *Application) InjectController(f Dependency)
- func (app *Application) InjectIntoController(f Dependency)
- func (app *Application) InstallBusMiddleware(handle ...BusHandler)
- func (app *Application) InstallCustom(f func() interface{})
- func (app *Application) InstallDB(f func() interface{})
- func (app *Application) InstallMiddleware(handler IrisHandler)
- func (app *Application) InstallParty(prefixPath string)
- func (app *Application) InstallRedis(f func() (client redis.Cmdable))
- func (app *Application) InstallSerializer(marshal func(v interface{}) ([]byte, error), ...)
- func (app *Application) Iris() *IrisApplication
- func (app *Application) ListenEvent(eventName string, objectMethod string, appointInfra ...interface{})
- func (app *Application) Logger() *golog.Logger
- func (app *Application) NewAutoTLSRunner(addr string, domain string, email string, ...) IrisRunner
- func (app *Application) NewH2CRunner(addr string, configurators ...IrisHostConfigurator) IrisRunner
- func (app *Application) NewRunner(addr string, configurators ...IrisHostConfigurator) IrisRunner
- func (app *Application) NewTLSRunner(addr string, certFile, keyFile string, configurators ...IrisHostConfigurator) IrisRunner
- func (app *Application) RegisterShutdown(f func())
- func (app *Application) Run(runner IrisRunner, conf IrisConfiguration)
- func (app *Application) SetPrefixPath(prefixPath string)
- func (app *Application) SubRouter(relativePath string, handlers ...IrisHandler) IrisParty
- type BeginRequest
- type BootManager
- type Bus
- type BusHandler
- type Dependency
- type DomainEvent
- type Entity
- type EventBus
- type FactoryPool
- type Infra
- func (infra *Infra) BeginRequest(rt Worker)
- func (infra *Infra) FetchCustom(obj interface{})
- func (infra *Infra) FetchOnlyDB(db interface{}) error
- func (infra *Infra) FetchSingleInfra(com interface{}) bool
- func (infra *Infra) InjectBaseEntity(entity Entity)
- func (infra *Infra) InjectBaseEntitys(entitys interface{})
- func (infra *Infra) NewH2CRequest(url string, transferBus ...bool) requests.Request
- func (infra *Infra) NewHTTPRequest(url string, transferBus ...bool) requests.Request
- func (infra *Infra) Redis() redis.Cmdable
- func (infra *Infra) Worker() Worker
- type InfraPool
- type Initiator
- type IrisApplication
- type IrisConfiguration
- type IrisContext
- type IrisController
- type IrisHandler
- type IrisHostConfigurator
- type IrisMVCApplication
- type IrisParty
- type IrisRunner
- type JMap
- func (jm *JMap) AllKey() []interface{}
- func (jm *JMap) DelAll()
- func (jm *JMap) Exist(key interface{}) bool
- func (jm *JMap) Get(key interface{}, value interface{}) error
- func (jm *JMap) Interface(key interface{}) interface{}
- func (jm *JMap) Remove(key interface{})
- func (jm *JMap) Set(key interface{}, value interface{})
- func (jm *JMap) SetOrStore(key interface{}, value interface{}) (v interface{}, set bool)
- type Logger
- type Prometheus
- type Repository
- func (repo *Repository) BeginRequest(rt Worker)
- func (repo *Repository) FetchCustom(obj interface{})
- func (repo *Repository) FetchDB(db interface{}) error
- func (repo *Repository) FetchOnlyDB(db interface{}) error
- func (repo *Repository) InjectBaseEntity(entity Entity)
- func (repo *Repository) InjectBaseEntitys(entitys interface{})
- func (repo *Repository) NewH2CRequest(url string, transferBus ...bool) requests.Request
- func (repo *Repository) NewHTTPRequest(url string, transferBus ...bool) requests.Request
- func (repo *Repository) Redis() redis.Cmdable
- func (repo *Repository) Worker() Worker
- type RepositoryPool
- type Scanner
- type ServiceLocatorImpl
- type ServicePool
- type Store
- func (s *Store) Exist(key interface{}) bool
- func (s *Store) Get(key interface{}, value interface{}) error
- func (s *Store) Keys() []interface{}
- func (s *Store) Remove(key interface{})
- func (s *Store) RemoveAll()
- func (s *Store) Set(key interface{}, value interface{})
- func (s *Store) SetOrStore(key interface{}, value interface{}) (v interface{}, set bool)
- func (s *Store) ToInterface(key interface{}) interface{}
- func (s *Store) ToMap() map[interface{}]interface{}
- func (s *Store) Values() []interface{}
- type UnitTest
- type UnitTestImpl
- func (u *UnitTestImpl) FetchFactory(factory interface{})
- func (u *UnitTestImpl) FetchRepository(repository interface{})
- func (u *UnitTestImpl) FetchService(service interface{})
- func (u *UnitTestImpl) InjectBaseEntity(entity interface{})
- func (u *UnitTestImpl) InstallDB(f func() (db interface{}))
- func (u *UnitTestImpl) InstallRedis(f func() (client redis.Cmdable))
- func (u *UnitTestImpl) Run()
- func (u *UnitTestImpl) SetRequest(request *http.Request)
- type Worker
Constants ¶
const (
//TransactionKey for transaction DB handles in the first-level cache
TransactionKey = "freedom_local_transaction_db"
)
const (
// WorkerKey specify where is the Worker should be located in Context
WorkerKey = "STORE-WORKER-KEY"
)
Variables ¶
This section is empty.
Functions ¶
func Prepare ¶
func Prepare(f func(Initiator))
Prepare app.BindController or app.BindControllerByParty.
func SliceDelete ¶
SliceDelete delete the specified subscript element of the array
Types ¶
type Application ¶
type Application struct {
// TODO(coco):
// Here is bad smell I felt, so we shouldn't export this member. Considering
// sets this member unexported in the future.
//
// IrisApp is an iris application
IrisApp *IrisApplication
// Database represents a database connection
Database struct {
Install func() (db interface{})
// contains filtered or unexported fields
}
// Cache represents a redis client
Cache struct {
Install func() (client redis.Cmdable)
// contains filtered or unexported fields
}
// Middleware is a set that satisfies the iris handler's definition
Middleware []IrisHandler
// Prometheus .
Prometheus *Prometheus
// contains filtered or unexported fields
}
Application represents a manager of freedom.
func NewApplication ¶
func NewApplication() *Application
NewApplication creates an instance of Application exactly once while the program is running.
func (*Application) BindBooting ¶ added in v1.8.9
func (app *Application) BindBooting(f func(bootManager BootManager))
BindBooting adds a builder function which builds a BootManager.
func (*Application) BindController ¶
func (app *Application) BindController(relativePath string, controller IrisController, handlers ...IrisHandler)
BindController accepts a string with the route path, an IrisController, and one or more IrisHandler. BindController resolves the application's dependencies, and creates an IrisRouter and an IrisMVCApplication. the IrisMVCApplication would be attached on IrisRouter and the EventBus after it has created.
func (*Application) BindControllerByParty ¶
func (app *Application) BindControllerByParty(router IrisParty, controller interface{})
BindControllerByParty accepts an IrisRouter and an IrisController. BindControllerByParty resolves the application's dependencies, and creates an IrisRouter and an IrisMVCApplication. the IrisMVCApplication would be attached on IrisRouter and the EventBus after it has created.
func (*Application) BindControllerWithParty ¶ added in v1.8.9
func (app *Application) BindControllerWithParty(router IrisParty, controller IrisController)
BindControllerWithParty accepts an IrisRouter and an IrisController. BindControllerWithParty resolves the application's dependencies, and creates an IrisRouter and an IrisMVCApplication. the IrisMVCApplication would be attached on IrisRouter and the EventBus after it has created.
func (*Application) BindFactory ¶ added in v1.7.11
func (app *Application) BindFactory(f interface{})
BindFactory .
func (*Application) BindInfra ¶
func (app *Application) BindInfra(single bool, com interface{})
BindInfra .
func (*Application) BindRepository ¶
func (app *Application) BindRepository(f interface{})
BindRepository .
func (*Application) CreateParty ¶
func (app *Application) CreateParty(relativePath string, handlers ...IrisHandler) IrisParty
CreateParty accepts a string with the route path, and one or more IrisHandler. CreateParty makes a new path by concatenating the application-level router's prefix and the specified route path, creates an IrisRouter with the new path and the those specified IrisHandler, and returns the IrisRouter.
func (*Application) EventsPath ¶
func (app *Application) EventsPath(infra interface{}) map[string]string
EventsPath .
func (*Application) FetchInfra ¶ added in v1.8.9
func (app *Application) FetchInfra(ctx IrisContext, com interface{})
FetchInfra accepts an IrisContext and a pointer to the typed service. GetInfra looks up a service from the InfraPool by the type of the pointer and fill the pointer with the service.
func (*Application) FetchService ¶ added in v1.8.9
func (app *Application) FetchService(ctx IrisContext, service interface{})
FetchService accepts an IrisContext and a pointer to the typed service. FetchService looks up a service from the ServicePool by the type of the pointer and fill the pointer with the service.
func (*Application) FetchSingleInfra ¶ added in v1.8.9
func (app *Application) FetchSingleInfra(com interface{}) bool
FetchSingleInfra .
func (*Application) GetInfra ¶
func (app *Application) GetInfra(ctx IrisContext, com interface{})
GetInfra accepts an IrisContext and a pointer to the typed service. GetInfra looks up a service from the InfraPool by the type of the pointer and fill the pointer with the service.
func (*Application) GetService ¶
func (app *Application) GetService(ctx IrisContext, service interface{})
GetService accepts an IrisContext and a pointer to the typed service. GetService looks up a service from the ServicePool by the type of the pointer and fill the pointer with the service.
func (*Application) GetServiceLocator ¶ added in v1.8.8
func (app *Application) GetServiceLocator() *ServiceLocatorImpl
GetServiceLocator . Because of ambiguous naming, I've been create ServiceLocator as an alternative. Considering remove this function in the future.
func (*Application) InjectController ¶
func (app *Application) InjectController(f Dependency)
InjectController adds a Dependency for iris controller. Because of ambiguous naming, I've been create InjectIntoController as an alternative. Considering remove this function in the future.
func (*Application) InjectIntoController ¶ added in v1.8.8
func (app *Application) InjectIntoController(f Dependency)
InjectIntoController adds a Dependency for iris controller.
func (*Application) InstallBusMiddleware ¶
func (app *Application) InstallBusMiddleware(handle ...BusHandler)
InstallBusMiddleware .
func (*Application) InstallCustom ¶ added in v1.8.9
func (app *Application) InstallCustom(f func() interface{})
InstallCustom .
func (*Application) InstallDB ¶ added in v1.7.13
func (app *Application) InstallDB(f func() interface{})
InstallDB .
func (*Application) InstallMiddleware ¶
func (app *Application) InstallMiddleware(handler IrisHandler)
InstallMiddleware .
func (*Application) InstallParty ¶
func (app *Application) InstallParty(prefixPath string)
InstallParty assigns specified prefix to the application-level router. Because of ambiguous naming, I've been create SetPrefixPath as an alternative. Considering remove this function in the future.
func (*Application) InstallRedis ¶
func (app *Application) InstallRedis(f func() (client redis.Cmdable))
InstallRedis .
func (*Application) InstallSerializer ¶
func (app *Application) InstallSerializer(marshal func(v interface{}) ([]byte, error), unmarshal func(data []byte, v interface{}) error)
InstallSerializer .
func (*Application) ListenEvent ¶
func (app *Application) ListenEvent(eventName string, objectMethod string, appointInfra ...interface{})
ListenEvent .
func (*Application) NewAutoTLSRunner ¶ added in v1.8.5
func (app *Application) NewAutoTLSRunner(addr string, domain string, email string, configurators ...IrisHostConfigurator) IrisRunner
NewAutoTLSRunner can be used as an argument for the `Run` method. It will start the Application's secure server using certifications created on the fly by the "autocert" golang/x package, so localhost may not be working, use it at "production" machine.
Addr should have the form of host:port, i.e mydomain.com:443.
The whitelisted domains are separated by whitespace in "domain" argument, i.e "8tree.net", can be different than "addr". If empty, all hosts are currently allowed. This is not recommended, as it opens a potential attack where clients connect to a server by IP address and pretend to be asking for an incorrect host name. Manager will attempt to obtain a certificate for that host, incorrectly, eventually reaching the CA's rate limit for certificate requests and making it impossible to obtain actual certificates.
For an "e-mail" use a non-public one, letsencrypt needs that for your own security.
Note: `AutoTLS` will start a new server for you which will redirect all http versions to their https, including subdomains as well.
Last argument is optional, it accepts one or more `func(*host.Configurator)` that are being executed on that specific host that this function will create to start the server. Via host configurators you can configure the back-end host supervisor, i.e to add events for shutdown, serve or error. Look at the `ConfigureHost` too.
func (*Application) NewH2CRunner ¶ added in v1.8.5
func (app *Application) NewH2CRunner(addr string, configurators ...IrisHostConfigurator) IrisRunner
NewH2CRunner .
func (*Application) NewRunner ¶ added in v1.8.5
func (app *Application) NewRunner(addr string, configurators ...IrisHostConfigurator) IrisRunner
NewRunner can be used as an argument for the `Run` method. It accepts a host address which is used to build a server and a listener which listens on that host and port.
Addr should have the form of host:port, i.e localhost:8080 or :8080.
Second argument is optional, it accepts one or more `func(*host.Configurator)` that are being executed on that specific host that this function will create to start the server. Via host configurators you can configure the back-end host supervisor, i.e to add events for shutdown, serve or error.
func (*Application) NewTLSRunner ¶ added in v1.8.5
func (app *Application) NewTLSRunner(addr string, certFile, keyFile string, configurators ...IrisHostConfigurator) IrisRunner
NewTLSRunner can be used as an argument for the `Run` method. It will start the Application's secure server.
Use it like you used to use the http.ListenAndServeTLS function.
Addr should have the form of host:port, i.e localhost:443 or :443. CertFile & KeyFile should be filenames with their extensions.
Second argument is optional, it accepts one or more `func(*host.Configurator)` that are being executed on that specific host that this function will create to start the server. Via host configurators you can configure the back-end host supervisor, i.e to add events for shutdown, serve or error. An example of this use case can be found at:
func (*Application) RegisterShutdown ¶ added in v1.8.0
func (app *Application) RegisterShutdown(f func())
RegisterShutdown .
func (*Application) Run ¶
func (app *Application) Run(runner IrisRunner, conf IrisConfiguration)
Run accepts an IrisRunner and an IrisConfiguration. Run initializes the middleware and the infrastructure of the application likes database connection, cache, repository and etc. , and serving an iris application as the HTTP server to handle the incoming requests.
func (*Application) SetPrefixPath ¶ added in v1.8.8
func (app *Application) SetPrefixPath(prefixPath string)
SetPrefixPath assigns specified prefix to the application-level router.
func (*Application) SubRouter ¶ added in v1.8.8
func (app *Application) SubRouter(relativePath string, handlers ...IrisHandler) IrisParty
SubRouter accepts a string with the route path, and one or more IrisHandler. SubRouter makes a new path by concatenating the application-level router's prefix and the specified route path, creates an IrisRouter with the new path and the those specified IrisHandler, and returns the IrisRouter.
type BootManager ¶ added in v1.8.9
type BootManager interface {
Iris() *iris.Application
FetchSingleInfra(infra interface{}) bool
//Pass in the current component to get the event path, which can bind the specified component.
EventsPath(infra interface{}) map[string]string
//Register for a shutdown event.
RegisterShutdown(func())
}
BootManager .
type Dependency ¶ added in v1.8.8
type Dependency = interface{}
Dependency is a function which represents a dependency of the application. A valid definition of dependency should like:
func foo(ctx iris.Context) Bar {
return Bar{}
}
Example: If you want to inject a `Foo` into somewhere, you could written:
func (ctx iris.Context) Foo {
return NewFoo() // you'd replace NewFoo() with your own logic for creating Foo.
}
type DomainEvent ¶ added in v1.8.6
type DomainEvent interface {
Topic() string
SetPrototypes(map[string]interface{})
GetPrototypes() map[string]interface{}
Marshal() ([]byte, error)
Unmarshal([]byte) error
Identity() string
SetIdentity(identity string)
}
DomainEvent .
type Entity ¶
type Entity interface {
Identity() string
Worker() Worker
Marshal() ([]byte, error)
AddPubEvent(DomainEvent)
GetPubEvent() []DomainEvent
RemoveAllPubEvent()
AddSubEvent(DomainEvent)
GetSubEvent() []DomainEvent
RemoveAllSubEvent()
}
Entity is the entity's father interface.
type EventBus ¶
type EventBus struct {
// contains filtered or unexported fields
}
EventBus .
func (*EventBus) EventsPath ¶
EventsPath .
type FactoryPool ¶ added in v1.7.11
type FactoryPool struct {
// contains filtered or unexported fields
}
FactoryPool .
type Infra ¶
type Infra struct {
// contains filtered or unexported fields
}
Infra .
func (*Infra) FetchCustom ¶ added in v1.8.9
func (infra *Infra) FetchCustom(obj interface{})
FetchCustom .
func (*Infra) FetchOnlyDB ¶ added in v1.8.9
FetchOnlyDB .
func (*Infra) FetchSingleInfra ¶ added in v1.8.9
FetchSingleInfra .
func (*Infra) InjectBaseEntity ¶ added in v1.7.5
InjectBaseEntity .
func (*Infra) InjectBaseEntitys ¶ added in v1.7.5
func (infra *Infra) InjectBaseEntitys(entitys interface{})
InjectBaseEntitys .
func (*Infra) NewH2CRequest ¶
NewH2CRequest transferBus : Whether to pass the context, turned on by default. Typically used for tracking internal services.
func (*Infra) NewHTTPRequest ¶ added in v1.8.0
NewHTTPRequest transferBus : Whether to pass the context, turned on by default. Typically used for tracking internal services.
type Initiator ¶
type Initiator interface {
CreateParty(relativePath string, handlers ...context.Handler) iris.Party
BindController(relativePath string, controller interface{}, handlers ...context.Handler)
BindControllerWithParty(party iris.Party, controller interface{})
BindService(f interface{})
InjectController(f interface{})
BindRepository(f interface{})
BindFactory(f interface{})
GetService(ctx iris.Context, service interface{})
FetchService(ctx iris.Context, service interface{})
// BindInfra if is a singleton, com is an object. if is multiton, com is a function
BindInfra(single bool, com interface{})
GetInfra(ctx iris.Context, com interface{})
FetchInfra(ctx iris.Context, com interface{})
// Listen Event
ListenEvent(eventName string, objectMethod string, appointInfra ...interface{})
BindBooting(f func(bootManager BootManager))
Iris() *iris.Application
}
Initiator .
type IrisApplication ¶ added in v1.8.8
type IrisApplication = iris.Application
IrisApplication is a type alias to iris.Application
type IrisConfiguration ¶ added in v1.8.8
type IrisConfiguration = iris.Configuration
IrisConfiguration is a type alias to iris.Configuration.
type IrisContext ¶ added in v1.8.8
IrisContext is a type alias to iris.Context
type IrisController ¶ added in v1.8.8
type IrisController = interface{}
IrisController represents a standard iris controller.
type IrisHandler ¶ added in v1.8.8
IrisHandler is a type alias to context.Handler.
type IrisHostConfigurator ¶ added in v1.8.8
type IrisHostConfigurator = host.Configurator
IrisHostConfigurator is a type alias to host.Configurator
type IrisMVCApplication ¶ added in v1.8.8
type IrisMVCApplication = mvc.Application
IrisMVCApplication is a type alias to mvc.Application.
type IrisRunner ¶ added in v1.8.8
IrisRunner is a type alias to iris.Runner
type JMap ¶
type JMap struct {
// contains filtered or unexported fields
}
JMap .
func (*JMap) SetOrStore ¶
SetOrStore .
type Logger ¶
type Logger interface {
Print(v ...interface{})
Println(v ...interface{})
Fatal(v ...interface{})
Fatalf(format string, args ...interface{})
Error(v ...interface{})
Errorf(format string, args ...interface{})
Warn(v ...interface{})
Warnf(format string, args ...interface{})
Info(v ...interface{})
Infof(format string, args ...interface{})
Debug(v ...interface{})
Debugf(format string, args ...interface{})
}
Logger .
type Prometheus ¶
type Prometheus struct {
// contains filtered or unexported fields
}
Prometheus is a handler that exposes prometheus metrics for the number of requests, the latency and the response size, partitioned by status code, method and HTTP path.
Usage: pass its `ServeHTTP` to a route or globally.
func (*Prometheus) OrmWithLabelValues ¶
func (p *Prometheus) OrmWithLabelValues(model, method string, e error, starTime time.Time)
OrmWithLabelValues .
func (*Prometheus) RegisterCounter ¶
func (p *Prometheus) RegisterCounter(conter *prometheus.CounterVec)
RegisterCounter .
func (*Prometheus) RegisterHistogram ¶
func (p *Prometheus) RegisterHistogram(histogram *prometheus.HistogramVec)
RegisterHistogram .
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
Repository .
func (*Repository) FetchCustom ¶ added in v1.8.9
func (repo *Repository) FetchCustom(obj interface{})
FetchCustom .
func (*Repository) FetchDB ¶ added in v1.7.13
func (repo *Repository) FetchDB(db interface{}) error
FetchDB .
func (*Repository) FetchOnlyDB ¶ added in v1.8.9
func (repo *Repository) FetchOnlyDB(db interface{}) error
FetchOnlyDB .
func (*Repository) InjectBaseEntity ¶
func (repo *Repository) InjectBaseEntity(entity Entity)
InjectBaseEntity .
func (*Repository) InjectBaseEntitys ¶
func (repo *Repository) InjectBaseEntitys(entitys interface{})
InjectBaseEntitys .
func (*Repository) NewH2CRequest ¶
func (repo *Repository) NewH2CRequest(url string, transferBus ...bool) requests.Request
NewH2CRequest transferBus : Whether to pass the context, turned on by default. Typically used for tracking internal services.
func (*Repository) NewHTTPRequest ¶ added in v1.8.0
func (repo *Repository) NewHTTPRequest(url string, transferBus ...bool) requests.Request
NewHTTPRequest transferBus : Whether to pass the context, turned on by default. Typically used for tracking internal services.
type RepositoryPool ¶
type RepositoryPool struct {
// contains filtered or unexported fields
}
RepositoryPool .
type ServiceLocatorImpl ¶ added in v1.8.8
type ServiceLocatorImpl struct {
// contains filtered or unexported fields
}
ServiceLocatorImpl .
func (*ServiceLocatorImpl) Call ¶ added in v1.8.8
func (locator *ServiceLocatorImpl) Call(fun interface{})
Call .
func (*ServiceLocatorImpl) InstallBeginCallBack ¶ added in v1.8.8
func (locator *ServiceLocatorImpl) InstallBeginCallBack(f func(Worker))
InstallBeginCallBack .
func (*ServiceLocatorImpl) InstallEndCallBack ¶ added in v1.8.8
func (locator *ServiceLocatorImpl) InstallEndCallBack(f func(Worker))
InstallEndCallBack .
type ServicePool ¶
type ServicePool struct {
// contains filtered or unexported fields
}
ServicePool is domain service pool,a domain service type owns a pool pool key: the reflect.Type of domain service pool value: *sync.Pool
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store .
func (*Store) SetOrStore ¶
SetOrStore .
type UnitTest ¶
type UnitTest interface {
FetchService(service interface{})
FetchRepository(repository interface{})
FetchFactory(factory interface{})
InstallDB(f func() (db interface{}))
InstallRedis(f func() (client redis.Cmdable))
Run()
SetRequest(request *http.Request)
InjectBaseEntity(entity interface{})
}
UnitTest .
type UnitTestImpl ¶
type UnitTestImpl struct {
// contains filtered or unexported fields
}
UnitTestImpl .
func (*UnitTestImpl) FetchFactory ¶ added in v1.8.9
func (u *UnitTestImpl) FetchFactory(factory interface{})
FetchFactory .
func (*UnitTestImpl) FetchRepository ¶ added in v1.8.9
func (u *UnitTestImpl) FetchRepository(repository interface{})
FetchRepository .
func (*UnitTestImpl) FetchService ¶ added in v1.8.9
func (u *UnitTestImpl) FetchService(service interface{})
FetchService .
func (*UnitTestImpl) InjectBaseEntity ¶
func (u *UnitTestImpl) InjectBaseEntity(entity interface{})
InjectBaseEntity .
func (*UnitTestImpl) InstallDB ¶ added in v1.7.13
func (u *UnitTestImpl) InstallDB(f func() (db interface{}))
InstallDB .
func (*UnitTestImpl) InstallRedis ¶
func (u *UnitTestImpl) InstallRedis(f func() (client redis.Cmdable))
InstallRedis .
func (*UnitTestImpl) SetRequest ¶
func (u *UnitTestImpl) SetRequest(request *http.Request)
SetRequest .
type Worker ¶
type Worker interface {
// IrisContext point to current iris.Context.
IrisContext() iris.Context
// Logger returns current Logger.
Logger() Logger
// SetLogger set current Logger instead Logger.
SetLogger(Logger)
// Store returns an address to current memstore.Store.
//
// memstore.Store is a collection of key/value entries. usually use to store metadata produced by freedom runtime.
Store() *memstore.Store
// Bus returns an address to current Bus.
Bus() *Bus
// Context returns current context.
Context() stdContext.Context
// WithContext set current context instead Context.
WithContext(stdContext.Context)
// StartTime returns a time since this Worker be created.
StartTime() time.Time
// DeferRecycle marks the resource won't be recycled immediately after
// the request has ended.
//
// It is a bit hard to understand what is, here is a simply explain about
// this.
//
// When an HTTP request is incoming, the program will probably serve a bunch
// of business logic services, DB connections, transactions, Redis caches,
// and so on. Once those procedures has done, the system should write
// response and release those resource immediately. In other words, the
// system should do some clean up procedures for this request. You might
// thought it is a matter of course. But in special cases, such as goroutine
// without synchronizing-signal. When all business procedures has completed
// on business goroutine, and prepare to respond. GC system may be run before
// the http handler goroutine to respond to the client. Once this opportunity
// was met, the client will got an "Internal Server Error" or other wrong
// result, because resource has been recycled by GC before to respond to client.
DeferRecycle()
// IsDeferRecycle indicates system need to wait a while for recycle resource.
IsDeferRecycle() bool
// Rand returns a rand.Rand act a random number seeder.
Rand() *rand.Rand
}
Worker describes a global context which use to share the internal component (i.e infrastructure, transaction, logger and so on) with middleware, controller, domain service and etc.