Pass timeout to PrepareConnection

This commit is contained in:
世界 2025-08-24 18:59:55 +08:00
parent 9532c7f1f6
commit ff4941daa4
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
7 changed files with 24 additions and 12 deletions

View file

@ -25,6 +25,7 @@ type DirectRouteSession struct {
type DirectRouteMapping struct {
mapping freelru.Cache[DirectRouteSession, DirectRouteDestination]
timeout time.Duration
}
func NewDirectRouteMapping(timeout time.Duration) *DirectRouteMapping {
@ -36,16 +37,16 @@ func NewDirectRouteMapping(timeout time.Duration) *DirectRouteMapping {
action.Close()
})
mapping.SetLifetime(timeout)
return &DirectRouteMapping{mapping}
return &DirectRouteMapping{mapping, timeout}
}
func (m *DirectRouteMapping) Lookup(session DirectRouteSession, constructor func() (DirectRouteDestination, error)) (DirectRouteDestination, error) {
func (m *DirectRouteMapping) Lookup(session DirectRouteSession, constructor func(timeout time.Duration) (DirectRouteDestination, error)) (DirectRouteDestination, error) {
var (
created DirectRouteDestination
err error
)
action, _, ok := m.mapping.GetAndRefreshOrAdd(session, func() (DirectRouteDestination, bool) {
created, err = constructor()
created, err = constructor(m.timeout)
return created, err == nil
})
if !ok {