/
githubmirror
/
ydb-go-sdk
Обзор
Документация
Войти
/
githubmirror
/
ydb-go-sdk
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
testutil/session.go
45 строк
895 B
Aleksey Myasnikov
* Fixed cases when some option is nil
12 мар 2024, 13:10
12 мар 2024, 13:10
67c9a32
Код
Авторство
О чём код?
package testutil import ( "fmt" "math" "strconv" "github.com/ydb-platform/ydb-go-sdk/v3/internal/xrand" ) type ( sessionIDOption func(*sessionIDHolder) sessionIDHolder struct { serviceID uint32 nodeID uint32 hash string } ) func WithServiceID(serviceID uint32) sessionIDOption { return func(h *sessionIDHolder) { h.serviceID = serviceID } } func WithNodeID(nodeID uint32) sessionIDOption { return func(h *sessionIDHolder) { h.nodeID = nodeID } } func SessionID(opts ...sessionIDOption) string { h := &sessionIDHolder{ serviceID: uint32(xrand.New().Int64(math.MaxUint32)), nodeID: uint32(xrand.New().Int64(math.MaxUint32)), hash: strconv.FormatInt(xrand.New().Int64(math.MaxInt64), 16), } for _, opt := range opts { if opt != nil { opt(h) } } return fmt.Sprintf("ydb://session/%d?node_id=%d&id=%s==", h.serviceID, h.nodeID, h.hash) }