Files
ezbookkeeping/pkg/requestid/request_id_container.go
2025-08-04 20:54:10 +08:00

56 lines
1.4 KiB
Go

package requestid
import (
"github.com/mayswind/ezbookkeeping/pkg/core"
"github.com/mayswind/ezbookkeeping/pkg/settings"
)
// RequestIdContainer contains the current request id generator
type RequestIdContainer struct {
current RequestIdGenerator
}
// Initialize a request id container singleton instance
var (
Container = &RequestIdContainer{}
)
// InitializeRequestIdGenerator initializes the current request id generator according to the config
func InitializeRequestIdGenerator(c core.Context, config *settings.Config) error {
generator, err := NewDefaultRequestIdGenerator(c, config)
if err != nil {
return err
}
Container.current = generator
return nil
}
// GenerateRequestId returns a new request id by the current request id generator
func (r *RequestIdContainer) GenerateRequestId(clientIpAddr string, clientPort uint16) string {
if r.current == nil {
return ""
}
return r.current.GenerateRequestId(clientIpAddr, clientPort)
}
// GetCurrentServerUniqId returns current server unique id
func (r *RequestIdContainer) GetCurrentServerUniqId() uint16 {
if r.current == nil {
return 0
}
return r.current.GetCurrentServerUniqId()
}
// GetCurrentInstanceUniqId returns current application instance unique id
func (r *RequestIdContainer) GetCurrentInstanceUniqId() uint16 {
if r.current == nil {
return 0
}
return r.current.GetCurrentInstanceUniqId()
}