mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-06-05 13:39:59 +00:00
* bump libp2p pin to release/v2.0.0 (c43199378) * pin nimble.lock: lsquic/websock/boringssl/protobuf_serialization/npeg/jwt * add libp2p_mix dep and point libp2p/protocols/mix -> libp2p_mix * migrate rng to libp2p Rng type (prod, channels, noise, tests) * noise: take Rng, extract bearSslDrbg internally * waku_switch: TransportConfig factory; withMaxInOut; local MaxConnections * waku_relay/rendezvous/discv5/kademlia: v2.0.0 API (rng, config, ServiceDiscovery) * tests: newStandardSwitch shim; PeerId.random(rng); common.rng()/crypto.newRng() * drop libp2p/utils/semaphore (use chronos AsyncSemaphore) * add waku/compat/option_valueor shim where needed * add std/options where transitive re-export dropped
39 lines
1.2 KiB
Nim
39 lines
1.2 KiB
Nim
import waku/compat/option_valueor
|
|
{.push raises: [].}
|
|
|
|
import chronos, std/[options, sequtils], results
|
|
import ../discovery/waku_discv5, ../waku_relay, ../waku_core, ./message_cache
|
|
|
|
### Discovery
|
|
|
|
type DiscoveryHandler* =
|
|
proc(): Future[Result[Option[RemotePeerInfo], string]] {.async, closure.}
|
|
|
|
proc defaultDiscoveryHandler*(
|
|
discv5: WakuDiscoveryV5, cap: Capabilities
|
|
): DiscoveryHandler =
|
|
proc(): Future[Result[Option[RemotePeerInfo], string]] {.async, closure.} =
|
|
#Discv5 is already filtering peers by shards no need to pass a predicate.
|
|
let findPeers = discv5.findRandomPeers()
|
|
|
|
if not await findPeers.withTimeout(60.seconds):
|
|
return err("discovery process timed out!")
|
|
|
|
var peers = findPeers.read()
|
|
|
|
peers.keepItIf(it.supportsCapability(cap))
|
|
|
|
if peers.len == 0:
|
|
return ok(none(RemotePeerInfo))
|
|
|
|
let remotePeerInfo = peers[0].toRemotePeerInfo().valueOr:
|
|
return err($error)
|
|
|
|
return ok(some(remotePeerInfo))
|
|
|
|
### Message Cache
|
|
|
|
proc messageCacheHandler*(cache: MessageCache): WakuRelayHandler =
|
|
return proc(pubsubTopic: string, msg: WakuMessage): Future[void] {.async, closure.} =
|
|
cache.addMessage(pubsubTopic, msg)
|