Skip to content
This repository has been archived by the owner on Apr 23, 2024. It is now read-only.

Fix #29

Merged
merged 2 commits into from
Aug 21, 2019
Merged

Fix #29

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gear/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.0.1"
__version__ = "2.0.2"
4 changes: 2 additions & 2 deletions gear/rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ async def get_block(block_identifier, full_tx):

@method
async def eth_newBlockFilter():
return thor.new_block_filter()
return await thor.new_block_filter()


@method
Expand All @@ -268,7 +268,7 @@ async def eth_uninstallFilter(filter_id):
@method
@async_serialize
async def eth_getFilterChanges(filter_id):
return thor.get_filter_changes(filter_id)
return await thor.get_filter_changes(filter_id)


@method
Expand Down
22 changes: 13 additions & 9 deletions gear/thor/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,19 +149,20 @@ async def get_code(self, address, block_identifier):
code = await self.accounts(address).code.make_request(get, params=params)
return _attribute(code, "code")

def new_block_filter(self):
async def new_block_filter(self):
filter_id = "0x{}".format(uuid.uuid4().hex)
self.filter[filter_id] = BlockFilter(self)
current_block_num = await self.get_block_number()
self.filter[filter_id] = BlockFilter(current_block_num, self)
return filter_id

def uninstall_filter(self, filter_id):
if filter_id in self.filter:
del self.filter[filter_id]
return True

def get_filter_changes(self, filter_id):
async def get_filter_changes(self, filter_id):
func = self.filter.get(filter_id, lambda: [])
return func()
return await func()

async def get_logs(self, address, query):
params = {
Expand All @@ -174,18 +175,21 @@ async def get_logs(self, address, query):

class BlockFilter(object):

def __init__(self, client):
def __init__(self, current_block_num, client):
super(BlockFilter, self).__init__()
self.current = client.get_block_number()
self.current = current_block_num
self.client = client

def __call__(self):
async def __call__(self):
result = []
best_num = self.client.get_block_number()
best_num = await self.client.get_block_number()
if best_num:
result = [
id
for id in map(self.client.get_block_id, range(self.current, best_num + 1))
for id in [
await id
for id in map(self.client.get_block_id, range(self.current, best_num + 1))
]
if id is not None
]
self.current = best_num + 1
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

setup(
name="web3-gear",
version="2.0.1",
version="2.0.2",
description="An adapter between thor-restful and eth-rpc.",
long_description=long_description,
long_description_content_type="text/markdown",
Expand Down