contexts everywhere.

This commit is contained in:
fiatjaf
2023-01-01 20:22:40 -03:00
parent c18de89dd3
commit 4a62a753e6
3 changed files with 89 additions and 93 deletions

View File

@@ -1,6 +1,7 @@
package nostr
import (
"context"
"sync"
)
@@ -34,16 +35,22 @@ func (sub *Subscription) Unsub() {
sub.stopped = true
}
func (sub *Subscription) Sub(filters Filters) {
func (sub *Subscription) Sub(ctx context.Context, filters Filters) {
sub.Filters = filters
sub.Fire()
sub.Fire(ctx)
}
func (sub *Subscription) Fire() {
func (sub *Subscription) Fire(ctx context.Context) {
message := []interface{}{"REQ", sub.id}
for _, filter := range sub.Filters {
message = append(message, filter)
}
sub.conn.WriteJSON(message)
// the subscription ends once the context is canceled
go func() {
<-ctx.Done()
sub.Unsub()
}()
}