mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-09-18 11:32:25 +02:00
update to go1.18 and use generic sync maps instead of normal maps.
fixes https://github.com/fiatjaf/go-nostr/issues/12
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
package nostr
|
||||
|
||||
import (
|
||||
s "github.com/SaveTheRbtz/generic-sync-map-go"
|
||||
)
|
||||
|
||||
type Subscription struct {
|
||||
channel string
|
||||
relays map[string]*Connection
|
||||
relays s.MapOf[string, *Connection]
|
||||
|
||||
filters Filters
|
||||
Events chan EventMessage
|
||||
@@ -19,12 +23,13 @@ type EventMessage struct {
|
||||
}
|
||||
|
||||
func (subscription Subscription) Unsub() {
|
||||
for _, conn := range subscription.relays {
|
||||
subscription.relays.Range(func(_ string, conn *Connection) bool {
|
||||
conn.WriteJSON([]interface{}{
|
||||
"CLOSE",
|
||||
subscription.channel,
|
||||
})
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
subscription.stopped = true
|
||||
if subscription.Events != nil {
|
||||
@@ -38,7 +43,7 @@ func (subscription Subscription) Unsub() {
|
||||
func (subscription *Subscription) Sub(filters Filters) {
|
||||
subscription.filters = filters
|
||||
|
||||
for _, conn := range subscription.relays {
|
||||
subscription.relays.Range(func(_ string, conn *Connection) bool {
|
||||
message := []interface{}{
|
||||
"REQ",
|
||||
subscription.channel,
|
||||
@@ -48,7 +53,8 @@ func (subscription *Subscription) Sub(filters Filters) {
|
||||
}
|
||||
|
||||
conn.WriteJSON(message)
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
if !subscription.started {
|
||||
go subscription.startHandlingUnique()
|
||||
@@ -69,8 +75,8 @@ func (subscription Subscription) startHandlingUnique() {
|
||||
}
|
||||
|
||||
func (subscription Subscription) removeRelay(relay string) {
|
||||
if conn, ok := subscription.relays[relay]; ok {
|
||||
delete(subscription.relays, relay)
|
||||
if conn, ok := subscription.relays.Load(relay); ok {
|
||||
subscription.relays.Delete(relay)
|
||||
conn.WriteJSON([]interface{}{
|
||||
"CLOSE",
|
||||
subscription.channel,
|
||||
@@ -79,7 +85,7 @@ func (subscription Subscription) removeRelay(relay string) {
|
||||
}
|
||||
|
||||
func (subscription Subscription) addRelay(relay string, conn *Connection) {
|
||||
subscription.relays[relay] = conn
|
||||
subscription.relays.Store(relay, conn)
|
||||
|
||||
message := []interface{}{
|
||||
"REQ",
|
||||
|
Reference in New Issue
Block a user