refactor(api): restructured API for type safety, maintainability and docs generation

- These changes makes the API incombatible with previous versions
- Added new types for error handling, success responses, and health checks.
- Updated health check logic to utilize the new types for better clarity and structure.
- Refactored existing handlers to improve response consistency and error handling.
- Updated Makefile to include a new target for generating API types from Swagger.
- Updated "new agent" API to respond an encrypted cert pair
This commit is contained in:
yusing
2025-08-16 13:04:05 +08:00
parent fce9ce21c9
commit 35a3e3fef6
149 changed files with 13173 additions and 2173 deletions

View File

@@ -4,30 +4,31 @@ import (
"net/http"
"sync/atomic"
F "github.com/yusing/go-proxy/internal/utils/functional"
"github.com/puzpuzpuz/xsync/v4"
"github.com/yusing/go-proxy/internal/types"
)
type leastConn struct {
*LoadBalancer
nConn F.Map[Server, *atomic.Int64]
nConn *xsync.Map[types.LoadBalancerServer, *atomic.Int64]
}
func (lb *LoadBalancer) newLeastConn() impl {
return &leastConn{
LoadBalancer: lb,
nConn: F.NewMapOf[Server, *atomic.Int64](),
nConn: xsync.NewMap[types.LoadBalancerServer, *atomic.Int64](),
}
}
func (impl *leastConn) OnAddServer(srv Server) {
func (impl *leastConn) OnAddServer(srv types.LoadBalancerServer) {
impl.nConn.Store(srv, new(atomic.Int64))
}
func (impl *leastConn) OnRemoveServer(srv Server) {
func (impl *leastConn) OnRemoveServer(srv types.LoadBalancerServer) {
impl.nConn.Delete(srv)
}
func (impl *leastConn) ServeHTTP(srvs Servers, rw http.ResponseWriter, r *http.Request) {
func (impl *leastConn) ServeHTTP(srvs types.LoadBalancerServers, rw http.ResponseWriter, r *http.Request) {
srv := srvs[0]
minConn, ok := impl.nConn.Load(srv)
if !ok {