-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8a3b4f4
commit 4efceb4
Showing
1 changed file
with
75 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,75 +1,75 @@ | ||
βββββββββββββββββββββββββββββββββββββββββββββββββ | ||
βPeer: one or more futures β | ||
β β | ||
β ββββββββββββββ incoming messages β | ||
β β TcpStream β are sent to the β | ||
β ββββββββββββββ PeerClient, to β | ||
β β² check if they are β | ||
β β responses, or else β | ||
β β to the PeerServer, β | ||
β βΌ to check if they β | ||
β ββββββββββββββ are requests β | ||
β β Framed β β | ||
β β Messages ββ β β β β β β β β β β β β β βββ β β | ||
β ββββββββββββββ last-seen timestamp channel β β | ||
β β² β | ||
β β mpsc channel or Service? β β | ||
β β βββββββββββββββββββββββββ β | ||
β β β β β | ||
β βΌ βΌ β | ||
β ββββββββββββββββββββ ββββββββββββββββββββ β β | ||
β β PeerClient β β PeerServer β β | ||
β βsends reqs to peerβ βsends reqs to coreβ β β | ||
β βsends rsps to coreβ βsends rsps to peerβ β | ||
β ββββββββββββββββββββ ββββββββββββββββββββ β β | ||
β β² β β | ||
βββββββββββββΌβββββββββββββββββββββββββΌβββββββββββ β | ||
β β | ||
β β β | ||
βββββββββββββΌβββββββββββββββββββββββββΌβββββββββββ | ||
β β PeerSet: two Services β β β | ||
β β plus bookkeeping βΌ β | ||
β ββββββββββββββββββββ ββββββββββββββββββββ β β | ||
β β Client β β Server β β βββββββββββββββββββββββββββββββ | ||
β β β β β β β β PeerConnector Service β | ||
β β load-balances β β routes inbound β β β req: SocketAddr β | ||
β βoutbound reqs overβ βPeerServer reqs toβ β β βrsp: (PeerClient, PeerServer)β | ||
β β available β βinternal Services β ββββββββββΆβ β | ||
β β PeerClients β β β β β β performs handshakes, β | ||
β β β β drives peerset β β β constructs peer futures β | ||
β β drives peerset β β contraction via β β β βββββββββββββββββββββββββββββββ | ||
β β expansion via β β backpressure β β β | ||
β β backpressure β β β β β β | ||
β ββββββββββββββββββββ ββββββββββββββββββββ β β | ||
β β² β β β β | ||
βββββββββββββΌβββββββββββββββββββββββββΌβββββββββββ β | ||
β β β βΌ | ||
β β βββββββββββββββββββββββββββββββ | ||
β β β β PeerAddress Service β | ||
β β β req: () β | ||
β β β β rsp: SocketAddr β | ||
ββββββββββββββββββββββββββΌβββββββββββββββββββββ β | ||
β β βreturns the next addr to try β | ||
β β to connect to or asks β | ||
β β βexisting peers for more addrsβ | ||
β βββββββββββββββββββββββββββββββ | ||
β β β | ||
β β | ||
β β β | ||
β βΌ | ||
β β βββββββββββββββββββββββββββββββ | ||
β β AddressBook β | ||
β β ββΆβ β | ||
β β per-addr last-seen info β | ||
β βββββββββββββββββββββββββββββββ | ||
β β² | ||
β β | ||
β β | ||
β β | ||
β βββββββββββββββββββββββββββββββ | ||
β β AddressGossip Service β | ||
β β req: () β | ||
βββββββββββββββββββββΆβ rsp: Vec<MetaAddr> β | ||
β β | ||
β truncates timestamps β | ||
βββββββββββββββββββββββββββββββ | ||
βββββββΆ Channel | ||
Legend: | ||
βββββββΆ Service call | ||
|
||
βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ | ||
β PeerServer β β PeerServer β β PeerServer β β PeerServer β | ||
β βββββββββ β β βββββββββ β β βββββββββ β β βββββββββ β | ||
β βββββββββ β β βββββββββ β β βββββββββ β β βββββββββ β | ||
β ββ Tcp ββ β β ββ Tcp ββ β β ββ Tcp ββ β β ββ Tcp ββ β | ||
β βββββββββββββΌβ β βββββββββββββΌβ β βββββββββββββΌβ β βββββββββββββΌβ | ||
β βFramed β ββ β βFramed β ββ β βFramed β ββ β βFramed β ββ | ||
β βStream β ββ β βStream β ββ β βStream β ββ β βStream β ββ | ||
β βββββββββ ββ β βββββββββ ββ β βββββββββ ββ β βββββββββ ββ | ||
ββΆβ β ββ ββΆβ β ββ ββΆβ β ββ ββΆβ β ββ | ||
β β β ββ β β β ββ β β β ββ β β β ββ | ||
β β βΌ ββ β β βΌ ββ β β βΌ ββ β β βΌ ββ | ||
β β βββββββββ ββ β β βββββββββ ββ β β βββββββββ ββ β β βββββββββ ββ | ||
β β β Tower β ββ β β β Tower β ββ β β β Tower β ββ β β β Tower β ββ | ||
β β βBuffer β ββ β β βBuffer β ββ β β βBuffer β ββ β β βBuffer β ββ | ||
β β βββββββββ ββ β β βββββββββ ββ β β βββββββββ ββ β β βββββββββ ββ | ||
β β β ββ β β β ββ β β β ββ β β β ββ | ||
β ββββββββββββββββ β ββββββββββββββββ β ββββββββββββββββ β ββββββββββββββββ | ||
β β ββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββ΄ββ | ||
β β β β β β β β β | ||
β ββββββββββββββββββββ»βββββββββββββββββββ»βββββββββββββββββββ»βββββββββββββ | ||
β β β β β β | ||
ββββββββββ ββββββββββ ββββββββββ ββββββββββ β β | ||
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β | ||
β β β β β β β β | ||
ββββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββββββββββ β β | ||
ββ PeerClient β β PeerClient β β PeerClient β β PeerClient ββ β β | ||
ββββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββββββββββ β β | ||
β β β β | ||
β PeerSet β β β | ||
β req: Request, rsp: Response β β β | ||
β routes all outgoing requests, adds peers to handle load β β β | ||
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββ β β | ||
β² β β β | ||
βββββββββββββββββββββββββββββββββββββ β β β | ||
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ | ||
β βΌ β β | ||
β ββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββ β | ||
β β Router β β PeerDiscover β β | ||
β β req: Request, rsp: Response β βDiscover<Service=PeerClient>β β | ||
β β routes all incoming requests, β β β β | ||
β β removes peers to shed load β β connects to a remote peer, β β | ||
β β β β constructs client/server β β | ||
β β β ββββββββββββββββββββββββββββββ β | ||
β β β β β² β | ||
β ββββββββββββββββββββββββββββββββββ β βββββββ β | ||
β β β β β | ||
β β β βββββββββββββββββ β | ||
β β β β PeerListener β β | ||
β β β β req: ? β β | ||
β β β βrsp: PeerClientβ β | ||
β β β βββββββββββββββββ β | ||
β β β βββββββββββββββββ β | ||
β β β β PeerConnector β β | ||
β β ββββββΆβreq: SocketAddrβ β | ||
β β βrsp: PeerClientβ β | ||
β β βββββββββββββββββ β | ||
β β β β | ||
β β βΌ β | ||
β β βββββββββββββββββ β | ||
β β βββββββββββββββββ β NextAddress β β | ||
βββββββββββββββββββββββββββββ AddrCrawler βββββββββββΆβ req: () β β | ||
β βββββββββββββββββ βrsp: SocketAddrβ β | ||
β βββββββββββββββββ β | ||
β β² β | ||
β β β | ||
β βββββββββββββββββ βββββββββββββββββ β | ||
β β AddrService β β AddressBook β β | ||
ββββββΆβ req: GetPeers ββββββββββββ our per-peer ββββ | ||
β rsp: Peers β βlast-seen info β | ||
βββββββββββββββββ βββββββββββββββββ |