提供一个测试注册代理接口

This commit is contained in:
2025-12-01 12:42:51 +08:00
parent c0b3490d00
commit 299ce821d5
5 changed files with 86 additions and 15 deletions

View File

@@ -162,23 +162,18 @@ type ResourceView struct {
}
func lockChans(batch string, count int, expire time.Time) ([]netip.AddrPort, error) {
results, err := g.Redis.Eval(
chans, err := g.Redis.Eval(
context.Background(),
RedisScriptLockChans,
[]string{"channel"},
batch,
count,
expire.Unix(),
).Result()
).StringSlice()
if err != nil {
return nil, core.NewBizErr("获取通道失败", err)
}
chans, ok := results.([]string)
if !ok {
return nil, core.NewServErr("转换通道数据失败")
}
addrs := make([]netip.AddrPort, len(chans))
for i, ch := range chans {
addr, err := netip.ParseAddrPort(ch)
@@ -200,11 +195,11 @@ local expire = tonumber(ARGV[3])
local chans_key = key .. ":chans"
local lease_key = key .. ":lease:" .. batch
if redis.call("SCARD", key) < count then
if redis.call("SCARD", chans_key) < count then
return nil
end
local ports = redis.call("SPOP", key, count)
local ports = redis.call("SPOP", chans_key, count)
redis.call("SET", lease_key, cjson.encode({
p = ports,
@@ -244,6 +239,20 @@ redis.call("DEL", lease_key)
return chans
`
func registerChans(chans []netip.AddrPort) error {
strs := make([]string, len(chans))
for i, ch := range chans {
strs[i] = ch.String()
}
err := g.Redis.SAdd(context.Background(), "channel:chans", strs).Err()
if err != nil {
return core.NewBizErr("注册通道失败", err)
}
return nil
}
// 错误信息
var (
ErrResourceNotExist = core.NewBizErr("套餐不存在")