Skip to content

Commit

Permalink
refactor: rename filter to logFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
AuHau committed Oct 30, 2024
1 parent 1f27a40 commit c827403
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
15 changes: 8 additions & 7 deletions ethers/providers/jsonrpc/subscriptions.nim
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ type
# We need to keep around the filters that are used to create log filters on the RPC node
# as there might be a time when they need to be recreated as RPC node might prune/forget
# about them
filters: Table[JsonNode, EventFilter]
logFilters: Table[JsonNode, EventFilter]

# Used when filters are recreated to translate from the id that user
# originally got returned to new filter id
Expand Down Expand Up @@ -168,10 +168,11 @@ proc new*(_: type JsonRpcSubscriptions,
except CatchableError as e:
if "filter not found" in e.msg:
var newId: JsonNode
# If there exists filter for given ID, then the filter was a log filter
# otherwise it was a block filter
if subscriptions.filters.hasKey(originalId):
let filter = subscriptions.filters[originalId]
# Log filters are stored in logFilters, block filters are not persisted
# there is they do not need any specific data for their recreation.
# We use this to determine if the filter was log or block filter here.
if subscriptions.logFilters.hasKey(originalId):
let filter = subscriptions.logFilters[originalId]
newId = await subscriptions.client.eth_newFilter(filter)
else:
newId = await subscriptions.client.eth_newBlockFilter()
Expand Down Expand Up @@ -231,14 +232,14 @@ method subscribeLogs(subscriptions: PollingSubscriptions,

let id = await subscriptions.client.eth_newFilter(filter)
subscriptions.callbacks[id] = callback
subscriptions.filters[id] = filter
subscriptions.logFilters[id] = filter
subscriptions.subscriptionMapping[id] = id
return id

method unsubscribe*(subscriptions: PollingSubscriptions,
id: JsonNode)
{.async.} =
subscriptions.filters.del(id)
subscriptions.logFilters.del(id)
subscriptions.callbacks.del(id)
let sub = subscriptions.subscriptionMapping[id]
subscriptions.subscriptionMapping.del(id)
Expand Down
8 changes: 4 additions & 4 deletions testmodule/providers/jsonrpc/testJsonRpcSubscriptions.nim
Original file line number Diff line number Diff line change
Expand Up @@ -128,14 +128,14 @@ suite "HTTP polling subscriptions - filter not found":
let filter = EventFilter(address: Address.example, topics: @[array[32, byte].example])
let emptyHandler = proc(log: Log) = discard

check subscriptions.filters.len == 0
check subscriptions.logFilters.len == 0
check subscriptions.subscriptionMapping.len == 0

let id = await subscriptions.subscribeLogs(filter, emptyHandler)

check subscriptions.filters[id] == filter
check subscriptions.logFilters[id] == filter
check subscriptions.subscriptionMapping[id] == id
check subscriptions.filters.len == 1
check subscriptions.logFilters.len == 1
check subscriptions.subscriptionMapping.len == 1

mockServer.invalidateFilter(id)
Expand All @@ -151,7 +151,7 @@ suite "HTTP polling subscriptions - filter not found":

await subscriptions.unsubscribe(id)

check not subscriptions.filters.hasKey id
check not subscriptions.logFilters.hasKey id
check not subscriptions.subscriptionMapping.hasKey id

test "filter not found error recreates block filter":
Expand Down

0 comments on commit c827403

Please sign in to comment.