| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package adapter
- import (
- "context"
- "net/http"
- "sync"
- "github.com/sagernet/sing-box/option"
- "github.com/sagernet/sing/common/logger"
- )
- type HTTPTransport interface {
- http.RoundTripper
- CloseIdleConnections()
- Reset()
- }
- type HTTPClientManager interface {
- ResolveTransport(ctx context.Context, logger logger.ContextLogger, options option.HTTPClientOptions) (HTTPTransport, error)
- DefaultTransport() HTTPTransport
- ResetNetwork()
- }
- type HTTPStartContext struct {
- access sync.Mutex
- transports []HTTPTransport
- }
- func NewHTTPStartContext() *HTTPStartContext {
- return &HTTPStartContext{}
- }
- func (c *HTTPStartContext) Register(transport HTTPTransport) {
- c.access.Lock()
- defer c.access.Unlock()
- c.transports = append(c.transports, transport)
- }
- func (c *HTTPStartContext) Close() {
- for _, transport := range c.transports {
- transport.CloseIdleConnections()
- }
- }
|