Documentation ¶
Index ¶
- Constants
- Variables
- func BlackMagic(v reflect.Value) reflect.Value
- func GetFuncName(f any) string
- func GetInterfaceType[T any](t *T) reflect.Type
- func IsCompatible(t reflect.Type, goner any) bool
- func NewSimpleLogger() (Goner, GonerId, GonerOption)
- func PanicTrace(kb int, skip int) []byte
- func Run(priests ...Priest)
- func Serve(priests ...Priest)
- func Test[T Goner](fn func(goner T), priests ...Priest)
- func TestAt[T Goner](id GonerId, fn func(goner T), priests ...Priest)
- func TimeStat(name string, start time.Time, logs ...func(format string, args ...any))
- type AfterReviveError
- type Angel
- type BError
- type BusinessError
- type CMuxServer
- type Cemetery
- type Configure
- type Context
- type Error
- func CannotFoundGonerByIdError(id GonerId) Error
- func CannotFoundGonerByTypeError(t reflect.Type) Error
- func GonerIdIsExistedError(id GonerId) Error
- func NewError(code int, msg string, statusCode int) Error
- func NewInnerError(msg string, code int) Error
- func NewInnerErrorSkip(msg string, code int, skip int) Error
- func NewParameterError(msg string, ext ...int) Error
- func NotCompatibleError(a reflect.Type, b reflect.Type) Error
- func ReplaceBuryIdParamEmptyError() Error
- func ToError(input any) Error
- type Flag
- type GinMiddleware
- type GinMountError
- type Goner
- type GonerId
- type GonerOption
- type HandlerFunc
- type Heaven
- type IRouter
- type IRoutes
- type InnerError
- type Logger
- type Order
- type Preparer
- func (p *Preparer) AfterStart(fn any) *Preparer
- func (p *Preparer) AfterStop(fn any) *Preparer
- func (p *Preparer) BeforeStart(fn any) *Preparer
- func (p *Preparer) BeforeStop(fn any) *Preparer
- func (p *Preparer) Run(fns ...any)
- func (p *Preparer) Serve(fns ...any)
- func (p *Preparer) SetAfterStopSignalWaitSecond(sec int)
- func (p *Preparer) Test(fn any)
- type Priest
- type Process
- type Prophet
- type Prophet2
- type ResponseWriter
- type RouteGroup
- type SuckError
- type Tomb
- type Tombs
- type Tracer
- type Vampire
- type Vampire2
- type XormEngine
Constants ¶
const ( // GonerIdIsExisted Goner for the GonerId is existed. GonerIdIsExisted = 1001 + iota // CannotFoundGonerById cannot find the Goner by the GonerId. CannotFoundGonerById // CannotFoundGonerByType cannot find the Goner by the Type. CannotFoundGonerByType //NotCompatible Goner is not compatible with the Type. NotCompatible //ReplaceBuryIdParamEmpty Cemetery.ReplaceBury error for the GonerId is empty. ReplaceBuryIdParamEmpty //StartError Gone Start flow error. StartError //StopError Gone Stop flow error. StopError //DbRollForPanic error in rollback of DB transaction for panic. DbRollForPanic //MustHaveGonerId error for the GonerId is empty. MustHaveGonerId //InjectError error for dependence injection error InjectError )
Error Code:1001~1999 used for gone framework.
const ( RequestIdHeaderKey = "X-Request-Id" TraceIdHeaderKey = "X-Trace-Id" )
Variables ¶
var AfterStopSignalWaitSecond = 5
AfterStopSignalWaitSecond , The variable is used to set the time to wait after the stop signal is received.
Functions ¶
func GetInterfaceType ¶ added in v0.0.17
GetInterfaceType get interface type
func IsCompatible ¶ added in v1.0.0
IsCompatible t Type can put in goner
func NewSimpleLogger ¶ added in v0.0.8
func NewSimpleLogger() (Goner, GonerId, GonerOption)
func Run ¶
func Run(priests ...Priest)
Run A Gone Program;
gone.Run vs gone.Serve:
- gone.Run, The main goroutine never hangs, and the program is terminated when the main goroutine exits.
- gone.Serve, The main goroutine calls Heaven.WaitEnd and hangs, and the program waiting for the stop signal for exiting.
func Test ¶ added in v0.0.6
Test Use for writing test cases, refer to [example](https://github.com/gone-io/gone/blob/main/example/test/goner_test.go)
Types ¶
type AfterReviveError ¶ added in v0.0.6
type AfterReviveError error
type BError ¶ added in v0.3.0
type BError struct {
// contains filtered or unexported fields
}
BError Business error implementation
func (*BError) GetStatusCode ¶ added in v1.0.4
type BusinessError ¶ added in v0.3.0
BusinessError which has data, and which is used for Business error
func NewBusinessError ¶ added in v0.3.0
func NewBusinessError(msg string, ext ...any) BusinessError
NewBusinessError create a business error
type CMuxServer ¶ added in v1.0.0
type CMuxServer interface { Match(matcher ...cmux.Matcher) net.Listener MatchWithWriters(matcher ...cmux.MatchWriter) net.Listener GetAddress() string }
CMuxServer cMux service,Used to multiplex the same port to listen for multiple protocols,ref:https://pkg.go.dev/github.com/soheilhy/cmux
type Cemetery ¶
type Cemetery interface { Goner // Bury a Goner to the Cemetery Bury(Goner, ...GonerOption) Cemetery // BuryOnce a Goner to the Cemetery, if the Goner is already in the Cemetery, it will be ignored BuryOnce(goner Goner, options ...GonerOption) Cemetery // ReplaceBury replace the Goner in the Cemetery with a new Goner ReplaceBury(goner Goner, options ...GonerOption) error // ReviveOne Revive a Goner from the Cemetery ReviveOne(goner any) (deps []Tomb, err error) // ReviveAllFromTombs Revive all Goner from the Cemetery ReviveAllFromTombs() error // GetTomById return the Tomb by the GonerId GetTomById(GonerId) Tomb // GetTomByType return the Tombs by the GonerType GetTomByType(reflect.Type) []Tomb // InjectFuncParameters used for inject func parameters,which will construct parameters for a func;return constructed parameters reflect.Value Slice; // InjectFuncParameters accept two hook functions: injectBefore and injectAfter,and hook function can be nil. // The ith parameter will be ignored by injecting process if injectBefore(x, i) returned is not nil, and the result of injectBefore(x, i) will be added to args. InjectFuncParameters( fn any, injectBefore func(pt reflect.Type, i int) any, injectAfter func(pt reflect.Type, i int), ) (args []reflect.Value, err error) }
Cemetery which is for burying and reviving Goner
func NewBuryMockCemeteryForTest ¶ added in v1.0.0
func NewBuryMockCemeteryForTest() Cemetery
NewBuryMockCemeteryForTest make a new Cemetery for test
type Configure ¶ added in v1.0.0
type Configure interface { //Get the value from config system Get(key string, v any, defaultVal string) error }
Configure use for get value of struct attribute tag by `gone:"config,${key}"`
type Error ¶
Error normal error
func GonerIdIsExistedError ¶
func NewInnerError ¶ added in v0.0.6
func NewInnerErrorSkip ¶ added in v1.0.0
func NewParameterError ¶ added in v0.3.0
NewParameterError create a Parameter error
func ReplaceBuryIdParamEmptyError ¶
func ReplaceBuryIdParamEmptyError() Error
type GinMiddleware ¶ added in v1.0.0
type GinMountError ¶ added in v0.3.0
type GinMountError error
type Goner ¶
type Goner interface {
// contains filtered or unexported methods
}
Goner which is an abstraction of injectable objects: can inject other Goner, can be injected by other Goner.
type GonerId ¶
type GonerId string
GonerId Goner's id
const ( // IdGoneHeaven , The GonerId of Heaven Goner, which represents the program itself, and which is injected by default when it starts. IdGoneHeaven GonerId = "gone-heaven" // IdGoneCemetery , The GonerId of Cemetery Goner, which is Dependence Injection Key Goner, and which is injected by default. IdGoneCemetery GonerId = "gone-cemetery" // IdGoneTestKit , The GonerId of TestKit Goner, which is injected by default when using gone.Test or gone.TestAt to run test code. IdGoneTestKit GonerId = "gone-test-kit" //IdConfig , The GonerId of Config Goner, which can be used for Injecting Configs from files or envs. IdConfig GonerId = "config" //IdGoneConfigure , The GonerId of Configure Goner, which is used to read configs from devices. IdGoneConfigure GonerId = "gone-configure" // IdGoneTracer ,The GonerId of Tracer IdGoneTracer GonerId = "gone-tracer" // IdGoneLogger , The GonerId of Logger IdGoneLogger GonerId = "gone-logger" // IdGoneCMux , The GonerId of CMuxServer IdGoneCMux GonerId = "gone-cmux" // IdGoneGin , IdGoneGinRouter , IdGoneGinProcessor, IdGoneGinProxy, IdGoneGinResponser, IdHttpInjector; // The GonerIds of Goners in goner/gin, which integrates gin framework for web request. IdGoneGin GonerId = "gone-gin" IdGoneGinRouter GonerId = "gone-gin-router" IdGoneGinSysMiddleware GonerId = "gone-gin-sys-middleware" IdGoneGinProxy GonerId = "gone-gin-proxy" IdGoneGinResponser GonerId = "gone-gin-responser" IdHttpInjector GonerId = "http" // IdGoneXorm , The GonerId of XormEngine Goner, which is for xorm engine. IdGoneXorm GonerId = "gone-xorm" // IdGoneRedisPool ,IdGoneRedisCache, IdGoneRedisKey, IdGoneRedisLocker, IdGoneRedisProvider // The GonerIds of Goners in goner/redis, which integrates redis framework for cache and locker. IdGoneRedisPool GonerId = "gone-redis-pool" IdGoneRedisCache GonerId = "gone-redis-cache" IdGoneRedisKey GonerId = "gone-redis-key" IdGoneRedisLocker GonerId = "gone-redis-locker" IdGoneRedisProvider GonerId = "gone-redis-provider" // IdGoneSchedule , The GonerId of Schedule Goner, which is for schedule in goner/schedule. IdGoneSchedule GonerId = "gone-schedule" // IdGoneReq , The GonerId of urllib.Client Goner, which is for request in goner/urllib. IdGoneReq GonerId = "gone-urllib" )
GonerIds for Gone framework inner Goners
func GetGoneDefaultId ¶
type GonerOption ¶ added in v1.0.0
type GonerOption interface {
// contains filtered or unexported methods
}
func IsDefault ¶ added in v1.0.0
func IsDefault[T any](t *T) GonerOption
type HandlerFunc ¶ added in v0.3.0
type HandlerFunc any
type Heaven ¶
type Heaven interface { //Install do some prepare before start Install() Heaven //WaitEnd make program block until heaven stop WaitEnd() Heaven //End send a signal to heaven to stop End() Heaven //Start make heaven start Start() Heaven Stop() Heaven //GetHeavenStopSignal return a channel to listen the signal of heaven stop GetHeavenStopSignal() <-chan struct{} //BeforeStart add a hook function which will execute before start; BeforeStart(Process) Heaven //AfterStart add a hook function which will execute after start AfterStart(Process) Heaven //BeforeStop add a hook function which will execute before stop BeforeStop(Process) Heaven //AfterStop add a hook function which will execute after stop AfterStop(Process) Heaven SetAfterStopSignalWaitSecond(sec int) }
type IRouter ¶ added in v0.3.0
type IRouter interface { IRoutes GetGinRouter() gin.IRouter Group(string, ...HandlerFunc) RouteGroup LoadHTMLGlob(pattern string) }
type IRoutes ¶ added in v0.3.0
type IRoutes interface { Use(...HandlerFunc) IRoutes Handle(string, string, ...HandlerFunc) IRoutes Any(string, ...HandlerFunc) IRoutes GET(string, ...HandlerFunc) IRoutes POST(string, ...HandlerFunc) IRoutes DELETE(string, ...HandlerFunc) IRoutes PATCH(string, ...HandlerFunc) IRoutes PUT(string, ...HandlerFunc) IRoutes OPTIONS(string, ...HandlerFunc) IRoutes HEAD(string, ...HandlerFunc) IRoutes }
type InnerError ¶ added in v0.0.6
InnerError which has stack, and which is used for Internal error
type Logger ¶
type Logger interface { Tracef(format string, args ...any) Debugf(format string, args ...any) Infof(format string, args ...any) Printf(format string, args ...any) Warnf(format string, args ...any) Errorf(format string, args ...any) Fatalf(format string, args ...any) Panicf(format string, args ...any) Trace(args ...any) Debug(args ...any) Info(args ...any) Print(args ...any) Warn(args ...any) Error(args ...any) Fatal(args ...any) Panic(args ...any) Traceln(args ...any) Debugln(args ...any) Infoln(args ...any) Println(args ...any) Warnln(args ...any) Errorln(args ...any) Fatalln(args ...any) Panicln(args ...any) }
Logger log interface
func GetSimpleLogger ¶ added in v1.0.0
func GetSimpleLogger() Logger
type Order ¶ added in v1.0.0
type Order int
const Order0 Order = 0
const Order1 Order = 10
const Order2 Order = 100
const Order3 Order = 1000
const Order4 Order = 10000
type Preparer ¶ added in v0.2.1
type Preparer struct {
// contains filtered or unexported fields
}
func (*Preparer) AfterStart ¶ added in v0.2.1
func (*Preparer) BeforeStart ¶ added in v0.2.1
func (*Preparer) BeforeStop ¶ added in v0.2.1
func (*Preparer) SetAfterStopSignalWaitSecond ¶ added in v1.0.0
type Priest ¶
Priest A function which has A Cemetery parameter, and return an error. use for Burying Goner
type Process ¶
Process a function which has a Cemetery parameter, and return an error. use for hooks
func WrapNormalFnToProcess ¶ added in v0.2.1
WrapNormalFnToProcess warp a func to Process
type Prophet ¶ added in v0.0.6
type Prophet interface { Goner //AfterRevive A method which will execute after revive // Deprecate: use `AfterRevive() error` instead AfterRevive() AfterReviveError }
Prophet A interface which has a AfterRevive method
type ResponseWriter ¶ added in v0.3.0
type ResponseWriter = gin.ResponseWriter
type RouteGroup ¶ added in v0.3.0
type RouteGroup interface { IRouter }
RouteGroup route group, which is a wrapper of gin.RouterGroup, and can be injected for mount router.
type Tomb ¶
type Tomb interface { SetId(GonerId) Tomb GetId() GonerId GetGoner() Goner GonerIsRevive(flags ...bool) bool SetDefault(reflect.Type) Tomb IsDefault(reflect.Type) bool GetOrder() Order SetOrder(order Order) Tomb }
Tomb container of Goner
type Tracer ¶ added in v0.3.0
type Tracer interface { //SetTraceId to set `traceId` to the calling function. If traceId is an empty string, an automatic one will //be generated. TraceId can be obtained by using the GetTraceId () method in the calling function. SetTraceId(traceId string, fn func()) //GetTraceId Get the traceId of the current goroutine GetTraceId() string //Go Start a new goroutine instead of `go func`, which can pass the traceid to the new goroutine. Go(fn func()) //Recover use for catch panic in goroutine Recover() //RecoverSetTraceId SetTraceId and Recover RecoverSetTraceId(traceId string, fn func()) }
Tracer Log tracking, which is used to assign a unified traceId to the same call link to facilitate log tracking.