Files
libsam/pkg/swqos/factory.go
2026-01-28 15:24:43 +08:00

42 lines
1.3 KiB
Go

package swqos
import (
"context"
"fmt"
"github.com/samlior/libsam/v2/pkg/enum"
"github.com/samlior/libsam/v2/pkg/swqos/clients"
)
func NewSWQoSClient(ctx context.Context, config *SWQoSClientConfig) (SWQoSClient, error) {
var err error
var client SWQoSClient
switch config.Name {
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)
case enum.SWQoSAgentSoyas:
client = clients.NewSoyasClient(ctx, config.SendTxUrl)
case enum.SWQoSAgent0slot, enum.SWQoSAgentJito, enum.SWQoSAgentHelius, enum.SWQoSAgentNozomi, enum.SWQoSAgentStellium:
client = clients.NewHttpClient(config.SendTxUrl, config.SendBundleUrl)
default:
return nil, fmt.Errorf("invalid agent: %s", config.Name)
}
if err != nil {
return nil, err
}
if config.KeepAliveUrl != "" {
go DoKeepAlive(ctx, config.KeepAliveUrl)
}
return client, err
}