2025-12-26 11:13:31 +08:00
|
|
|
package swqos
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/samlior/libsam/pkg/enum"
|
|
|
|
|
"github.com/samlior/libsam/pkg/swqos/clients"
|
|
|
|
|
)
|
|
|
|
|
|
2025-12-26 13:38:06 +08:00
|
|
|
func NewSWQoSClient(ctx context.Context, config *SWQoSClientConfig) (SWQoSClient, error) {
|
2025-12-26 11:13:31 +08:00
|
|
|
var err error
|
|
|
|
|
var client SWQoSClient
|
2025-12-26 13:38:06 +08:00
|
|
|
switch config.Name {
|
2025-12-26 11:13:31 +08:00
|
|
|
case enum.SWQoSAgentBlockRazor:
|
|
|
|
|
client, err = clients.NewBlockRazorClient(ctx, config.SendTxUrl)
|
|
|
|
|
case enum.SWQoSAgentNextBlock:
|
|
|
|
|
client = clients.NewNextBlockHttpClient(config.SendTxUrl)
|
|
|
|
|
case enum.SWQoSAgentNode1:
|
|
|
|
|
client = clients.NewNode1Client(config.SendTxUrl)
|
|
|
|
|
case enum.SWQoSAgentFlashBlock:
|
|
|
|
|
client = clients.NewFlashBlockClient(config.SendTxUrl, config.SendBundleUrl)
|
|
|
|
|
case enum.SWQoSAgentAstralane:
|
|
|
|
|
client = clients.NewAstralaneClient(config.SendTxUrl)
|
|
|
|
|
case enum.SWQoSAgentBlocxRoute:
|
|
|
|
|
client = clients.NewBloxrouteClient(config.SendTxUrl)
|
2026-01-07 17:26:00 +08:00
|
|
|
case enum.SWQoSAgentSoyas:
|
|
|
|
|
client = clients.NewSoyasClient(ctx, config.SendTxUrl)
|
2025-12-26 11:13:31 +08:00
|
|
|
case enum.SWQoSAgent0slot, enum.SWQoSAgentJito, enum.SWQoSAgentHelius, enum.SWQoSAgentNozomi, enum.SWQoSAgentStellium:
|
|
|
|
|
client = clients.NewHttpClient(config.SendTxUrl, config.SendBundleUrl)
|
|
|
|
|
default:
|
2025-12-26 13:38:06 +08:00
|
|
|
return nil, fmt.Errorf("invalid agent: %s", config.Name)
|
2025-12-26 11:13:31 +08:00
|
|
|
}
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if config.KeepAliveUrl != "" {
|
|
|
|
|
go DoKeepAlive(ctx, config.KeepAliveUrl)
|
|
|
|
|
}
|
|
|
|
|
return client, err
|
|
|
|
|
}
|