From 6c32f6b8359b7780e020cd3fec13b777708d588d Mon Sep 17 00:00:00 2001 From: Marcin Czenko Date: Mon, 31 Mar 2025 17:56:35 +0200 Subject: [PATCH] gets rid of ugly casts --- codex/blockexchange/engine/advertiser.nim | 4 ++-- codex/node.nim | 2 +- codex/rest/api.nim | 3 +-- tests/codex/stores/testrepostore.nim | 8 +++----- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/codex/blockexchange/engine/advertiser.nim b/codex/blockexchange/engine/advertiser.nim index 3fb92045..6503f195 100644 --- a/codex/blockexchange/engine/advertiser.nim +++ b/codex/blockexchange/engine/advertiser.nim @@ -99,13 +99,13 @@ proc advertiseLocalStoreLoop(b: Advertiser) {.async: (raises: []).} = if cidsIter =? await b.localStore.listBlocks(blockType = BlockType.Torrent): trace "Advertiser begins iterating torrent blocks..." for c in cidsIter: - if cid =? (await cast[Future[?!Cid].Raising([CancelledError])](c)): + if cid =? await c: await b.advertiseBlock(cid) trace "Advertiser iterating torrent blocks finished." if cidsIter =? await b.localStore.listBlocks(blockType = BlockType.Manifest): trace "Advertiser begins iterating blocks..." for c in cidsIter: - if cid =? (await cast[Future[?!Cid].Raising([CancelledError])](c)): + if cid =? await c: await b.advertiseBlock(cid) trace "Advertiser iterating blocks finished." diff --git a/codex/node.nim b/codex/node.nim index ded02a87..d1d5cd69 100644 --- a/codex/node.nim +++ b/codex/node.nim @@ -245,7 +245,7 @@ proc fetchBatched*( # ) while not iter.finished: - let blockFutures: seq[Future[?!bt.Block].Raising([CancelledError])] = collect: + let blockFutures = collect: for i in 0 ..< batchSize: if not iter.finished: let address = BlockAddress.init(cid, iter.next()) diff --git a/codex/rest/api.nim b/codex/rest/api.nim index c891b8d5..80a720e5 100644 --- a/codex/rest/api.nim +++ b/codex/rest/api.nim @@ -204,8 +204,7 @@ proc retrieveInfoHash( torrentDownloader.start() for blockFut in torrentDownloader.getAsyncBlockIterator(): - let blockRes = - await cast[Future[?!(int, seq[byte])].Raising([CancelledError])](blockFut) + let blockRes = await blockFut without (blockIndex, data) =? (blockRes), err: error "Error streaming blocks", err = err.msg resp.status = Http500 diff --git a/tests/codex/stores/testrepostore.nim b/tests/codex/stores/testrepostore.nim index 1299bd4b..1666e44a 100644 --- a/tests/codex/stores/testrepostore.nim +++ b/tests/codex/stores/testrepostore.nim @@ -293,12 +293,10 @@ asyncchecksuite "RepoStore": test "Should retrieve block expiration information": proc unpack( - beIter: Future[?!SafeAsyncIter[BlockExpiration]] - ): Future[seq[BlockExpiration]] {.async: (raises: [CatchableError]).} = + beIter: auto + ): Future[seq[BlockExpiration]] {.async: (raises: [CancelledError]).} = var expirations = newSeq[BlockExpiration](0) - without iter =? ( - await cast[Future[?!SafeAsyncIter[BlockExpiration]].Raising([CancelledError])](beIter) - ), err: + without iter =? (await beIter), err: return expirations for beFut in toSeq(iter): if value =? (await beFut):