mirror of
https://github.com/status-im/nim-codex.git
synced 2025-01-12 11:54:12 +00:00
5abf80cc69
* track inflight requests * preperly handle precense updates * trace number of of scheduled blocks * invoke `payForBlocks` at the correct time * reduntant block info on want list updates * don't update prices in task handler * PeerID -> PeerId * cleanup * proper log topic * better chronicles topic filtering * more trace logging * sort want blocks * wip - fix tests * wip - fix tests, presence changes * fix small test issue * return price * payment related changes * misc * re-enable payment tests * fix warn wording * fix `u256` conversion * minor misc changes * don't idle for so long on `encode` * logging * move buff * disable cache by default * disable cache by default * fix streamOneBlock * log node stopping/exiting * trace logging * don't stringify cid * use `self` * quick cleanup * rename enums * rename enums * turns out we don't needs this test * fix wording
46 lines
1.0 KiB
Nim
46 lines
1.0 KiB
Nim
import libp2p
|
|
import pkg/stint
|
|
import pkg/questionable
|
|
import pkg/questionable/results
|
|
import pkg/upraises
|
|
import ./blockexc
|
|
|
|
export questionable
|
|
export stint
|
|
export BlockPresenceType
|
|
|
|
upraises.push: {.upraises: [].}
|
|
|
|
type
|
|
PresenceMessage* = blockexc.BlockPresence
|
|
Presence* = object
|
|
cid*: Cid
|
|
have*: bool
|
|
price*: UInt256
|
|
|
|
func parse(_: type UInt256, bytes: seq[byte]): ?UInt256 =
|
|
if bytes.len > 32:
|
|
return UInt256.none
|
|
UInt256.fromBytesBE(bytes).some
|
|
|
|
func init*(_: type Presence, message: PresenceMessage): ?Presence =
|
|
without cid =? Cid.init(message.cid) and
|
|
price =? UInt256.parse(message.price):
|
|
return none Presence
|
|
|
|
some Presence(
|
|
cid: cid,
|
|
have: message.`type` == BlockPresenceType.Have,
|
|
price: price
|
|
)
|
|
|
|
func init*(_: type PresenceMessage, presence: Presence): PresenceMessage =
|
|
PresenceMessage(
|
|
cid: presence.cid.data.buffer,
|
|
`type`: if presence.have:
|
|
BlockPresenceType.Have
|
|
else:
|
|
BlockPresenceType.DontHave,
|
|
price: @(presence.price.toBytesBE)
|
|
)
|