Files
aitrade/pkg/app/client/reqid.go
T
kaedwen ea141eb012
Build and Push Docker Image / build-and-push (push) Failing after 1m41s
initial
2026-07-02 20:09:44 +02:00

55 lines
1.1 KiB
Go

package client
import (
"log/slog"
"sync"
)
// RequestIDGenerator generates sequential request IDs for IB API calls
type RequestIDGenerator struct {
mu sync.Mutex
current int64
logger *slog.Logger
}
// NewRequestIDGenerator creates a new request ID generator starting at 1
func NewRequestIDGenerator(logger *slog.Logger) *RequestIDGenerator {
return &RequestIDGenerator{
current: 1,
logger: logger,
}
}
// Next returns the next sequential request ID and logs it
func (r *RequestIDGenerator) Next() int64 {
r.mu.Lock()
defer r.mu.Unlock()
id := r.current
r.current++
if r.logger != nil {
r.logger.Debug("generated request ID", slog.Int64("req_id", id))
}
return id
}
// Current returns the current request ID without incrementing
func (r *RequestIDGenerator) Current() int64 {
r.mu.Lock()
defer r.mu.Unlock()
return r.current
}
// Reset resets the generator back to 1 (useful for testing or reconnection)
func (r *RequestIDGenerator) Reset() {
r.mu.Lock()
defer r.mu.Unlock()
r.current = 1
if r.logger != nil {
r.logger.Debug("reset request ID generator")
}
}