mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-08 16:28:49 +00:00
get rid of RelayTrackingPool, merge it into SimplePool.
This commit is contained in:
30
pool.ts
30
pool.ts
@@ -11,6 +11,8 @@ export type SubscribeManyParams = Omit<SubscriptionParams, 'onclose'> & {
|
|||||||
|
|
||||||
export class SimplePool {
|
export class SimplePool {
|
||||||
private relays = new Map<string, Relay>()
|
private relays = new Map<string, Relay>()
|
||||||
|
public seenOn = new Map<string, Set<Relay>>()
|
||||||
|
public trackRelays: boolean = false
|
||||||
|
|
||||||
async ensureRelay(url: string): Promise<Relay> {
|
async ensureRelay(url: string): Promise<Relay> {
|
||||||
url = normalizeURL(url)
|
url = normalizeURL(url)
|
||||||
@@ -29,6 +31,17 @@ export class SimplePool {
|
|||||||
filters: Filter[],
|
filters: Filter[],
|
||||||
params: SubscribeManyParams,
|
params: SubscribeManyParams,
|
||||||
): Promise<{ close: () => void }> {
|
): Promise<{ close: () => void }> {
|
||||||
|
if (this.trackRelays) {
|
||||||
|
params.receivedEvent = (relay: Relay, id: string) => {
|
||||||
|
let set = this.seenOn.get(id)
|
||||||
|
if (!set) {
|
||||||
|
set = new Set()
|
||||||
|
this.seenOn.set(id, set)
|
||||||
|
}
|
||||||
|
set.add(relay)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const _knownIds = new Set<string>()
|
const _knownIds = new Set<string>()
|
||||||
params.alreadyHaveEvent = (id: string) => {
|
params.alreadyHaveEvent = (id: string) => {
|
||||||
if (params.alreadyHaveEvent?.(id)) {
|
if (params.alreadyHaveEvent?.(id)) {
|
||||||
@@ -148,20 +161,3 @@ export class SimplePool {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class RelayTrackingPool extends SimplePool {
|
|
||||||
public seenOn = new Map<string, Set<Relay>>()
|
|
||||||
|
|
||||||
subscribeMany(relays: string[], filters: Filter[], params: SubscribeManyParams): Promise<{ close: () => void }> {
|
|
||||||
params.receivedEvent = (relay: Relay, id: string) => {
|
|
||||||
let set = this.seenOn.get(id)
|
|
||||||
if (!set) {
|
|
||||||
set = new Set()
|
|
||||||
this.seenOn.set(id, set)
|
|
||||||
}
|
|
||||||
set.add(relay)
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.subscribeMany(relays, filters, params)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user