Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

43 lines
1003 B
Nim
Raw Normal View History

{.push raises: [].}
2021-04-26 16:34:04 +02:00
import libp2p
import pkg/stint
import pkg/questionable
import pkg/questionable/results
import ./blockexc
2021-04-26 16:34:04 +02:00
import ../../blocktype
2021-04-26 16:34:04 +02:00
export questionable
export stint
export BlockPresenceType
type
PresenceMessage* = blockexc.BlockPresence
2021-04-26 16:34:04 +02:00
Presence* = object
address*: BlockAddress
2021-04-26 16:34:04 +02:00
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 price =? UInt256.parse(message.price):
2021-04-26 16:34:04 +02:00
return none Presence
some Presence(
address: message.address,
have: message.`type` == BlockPresenceType.Have,
2021-05-10 11:49:33 +02:00
price: price,
2021-04-26 16:34:04 +02:00
)
func init*(_: type PresenceMessage, presence: Presence): PresenceMessage =
PresenceMessage(
address: presence.address,
`type`: if presence.have: BlockPresenceType.Have else: BlockPresenceType.DontHave,
price: @(presence.price.toBytesBE),
)