github.com/inazumav/sing-box@v0.0.0-20230926072359-ab51429a14f1/experimental/libbox/pprof.go (about)

     1  package libbox
     2  
     3  import (
     4  	"net"
     5  	"net/http"
     6  	_ "net/http/pprof"
     7  	"strconv"
     8  )
     9  
    10  type PProfServer struct {
    11  	server *http.Server
    12  }
    13  
    14  func NewPProfServer(port int) *PProfServer {
    15  	return &PProfServer{
    16  		&http.Server{
    17  			Addr: ":" + strconv.Itoa(port),
    18  		},
    19  	}
    20  }
    21  
    22  func (s *PProfServer) Start() error {
    23  	ln, err := net.Listen("tcp", s.server.Addr)
    24  	if err != nil {
    25  		return err
    26  	}
    27  	go s.server.Serve(ln)
    28  	return nil
    29  }
    30  
    31  func (s *PProfServer) Close() error {
    32  	return s.server.Close()
    33  }