@@ -11,7 +11,7 @@ import ./looping
11
11
type
12
12
JsonRpcSubscriptions * = ref object of RootObj
13
13
client: RpcClient
14
- callbacks: Table [JsonNode , SubscriptionCallback ]
14
+ callbacks: Table [string , SubscriptionCallback ]
15
15
SubscriptionCallback = proc (id, arguments: JsonNode ) {.gcsafe , raises :[].}
16
16
17
17
# FIXME Nim 1.6.XX seems to have issues tracking exception effects and will see
20
20
# would fix it, but it doesn't work here for some reason I yet don't
21
21
# understand. For now, therefore, I'm simply using a mitigation which is to
22
22
# tell the compiler the truth.
23
- template mitigateEffectsBug (body) = {.cast (raises: []).}: body
23
+ # template mitigateEffectsBug(body) = {.cast(raises: []).}: body
24
24
25
25
method subscribeBlocks * (subscriptions: JsonRpcSubscriptions ,
26
26
onBlock: BlockHandler ):
@@ -43,13 +43,13 @@ method unsubscribe*(subscriptions: JsonRpcSubscriptions,
43
43
method close * (subscriptions: JsonRpcSubscriptions ) {.async , base .} =
44
44
let ids = toSeq subscriptions.callbacks.keys
45
45
for id in ids:
46
- await subscriptions.unsubscribe (id)
46
+ await subscriptions.unsubscribe (% id)
47
47
48
48
proc getCallback (subscriptions: JsonRpcSubscriptions ,
49
49
id: JsonNode ): ? SubscriptionCallback =
50
50
try :
51
- if subscriptions.callbacks.hasKey (id):
52
- subscriptions.callbacks[id].some
51
+ if subscriptions.callbacks.hasKey ($ id):
52
+ subscriptions.callbacks[$ id].some
53
53
else :
54
54
SubscriptionCallback .none
55
55
except Exception :
@@ -78,7 +78,7 @@ method subscribeBlocks(subscriptions: WebSocketSubscriptions,
78
78
if blck =? Block .fromJson (arguments[" result" ]).catch:
79
79
onBlock (blck)
80
80
let id = await subscriptions.client.eth_subscribe (" newHeads" )
81
- mitigateEffectsBug: subscriptions.callbacks[id] = callback
81
+ subscriptions.callbacks[$ id] = callback
82
82
return id
83
83
84
84
method subscribeLogs (subscriptions: WebSocketSubscriptions ,
@@ -90,14 +90,14 @@ method subscribeLogs(subscriptions: WebSocketSubscriptions,
90
90
if log =? Log .fromJson (arguments[" result" ]).catch:
91
91
onLog (log)
92
92
let id = await subscriptions.client.eth_subscribe (" logs" , filter)
93
- mitigateEffectsBug: subscriptions.callbacks[id] = callback
93
+ subscriptions.callbacks[$ id] = callback
94
94
return id
95
95
96
- method unsubscribe (subscriptions: WebSocketSubscriptions ,
96
+ method unsubscribe * (subscriptions: WebSocketSubscriptions ,
97
97
id: JsonNode )
98
98
{.async .} =
99
- mitigateEffectsBug: subscriptions.callbacks.del (id)
100
- discard await subscriptions.client.eth_unsubscribe (id)
99
+ subscriptions.callbacks.del ($ id)
100
+ discard await subscriptions.client.eth_unsubscribe (% id)
101
101
102
102
# Polling
103
103
@@ -125,7 +125,7 @@ proc new*(_: type JsonRpcSubscriptions,
125
125
proc poll {.async .} =
126
126
untilCancelled:
127
127
for id in toSeq subscriptions.callbacks.keys:
128
- await poll (id)
128
+ await poll (% id)
129
129
await sleepAsync (pollingInterval)
130
130
131
131
subscriptions.polling = poll ()
@@ -152,7 +152,7 @@ method subscribeBlocks(subscriptions: PollingSubscriptions,
152
152
asyncSpawn getBlock (hash)
153
153
154
154
let id = await subscriptions.client.eth_newBlockFilter ()
155
- mitigateEffectsBug: subscriptions.callbacks[id] = callback
155
+ subscriptions.callbacks[$ id] = callback
156
156
return id
157
157
158
158
method subscribeLogs (subscriptions: PollingSubscriptions ,
@@ -166,11 +166,11 @@ method subscribeLogs(subscriptions: PollingSubscriptions,
166
166
onLog (log)
167
167
168
168
let id = await subscriptions.client.eth_newFilter (filter)
169
- mitigateEffectsBug: subscriptions.callbacks[id] = callback
169
+ subscriptions.callbacks[$ id] = callback
170
170
return id
171
171
172
- method unsubscribe (subscriptions: PollingSubscriptions ,
172
+ method unsubscribe * (subscriptions: PollingSubscriptions ,
173
173
id: JsonNode )
174
174
{.async .} =
175
- mitigateEffectsBug: subscriptions.callbacks.del (id)
175
+ subscriptions.callbacks.del ($ id)
176
176
discard await subscriptions.client.eth_uninstallFilter (id)
0 commit comments