diff --git a/relay.go b/relay.go index e00ffc3..5f6a391 100644 --- a/relay.go +++ b/relay.go @@ -18,7 +18,7 @@ const ( PublishStatusSucceeded Status = 1 ) -var subscriptionIdCounter = 0 +var subscriptionIdCounter xsync.Counter func (s Status) String() string { switch s { @@ -402,8 +402,8 @@ func (r *Relay) QuerySync(ctx context.Context, filter Filter) ([]*Event, error) } func (r *Relay) PrepareSubscription(ctx context.Context) *Subscription { - current := subscriptionIdCounter - subscriptionIdCounter++ + current := subscriptionIdCounter.Value() + subscriptionIdCounter.Inc() ctx, cancel := context.WithCancel(ctx) diff --git a/subscription.go b/subscription.go index d2b9388..3df922b 100644 --- a/subscription.go +++ b/subscription.go @@ -9,7 +9,7 @@ import ( type Subscription struct { label string - counter int + counter int64 conn *Connection mutex sync.Mutex @@ -38,7 +38,7 @@ func (sub *Subscription) SetLabel(label string) { // GetID return the Nostr subscription ID as given to the relay, it will be a sequential number, stringified. func (sub *Subscription) GetID() string { - return sub.label + ":" + strconv.Itoa(sub.counter) + return sub.label + ":" + strconv.FormatInt(sub.counter, 10) } // Unsub closes the subscription, sending "CLOSE" to relay as in NIP-01.