mirror of
https://github.com/soypat/lneto.git
synced 2026-08-17 21:24:04 +00:00
httphi router refactor (#176)
* httphi: RouterConfig refactor to enable DefaultRouterConfig * RequestHeader not case sensitive anymore * httphi: use DefaultRouterConfig in examples * httphi: remove gated stage complexity Misusing Stage methods by calling them once header has been written is totally harmless as far as I can tell. We simplify the codebase on this occasion by removing the headerWritten check for all stage methods * httphi: improve APIs * httphi: remove status
This commit is contained in:
@@ -38,12 +38,7 @@ var indexhtml string
|
||||
// Router memory. The router allocates all of it on Configure and never again,
|
||||
// so these are the whole cost of serving HTTP over the stack.
|
||||
const (
|
||||
// A browser sends around 700 bytes of header on a landing page request.
|
||||
requestHeaderBuffer = 1024
|
||||
// Response headers reuse whatever the request left unused on top of this,
|
||||
// and the status line does not count towards it.
|
||||
responseHeaderBuffer = 256
|
||||
numHeaderFields = 16
|
||||
httpConnMemoryUse = 4 * 1024
|
||||
// One exchange is allocated per worker, and a worker holds its exchange for
|
||||
// the whole request, so this is what bounds requests served at once.
|
||||
numWorkers = 2
|
||||
@@ -252,14 +247,9 @@ func run() (err error) {
|
||||
server.handle("GET /stats", server.stats)
|
||||
|
||||
var router httphi.Router
|
||||
err = router.Configure(httphi.RouterConfig{
|
||||
FixedNumGoroutines: numWorkers,
|
||||
RequestHeaderBufferSize: requestHeaderBuffer,
|
||||
ResponseHeaderMinBufferSize: responseHeaderBuffer,
|
||||
RequestNumHeaderKVCap: numHeaderFields,
|
||||
Mux: &server.mux,
|
||||
Logger: slog.Default(),
|
||||
})
|
||||
cfg := httphi.DefaultRouterConfig(numWorkers, httpConnMemoryUse, server.mux.MaxPathValues())
|
||||
cfg.Logger = slog.Default()
|
||||
err = router.Configure(&server.mux, cfg)
|
||||
if err != nil {
|
||||
return fmt.Errorf("configuring HTTP router: %w", err)
|
||||
}
|
||||
@@ -322,7 +312,7 @@ type httpServer struct {
|
||||
func (sv *httpServer) handle(pattern string, handler httphi.HandlerFunc) {
|
||||
sv.mux.Handle(pattern, func(exch *httphi.Exchange) {
|
||||
sv.served.Add(1)
|
||||
fmt.Printf("< %s %s\n", exch.RequestMethodRaw(), exch.RequestTarget())
|
||||
fmt.Printf("< %s %s\n", exch.RequestMethodBytes(), exch.RequestTarget())
|
||||
handler(exch)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user