mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-05-12 18:57:15 +00:00
chore: minor changes from lodestar testing
This commit is contained in:
parent
77a02573e0
commit
e519a6c790
@ -18,16 +18,22 @@ const pAny = require('p-any')
|
|||||||
* @property {Uint8Array} val
|
* @property {Uint8Array} val
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = (node) => {
|
class ContentRouting {
|
||||||
const routers = node._modules.contentRouting || []
|
/**
|
||||||
const dht = node._dht
|
* @class
|
||||||
|
* @param {import('./')} libp2p
|
||||||
|
*/
|
||||||
|
constructor (libp2p) {
|
||||||
|
this.libp2p = libp2p
|
||||||
|
this.routers = libp2p._modules.contentRouting || []
|
||||||
|
this.dht = libp2p._dht
|
||||||
|
|
||||||
// If we have the dht, make it first
|
// If we have the dht, make it first
|
||||||
if (dht) {
|
if (this.dht) {
|
||||||
routers.unshift(dht)
|
this.routers.unshift(this.dht)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
/**
|
/**
|
||||||
* Iterates over all content routers in series to find providers of the given key.
|
* Iterates over all content routers in series to find providers of the given key.
|
||||||
* Once a content router succeeds, iteration will stop.
|
* Once a content router succeeds, iteration will stop.
|
||||||
@ -39,12 +45,12 @@ module.exports = (node) => {
|
|||||||
* @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
|
* @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
|
||||||
*/
|
*/
|
||||||
async * findProviders (key, options) {
|
async * findProviders (key, options) {
|
||||||
if (!routers.length) {
|
if (!this.routers.length) {
|
||||||
throw errCode(new Error('No content routers available'), 'NO_ROUTERS_AVAILABLE')
|
throw errCode(new Error('No content this.routers available'), 'NO_ROUTERS_AVAILABLE')
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await pAny(
|
const result = await pAny(
|
||||||
routers.map(async (router) => {
|
this.routers.map(async (router) => {
|
||||||
const provs = await all(router.findProviders(key, options))
|
const provs = await all(router.findProviders(key, options))
|
||||||
|
|
||||||
if (!provs || !provs.length) {
|
if (!provs || !provs.length) {
|
||||||
@ -57,7 +63,7 @@ module.exports = (node) => {
|
|||||||
for (const peer of result) {
|
for (const peer of result) {
|
||||||
yield peer
|
yield peer
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterates over all content routers in parallel to notify it is
|
* Iterates over all content routers in parallel to notify it is
|
||||||
@ -67,12 +73,12 @@ module.exports = (node) => {
|
|||||||
* @returns {Promise<void[]>}
|
* @returns {Promise<void[]>}
|
||||||
*/
|
*/
|
||||||
async provide (key) { // eslint-disable-line require-await
|
async provide (key) { // eslint-disable-line require-await
|
||||||
if (!routers.length) {
|
if (!this.routers.length) {
|
||||||
throw errCode(new Error('No content routers available'), 'NO_ROUTERS_AVAILABLE')
|
throw errCode(new Error('No content routers available'), 'NO_ROUTERS_AVAILABLE')
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.all(routers.map((router) => router.provide(key)))
|
return Promise.all(this.routers.map((router) => router.provide(key)))
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store the given key/value pair in the DHT.
|
* Store the given key/value pair in the DHT.
|
||||||
@ -84,12 +90,12 @@ module.exports = (node) => {
|
|||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
async put (key, value, options) { // eslint-disable-line require-await
|
async put (key, value, options) { // eslint-disable-line require-await
|
||||||
if (!node.isStarted() || !dht.isStarted) {
|
if (!this.libp2p.isStarted() || !this.dht.isStarted) {
|
||||||
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dht.put(key, value, options)
|
return this.dht.put(key, value, options)
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the value to the given key.
|
* Get the value to the given key.
|
||||||
@ -101,12 +107,12 @@ module.exports = (node) => {
|
|||||||
* @returns {Promise<GetData>}
|
* @returns {Promise<GetData>}
|
||||||
*/
|
*/
|
||||||
async get (key, options) { // eslint-disable-line require-await
|
async get (key, options) { // eslint-disable-line require-await
|
||||||
if (!node.isStarted() || !dht.isStarted) {
|
if (!this.libp2p.isStarted() || !this.dht.isStarted) {
|
||||||
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dht.get(key, options)
|
return this.dht.get(key, options)
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the `n` values to the given key without sorting.
|
* Get the `n` values to the given key without sorting.
|
||||||
@ -118,11 +124,12 @@ module.exports = (node) => {
|
|||||||
* @returns {Promise<GetData[]>}
|
* @returns {Promise<GetData[]>}
|
||||||
*/
|
*/
|
||||||
async getMany (key, nVals, options) { // eslint-disable-line require-await
|
async getMany (key, nVals, options) { // eslint-disable-line require-await
|
||||||
if (!node.isStarted() || !dht.isStarted) {
|
if (!this.libp2p.isStarted() || !this.dht.isStarted) {
|
||||||
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dht.getMany(key, nVals, options)
|
return this.dht.getMany(key, nVals, options)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = ContentRouting
|
||||||
|
@ -11,7 +11,7 @@ const errCode = require('err-code')
|
|||||||
const PeerId = require('peer-id')
|
const PeerId = require('peer-id')
|
||||||
|
|
||||||
const PeerRouting = require('./peer-routing')
|
const PeerRouting = require('./peer-routing')
|
||||||
const contentRouting = require('./content-routing')
|
const ContentRouting = require('./content-routing')
|
||||||
const getPeer = require('./get-peer')
|
const getPeer = require('./get-peer')
|
||||||
const { validate: validateConfig } = require('./config')
|
const { validate: validateConfig } = require('./config')
|
||||||
const { codes, messages } = require('./errors')
|
const { codes, messages } = require('./errors')
|
||||||
@ -242,7 +242,7 @@ class Libp2p extends EventEmitter {
|
|||||||
// Attach remaining APIs
|
// Attach remaining APIs
|
||||||
// peer and content routing will automatically get modules from _modules and _dht
|
// peer and content routing will automatically get modules from _modules and _dht
|
||||||
this.peerRouting = new PeerRouting(this)
|
this.peerRouting = new PeerRouting(this)
|
||||||
this.contentRouting = contentRouting(this)
|
this.contentRouting = new ContentRouting(this)
|
||||||
|
|
||||||
// Mount default protocols
|
// Mount default protocols
|
||||||
ping.mount(this)
|
ping.mount(this)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user