update file list on resolve
This commit is contained in:
parent
bfc107fdb3
commit
40ebf9ee5d
2 changed files with 19 additions and 0 deletions
|
@ -3524,6 +3524,7 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
await self.storage.save_claims_for_resolve([
|
await self.storage.save_claims_for_resolve([
|
||||||
value for value in results.values() if 'error' not in value
|
value for value in results.values() if 'error' not in value
|
||||||
])
|
])
|
||||||
|
await asyncio.create_task(self.stream_manager.check_from_resolve_response(results))
|
||||||
return results
|
return results
|
||||||
|
|
||||||
async def get_claims_for_name(self, name: str):
|
async def get_claims_for_name(self, name: str):
|
||||||
|
|
|
@ -5,6 +5,9 @@ import binascii
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
|
from google.protobuf.message import DecodeError
|
||||||
|
|
||||||
from lbrynet.error import ResolveError, InvalidStreamDescriptorError, KeyFeeAboveMaxAllowed, InsufficientFundsError
|
from lbrynet.error import ResolveError, InvalidStreamDescriptorError, KeyFeeAboveMaxAllowed, InsufficientFundsError
|
||||||
from lbrynet.error import DownloadSDTimeout, DownloadDataTimeout, ResolveTimeout
|
from lbrynet.error import DownloadSDTimeout, DownloadDataTimeout, ResolveTimeout
|
||||||
from lbrynet.utils import cache_concurrent
|
from lbrynet.utils import cache_concurrent
|
||||||
|
@ -286,6 +289,21 @@ class StreamManager:
|
||||||
streams.reverse()
|
streams.reverse()
|
||||||
return streams
|
return streams
|
||||||
|
|
||||||
|
async def check_from_resolve_response(self, resolutions: dict):
|
||||||
|
futs = []
|
||||||
|
for uri, resolution in resolutions.items():
|
||||||
|
resolved = resolution if 'value' in resolution else resolution.get('claim')
|
||||||
|
if not resolved:
|
||||||
|
continue
|
||||||
|
outpoint = f"{resolved['txid']}:{resolved['nout']}"
|
||||||
|
try:
|
||||||
|
claim = Claim.from_bytes(binascii.unhexlify(resolved['protobuf']))
|
||||||
|
except DecodeError:
|
||||||
|
log.warning("Got an update for %s, but it doesn't decode. Skipping it.")
|
||||||
|
continue
|
||||||
|
futs.append(self._check_update_or_replace(outpoint, resolved['claim_id'], claim))
|
||||||
|
return await asyncio.gather(*futs)
|
||||||
|
|
||||||
async def _check_update_or_replace(self, outpoint: str, claim_id: str, claim: Claim) -> typing.Tuple[
|
async def _check_update_or_replace(self, outpoint: str, claim_id: str, claim: Claim) -> typing.Tuple[
|
||||||
typing.Optional[ManagedStream], typing.Optional[ManagedStream]]:
|
typing.Optional[ManagedStream], typing.Optional[ManagedStream]]:
|
||||||
existing = self.get_filtered_streams(outpoint=outpoint)
|
existing = self.get_filtered_streams(outpoint=outpoint)
|
||||||
|
|
Loading…
Add table
Reference in a new issue