新增功能: - stream 模块: 流式传输支持,优化大文件和实时数据传输 - Goroutine 池: 限制并发数量,减少调度开销 - 优雅升级: 零停机热升级,继承父进程监听器 - sendfile: 零拷贝文件传输,大文件直接从内核传输 重构改进: - App 结构体封装,支持热升级和信号处理 - 配置结构字段对齐和代码清理 - 完善错误处理和日志记录 Co-Authored-By: Claude <noreply@anthropic.com>
29 lines
651 B
Go
29 lines
651 B
Go
package middleware
|
|
|
|
import "github.com/valyala/fasthttp"
|
|
|
|
// Middleware 中间件接口
|
|
type Middleware interface {
|
|
Name() string
|
|
Process(next fasthttp.RequestHandler) fasthttp.RequestHandler
|
|
}
|
|
|
|
// Chain 中间件链
|
|
type Chain struct {
|
|
middlewares []Middleware
|
|
}
|
|
|
|
// NewChain 创建中间件链
|
|
func NewChain(middlewares ...Middleware) *Chain {
|
|
return &Chain{middlewares: middlewares}
|
|
}
|
|
|
|
// Apply 应用中间件链(逆序包装)
|
|
func (c *Chain) Apply(final fasthttp.RequestHandler) fasthttp.RequestHandler {
|
|
handler := final
|
|
for i := len(c.middlewares) - 1; i >= 0; i-- {
|
|
handler = c.middlewares[i].Process(handler)
|
|
}
|
|
return handler
|
|
}
|