Files
Atay-Makhzan/modules/web/routing/context.go
T

50 lines
1.1 KiB
Go
Raw Normal View History

2022-01-20 19:41:25 +08:00
// Copyright 2021 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
2022-01-20 19:41:25 +08:00
package routing
import (
"context"
"net/http"
)
type contextKeyType struct{}
var contextKey contextKeyType
2022-01-20 18:46:10 +01:00
// UpdateFuncInfo updates a context's func info
2022-01-20 19:41:25 +08:00
func UpdateFuncInfo(ctx context.Context, funcInfo *FuncInfo) {
record, ok := ctx.Value(contextKey).(*requestRecord)
if !ok {
return
}
record.lock.Lock()
record.funcInfo = funcInfo
record.lock.Unlock()
}
2022-07-12 17:32:37 -04:00
// MarkLongPolling marks the request is a long-polling request, and the logger may output different message for it
2022-01-20 19:41:25 +08:00
func MarkLongPolling(resp http.ResponseWriter, req *http.Request) {
record, ok := req.Context().Value(contextKey).(*requestRecord)
if !ok {
return
}
record.lock.Lock()
record.isLongPolling = true
record.lock.Unlock()
}
2022-01-20 18:46:10 +01:00
// UpdatePanicError updates a context's error info, a panic may be recovered by other middlewares, but we still need to know that.
2023-07-04 20:36:08 +02:00
func UpdatePanicError(ctx context.Context, err any) {
2022-01-20 19:41:25 +08:00
record, ok := ctx.Value(contextKey).(*requestRecord)
if !ok {
return
}
record.lock.Lock()
record.panicError = err
record.lock.Unlock()
}