| 12345678910111213141516171819202122232425262728293031323334 |
- package route
- import (
- "context"
- "net/netip"
- "github.com/sagernet/sing-box/adapter"
- "github.com/sagernet/sing-box/common/process"
- )
- type processCacheKey struct {
- Network string
- Source netip.AddrPort
- Destination netip.AddrPort
- }
- type processCacheEntry struct {
- result *adapter.ConnectionOwner
- err error
- }
- func (r *Router) findProcessInfoCached(ctx context.Context, network string, source netip.AddrPort, destination netip.AddrPort) (*adapter.ConnectionOwner, error) {
- key := processCacheKey{
- Network: network,
- Source: source,
- Destination: destination,
- }
- if entry, ok := r.processCache.Get(key); ok {
- return entry.result, entry.err
- }
- result, err := process.FindProcessInfo(r.processSearcher, ctx, network, source, destination)
- r.processCache.Add(key, processCacheEntry{result: result, err: err})
- return result, err
- }
|