Move peer context into its own module
This commit is contained in:
parent
4ce3f6d3da
commit
d9e5bc934f
|
@ -22,6 +22,9 @@ import ../utils/asyncheapqueue
|
||||||
|
|
||||||
import ./network
|
import ./network
|
||||||
import ./pendingblocks
|
import ./pendingblocks
|
||||||
|
import ./peercontext
|
||||||
|
|
||||||
|
export peercontext
|
||||||
|
|
||||||
logScope:
|
logScope:
|
||||||
topics = "dagger bitswap engine"
|
topics = "dagger bitswap engine"
|
||||||
|
@ -34,16 +37,6 @@ type
|
||||||
TaskHandler* = proc(task: BitswapPeerCtx): Future[void] {.gcsafe.}
|
TaskHandler* = proc(task: BitswapPeerCtx): Future[void] {.gcsafe.}
|
||||||
TaskScheduler* = proc(task: BitswapPeerCtx): bool {.gcsafe.}
|
TaskScheduler* = proc(task: BitswapPeerCtx): bool {.gcsafe.}
|
||||||
|
|
||||||
BitswapPeerCtx* = ref object of RootObj
|
|
||||||
id*: PeerID
|
|
||||||
peerHave*: seq[Cid] # remote peers have lists
|
|
||||||
peerWants*: seq[Entry] # remote peers want lists
|
|
||||||
bytesSent*: int # bytes sent to remote
|
|
||||||
bytesRecv*: int # bytes received from remote
|
|
||||||
exchanged*: int # times peer has exchanged with us
|
|
||||||
lastExchange*: Moment # last time peer has exchanged with us
|
|
||||||
pricing*: ?Pricing # optional bandwidth price for this peer
|
|
||||||
|
|
||||||
BitswapEngine* = ref object of RootObj
|
BitswapEngine* = ref object of RootObj
|
||||||
localStore*: BlockStore # where we localStore blocks for this instance
|
localStore*: BlockStore # where we localStore blocks for this instance
|
||||||
peers*: seq[BitswapPeerCtx] # peers we're currently actively exchanging with
|
peers*: seq[BitswapPeerCtx] # peers we're currently actively exchanging with
|
||||||
|
@ -61,18 +54,6 @@ proc contains*(a: AsyncHeapQueue[Entry], b: Cid): bool =
|
||||||
|
|
||||||
a.anyIt( it.cid == b )
|
a.anyIt( it.cid == b )
|
||||||
|
|
||||||
proc contains*(a: openArray[BitswapPeerCtx], b: PeerID): bool =
|
|
||||||
## Convenience method to check for peer prepense
|
|
||||||
##
|
|
||||||
|
|
||||||
a.anyIt( it.id == b )
|
|
||||||
|
|
||||||
proc debtRatio*(b: BitswapPeerCtx): float =
|
|
||||||
b.bytesSent / (b.bytesRecv + 1)
|
|
||||||
|
|
||||||
proc `<`*(a, b: BitswapPeerCtx): bool =
|
|
||||||
a.debtRatio < b.debtRatio
|
|
||||||
|
|
||||||
proc getPeerCtx*(b: BitswapEngine, peerId: PeerID): BitswapPeerCtx =
|
proc getPeerCtx*(b: BitswapEngine, peerId: PeerID): BitswapPeerCtx =
|
||||||
## Get the peer's context
|
## Get the peer's context
|
||||||
##
|
##
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
import std/sequtils
|
||||||
|
import pkg/libp2p
|
||||||
|
import pkg/chronos
|
||||||
|
import pkg/questionable
|
||||||
|
import ./protobuf/bitswap
|
||||||
|
import ./protobuf/payments
|
||||||
|
|
||||||
|
type
|
||||||
|
BitswapPeerCtx* = ref object of RootObj
|
||||||
|
id*: PeerID
|
||||||
|
peerHave*: seq[Cid] # remote peers have lists
|
||||||
|
peerWants*: seq[Entry] # remote peers want lists
|
||||||
|
bytesSent*: int # bytes sent to remote
|
||||||
|
bytesRecv*: int # bytes received from remote
|
||||||
|
exchanged*: int # times peer has exchanged with us
|
||||||
|
lastExchange*: Moment # last time peer has exchanged with us
|
||||||
|
pricing*: ?Pricing # optional bandwidth price for this peer
|
||||||
|
|
||||||
|
proc contains*(a: openArray[BitswapPeerCtx], b: PeerID): bool =
|
||||||
|
## Convenience method to check for peer prepense
|
||||||
|
##
|
||||||
|
|
||||||
|
a.anyIt( it.id == b )
|
||||||
|
|
||||||
|
proc debtRatio*(b: BitswapPeerCtx): float =
|
||||||
|
b.bytesSent / (b.bytesRecv + 1)
|
||||||
|
|
||||||
|
proc `<`*(a, b: BitswapPeerCtx): bool =
|
||||||
|
a.debtRatio < b.debtRatio
|
||||||
|
|
Loading…
Reference in New Issue