Merger
This commit is contained in:
@ -241,7 +241,7 @@ export class NostrSystem extends ExternalStore<SystemSnapshot> implements System
|
||||
return existing;
|
||||
}
|
||||
const filters = !req.options?.skipDiff
|
||||
? req.buildDiff(this.#relayCache, existing.flatFilters)
|
||||
? req.buildDiff(this.#relayCache, existing.filters)
|
||||
: req.build(this.#relayCache);
|
||||
if (filters.length === 0 && !!req.options?.skipDiff) {
|
||||
return existing;
|
||||
|
@ -4,9 +4,7 @@ import { unixNowMs, unwrap } from "@snort/shared";
|
||||
|
||||
import { Connection, ReqFilter, Nips, TaggedNostrEvent } from ".";
|
||||
import { NoteStore } from "./note-collection";
|
||||
import { flatMerge } from "./request-merger";
|
||||
import { BuiltRawReqFilter } from "./request-builder";
|
||||
import { FlatReqFilter, expandFilter } from "./request-expander";
|
||||
import { eventMatchesFilter } from "./request-matcher";
|
||||
|
||||
/**
|
||||
@ -19,7 +17,6 @@ class QueryTrace {
|
||||
eose?: number;
|
||||
close?: number;
|
||||
#wasForceClosed = false;
|
||||
readonly flatFilters: Array<FlatReqFilter>;
|
||||
readonly #fnClose: (id: string) => void;
|
||||
readonly #fnProgress: () => void;
|
||||
|
||||
@ -34,7 +31,6 @@ class QueryTrace {
|
||||
this.start = unixNowMs();
|
||||
this.#fnClose = fnClose;
|
||||
this.#fnProgress = fnProgress;
|
||||
this.flatFilters = filters.flatMap(expandFilter);
|
||||
}
|
||||
|
||||
sentToRelay() {
|
||||
@ -166,11 +162,7 @@ export class Query implements QueryBase {
|
||||
* Recompute the complete set of compressed filters from all query traces
|
||||
*/
|
||||
get filters() {
|
||||
return flatMerge(this.flatFilters);
|
||||
}
|
||||
|
||||
get flatFilters() {
|
||||
return this.#tracing.flatMap(a => a.flatFilters);
|
||||
return this.#tracing.flatMap(a => a.filters);
|
||||
}
|
||||
|
||||
get feed() {
|
||||
|
@ -1,12 +1,12 @@
|
||||
import debug from "debug";
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { appendDedupe, sanitizeRelayUrl, unixNowMs } from "@snort/shared";
|
||||
import { get_diff }from "@snort/system-query";
|
||||
|
||||
import { ReqFilter, u256, HexKey, EventKind } from ".";
|
||||
import { diffFilters } from "./request-splitter";
|
||||
import { RelayCache, splitByWriteRelays, splitFlatByWriteRelays } from "./gossip-model";
|
||||
import { flatMerge, mergeSimilar } from "./request-merger";
|
||||
import { FlatReqFilter, expandFilter } from "./request-expander";
|
||||
import { FlatReqFilter } from "./request-expander";
|
||||
|
||||
/**
|
||||
* Which strategy is used when building REQ filters
|
||||
@ -103,15 +103,16 @@ export class RequestBuilder {
|
||||
/**
|
||||
* Detects a change in request from a previous set of filters
|
||||
*/
|
||||
buildDiff(relays: RelayCache, prev: Array<FlatReqFilter>): Array<BuiltRawReqFilter> {
|
||||
buildDiff(relays: RelayCache, prev: Array<ReqFilter>): Array<BuiltRawReqFilter> {
|
||||
const start = unixNowMs();
|
||||
|
||||
const next = this.#builders.flatMap(f => expandFilter(f.filter));
|
||||
const diff = diffFilters(prev, next);
|
||||
//const next = this.#builders.flatMap(f => expandFilter(f.filter));
|
||||
//const diff = diffFilters(prev, next);
|
||||
const diff = get_diff(prev, this.buildRaw()) as Array<FlatReqFilter>;
|
||||
const ts = unixNowMs() - start;
|
||||
this.#log("buildDiff %s %d ms", this.id, ts);
|
||||
if (diff.changed) {
|
||||
return splitFlatByWriteRelays(relays, diff.added).map(a => {
|
||||
if (diff.length > 0) {
|
||||
return splitFlatByWriteRelays(relays, diff).map(a => {
|
||||
return {
|
||||
strategy: RequestStrategy.AuthorsRelays,
|
||||
filters: flatMerge(a.filters),
|
||||
|
Reference in New Issue
Block a user