gcore serve http https and so on
BenchmarkServer-4 1000000 1012 ns/op 528 B/op 7 allocs/op
PASS
ok github.com/slclub/gcore 1.029s
Listen service include http, https and websockets and unix file.
- Http
- Https
- UnixSock
- WebSocket
- Run
- DriverRegister(driver interface{})
Register a flow node
en := gcore.New()
// add Process
mida := execute.NewMiddle("before_mid")
en.DriverRegister(mida)
- Driver(name string) interface{}
Get any type of drvier node.
- DriverRouter(name string) (grouter.Router, bool)
Get router type of driver node.
- DriverMiddler(name string) (execute.Middler, bool)
Get Middler driver node.
- OverAllocate func() gnet.Contexter
Rewrite core.allocate method.
- ServeHTTP(w http.ResponseWriter, req *http.Request)
- allocate; internal method. alloc memory.
Execute flow.
Execute flow node base interface.
type LinkInvoker interface {
Invoker() permission.Invoker
InitInvoker()
}
type IExecuteNode interface {
gnet.Executer
LinkInvoker
GetKey() string
SetKey(string)
}
type Flow struct {
nodes []interface{}
}
- RecoverNode()
Execute node recovery like try catch.
Panic of receiving node
- RecoverCore()
Execute flow recovery like try catch.
Panic of receiving from the whole request.
Actual execution nodes
Implement gnet.Executer interface.
Implement IExecuteNode interface.
func (p *Process) Execute(ctx gnet.Contexter) {
exec := ctx.GetExecute()
if exec != nil {
exec.Execute(ctx)
}
ctx.GetHandler()(ctx)
}
Implement gnet.Executer interface. The core executive interface. The most important interface.
Implement execute.IExecuteNode interface.
Implement execute.Middler interface.
type Middler interface {
// public excuter interface.
flow.IExecuteNode
// middle ware interface
Use(gnet.HandleFunc)
Deny(gnet.HandleFunc)
GetHandle(i int) (gnet.HandleFunc, string)
Combine(Middler)
Size() int
}