Comparing version 0.8.5 to 0.9.0
export declare class ConnScheduler { | ||
private readonly ssb; | ||
private readonly config; | ||
private readonly hub; | ||
private readonly hasSsbDb; | ||
@@ -6,0 +5,0 @@ private closed; |
@@ -91,5 +91,5 @@ "use strict"; | ||
int.unref(); | ||
onWakeup(() => this.hub.reset()); | ||
onNetwork(() => this.hub.reset()); | ||
pull(this.hub.listen(), pull.filter((ev) => ev.type === 'disconnected'), pull.drain(() => this.updateConnectionsSoon(200))); | ||
onWakeup(() => this.ssb.conn.hub().reset()); | ||
onNetwork(() => this.ssb.conn.hub().reset()); | ||
pull(this.ssb.conn.hub().listen(), pull.filter((ev) => ev.type === 'disconnected'), pull.drain(() => this.updateConnectionsSoon(200))); | ||
this.updateConnectionsSoon(); | ||
@@ -100,3 +100,3 @@ }; | ||
this.ssb.lan.stop(); | ||
this.hub.reset(); | ||
this.ssb.conn.hub().reset(); | ||
this.closed = true; | ||
@@ -106,3 +106,2 @@ }; | ||
this.config = config; | ||
this.hub = this.ssb.conn.internalConnHub(); | ||
this.hasSsbDb = !!this.ssb.post && !!this.ssb.messagesByType; | ||
@@ -258,3 +257,4 @@ this.closed = true; | ||
const permanent = hasPinged(peer) || isLocal(peer); | ||
return !permanent || this.hub.getState(peer[0]) === 'connecting'; | ||
const state = this.ssb.conn.hub().getState(peer[0]); | ||
return !permanent || state === 'connecting'; | ||
}) | ||
@@ -312,3 +312,3 @@ .filter(peer => peer[1].stateChange + 10e3 < Date.now()) | ||
} | ||
else if (!this.ssb.conn.internalConnDB().has(address)) { | ||
else if (!this.ssb.conn.db().has(address)) { | ||
this.ssb.conn.stage(address, { key, type: 'pub' }); | ||
@@ -326,3 +326,3 @@ this.ssb.conn.remember(address, { | ||
})); | ||
pull(this.ssb.conn.internalConnStaging().liveEntries(), pull.drain((staged) => { | ||
pull(this.ssb.conn.staging().liveEntries(), pull.drain((staged) => { | ||
const stagedPubs = staged.filter(([, data]) => data.type === 'pub'); | ||
@@ -329,0 +329,0 @@ if (stagedPubs.length >= MAX_STAGED_PUBS) { |
@@ -10,6 +10,6 @@ import ConnDB = require('ssb-conn-db'); | ||
private readonly config; | ||
private readonly db; | ||
private readonly hub; | ||
private readonly staging; | ||
private readonly connQuery; | ||
private readonly _db; | ||
private readonly _hub; | ||
private readonly _staging; | ||
private readonly _query; | ||
constructor(ssb: any, cfg: any); | ||
@@ -35,6 +35,9 @@ private initialize; | ||
stagedPeers: () => any; | ||
query: () => ConnQuery; | ||
start: () => Promise<void>; | ||
stop: () => void; | ||
ping: () => any; | ||
db: () => ConnDB; | ||
hub: () => ConnHub; | ||
staging: () => ConnStaging; | ||
query: () => ConnQuery; | ||
internalConnDB: () => ConnDB; | ||
@@ -41,0 +44,0 @@ internalConnHub: () => ConnHub; |
@@ -27,8 +27,8 @@ "use strict"; | ||
this.remember = (address, data = {}) => { | ||
this.db.set(address, data); | ||
this._db.set(address, data); | ||
}; | ||
this.forget = (address) => { | ||
this.db.delete(address); | ||
this._db.delete(address); | ||
}; | ||
this.dbPeers = () => this.db.entries(); | ||
this.dbPeers = () => this._db.entries(); | ||
this.connect = (address, b, c) => { | ||
@@ -41,3 +41,3 @@ if (c && (typeof b === 'function' || !b)) { | ||
const data = (typeof b === 'object' ? b : {}); | ||
this.hub | ||
this._hub | ||
.connect(address, data) | ||
@@ -47,17 +47,16 @@ .then(result => cb && cb(null, result), err => cb && cb(err)); | ||
this.disconnect = (address, cb) => { | ||
this.hub | ||
this._hub | ||
.disconnect(address) | ||
.then(result => cb && cb(null, result), err => cb && cb(err)); | ||
}; | ||
this.peers = () => this.hub.liveEntries(); | ||
this.peers = () => this._hub.liveEntries(); | ||
this.stage = (address, data = { type: 'internet' }) => { | ||
if (!!this.hub.getState(address)) | ||
if (!!this._hub.getState(address)) | ||
return false; | ||
return this.staging.stage(address, data); | ||
return this._staging.stage(address, data); | ||
}; | ||
this.unstage = (address) => { | ||
return this.staging.unstage(address); | ||
return this._staging.unstage(address); | ||
}; | ||
this.stagedPeers = () => this.staging.liveEntries(); | ||
this.query = () => this.connQuery; | ||
this.stagedPeers = () => this._staging.liveEntries(); | ||
this.start = () => { | ||
@@ -77,11 +76,24 @@ return this.startScheduler(); | ||
}; | ||
this.internalConnDB = () => this.db; | ||
this.internalConnHub = () => this.hub; | ||
this.internalConnStaging = () => this.staging; | ||
this.db = () => this._db; | ||
this.hub = () => this._hub; | ||
this.staging = () => this._staging; | ||
this.query = () => this._query; | ||
this.internalConnDB = () => { | ||
console.error('DEPRECATED conn.internalConnDB(), use conn.db() instead'); | ||
return this._db; | ||
}; | ||
this.internalConnHub = () => { | ||
console.error('DEPRECATED conn.internalConnHub(), use conn.hub() instead'); | ||
return this._hub; | ||
}; | ||
this.internalConnStaging = () => { | ||
console.error('DEPRECATED conn.internalConnStaging(), use conn.staging() instead'); | ||
return this._staging; | ||
}; | ||
this.ssb = ssb; | ||
this.config = cfg; | ||
this.db = new ConnDB({ path: this.config.path, writeTimeout: 1e3 }); | ||
this.hub = new ConnHub(this.ssb); | ||
this.staging = new ConnStaging(); | ||
this.connQuery = new ConnQuery(this.db, this.hub, this.staging); | ||
this._db = new ConnDB({ path: this.config.path, writeTimeout: 1e3 }); | ||
this._hub = new ConnHub(this.ssb); | ||
this._staging = new ConnStaging(); | ||
this._query = new ConnQuery(this._db, this._hub, this._staging); | ||
this.initialize(); | ||
@@ -92,3 +104,3 @@ } | ||
this.maybeAutoStartScheduler(); | ||
interpool_glue_1.interpoolGlue(this.db, this.hub, this.staging); | ||
interpool_glue_1.interpoolGlue(this._db, this._hub, this._staging); | ||
} | ||
@@ -99,5 +111,5 @@ setupCloseHook() { | ||
that.stopScheduler(); | ||
that.db.close(); | ||
that.hub.close(); | ||
that.staging.close(); | ||
that._db.close(); | ||
that._hub.close(); | ||
that._staging.close(); | ||
return fn.apply(this, args); | ||
@@ -113,3 +125,3 @@ }); | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this.db.loaded(); | ||
yield this._db.loaded(); | ||
if (this.ssb.connScheduler) { | ||
@@ -165,5 +177,2 @@ this.ssb.connScheduler.start(); | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "query", void 0); | ||
__decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "start", void 0); | ||
@@ -178,2 +187,14 @@ __decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "db", void 0); | ||
__decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "hub", void 0); | ||
__decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "staging", void 0); | ||
__decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "query", void 0); | ||
__decorate([ | ||
secret_stack_decorators_1.muxrpc('sync') | ||
], CONN.prototype, "internalConnDB", void 0); | ||
@@ -180,0 +201,0 @@ __decorate([ |
@@ -6,5 +6,2 @@ import { Callback, Peer } from './types'; | ||
private readonly conn; | ||
private readonly connDB; | ||
private readonly connHub; | ||
private readonly connStaging; | ||
private latestWarning; | ||
@@ -11,0 +8,0 @@ constructor(ssb: any); |
@@ -87,7 +87,7 @@ "use strict"; | ||
} | ||
const peers = Array.from(this.connDB.entries()).map(([address, data]) => { | ||
return Object.assign({}, data, { address, state: this.connHub.getState(address) }); | ||
const peers = Array.from(this.conn.db().entries()).map(([address, data]) => { | ||
return Object.assign({}, data, { address, state: this.conn.hub().getState(address) }); | ||
}); | ||
for (const [address, data] of this.connHub.entries()) { | ||
if (!this.connDB.has(address)) { | ||
for (const [address, data] of this.conn.hub().entries()) { | ||
if (!this.conn.db().has(address)) { | ||
const [, parsed] = validateAddr(address); | ||
@@ -102,3 +102,3 @@ peers.push(Object.assign({}, data, parsed, { address, source: inferSource(address) })); | ||
if (ref.isFeed(addr)) { | ||
for (let [address, data] of this.connDB.entries()) { | ||
for (let [address, data] of this.conn.db().entries()) { | ||
if (data.key === addr) { | ||
@@ -111,7 +111,7 @@ return Object.assign({}, data, { address }); | ||
const [addressString] = validateAddr(addr); | ||
const peer = this.connDB.get(addressString); | ||
const peer = this.conn.db().get(addressString); | ||
if (!peer) | ||
return undefined; | ||
else { | ||
return Object.assign({ address: addressString, state: this.connHub.getState(addressString) }, peer); | ||
return Object.assign({ address: addressString, state: this.conn.hub().getState(addressString) }, peer); | ||
} | ||
@@ -130,3 +130,6 @@ }; | ||
this.add(addressString, 'manual'); | ||
this.conn.connect(addressString, cb); | ||
const stagedData = this.conn.staging().get(addressString) || {}; | ||
const dbData = this.conn.db().get(addressString) || {}; | ||
const data = Object.assign({}, dbData, stagedData); | ||
this.conn.connect(addressString, data, cb); | ||
}; | ||
@@ -159,7 +162,7 @@ this.disconnect = (addr, cb) => { | ||
} | ||
if (this.connDB.has(addressString)) { | ||
return this.connDB.get(addressString); | ||
if (this.conn.db().has(addressString)) { | ||
return this.conn.db().get(addressString); | ||
} | ||
else { | ||
this.connDB.set(addressString, { | ||
this.conn.db().set(addressString, { | ||
host: parsed.host, | ||
@@ -173,6 +176,6 @@ port: parsed.port, | ||
type: 'discover', | ||
peer: Object.assign({}, parsed, { state: this.connHub.getState(addressString), source: source || 'manual' }), | ||
peer: Object.assign({}, parsed, { state: this.conn.hub().getState(addressString), source: source || 'manual' }), | ||
source: source || 'manual', | ||
}); | ||
return this.connDB.get(addressString) || parsed; | ||
return this.conn.db().get(addressString) || parsed; | ||
} | ||
@@ -183,8 +186,8 @@ }; | ||
const [addressString] = validateAddr(addr); | ||
this.connHub.disconnect(addressString); | ||
this.connStaging.unstage(addressString); | ||
const peer = this.connDB.get(addressString); | ||
this.conn.hub().disconnect(addressString); | ||
this.conn.staging().unstage(addressString); | ||
const peer = this.conn.db().get(addressString); | ||
if (!peer) | ||
return; | ||
this.connDB.delete(addressString); | ||
this.conn.db().delete(addressString); | ||
this.notify({ type: 'remove', peer: peer }); | ||
@@ -195,3 +198,3 @@ }; | ||
console.error('DEPRECATED gossip.reconnect() was called. Use ssb-conn instead'); | ||
this.connHub.reset(); | ||
this.conn.hub().reset(); | ||
}; | ||
@@ -207,5 +210,2 @@ this.enable = (type) => { | ||
this.conn = this.ssb.conn; | ||
this.connDB = this.conn.internalConnDB(); | ||
this.connHub = this.conn.internalConnHub(); | ||
this.connStaging = this.conn.internalConnStaging(); | ||
this.latestWarning = 0; | ||
@@ -216,3 +216,3 @@ this.setupConnectionListeners(); | ||
setupConnectionListeners() { | ||
pull(this.connHub.listen(), pull.drain((ev) => { | ||
pull(this.conn.hub().listen(), pull.drain((ev) => { | ||
if (ev.type === 'connecting-failed') | ||
@@ -227,8 +227,8 @@ this.onConnectingFailed(ev); | ||
onConnectingFailed(ev) { | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address)); | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address)); | ||
this.notify({ type: 'connect-failure', peer }); | ||
} | ||
onConnected(ev) { | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address)); | ||
if (!this.connDB.has(ev.address)) | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address)); | ||
if (!this.conn.db().has(ev.address)) | ||
peer.source = inferSource(ev.address); | ||
@@ -238,7 +238,7 @@ this.notify({ type: 'connect', peer }); | ||
onDisconnected(ev) { | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address)); | ||
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address)); | ||
this.notify({ type: 'disconnect', peer }); | ||
} | ||
idToAddr(id) { | ||
const addr = this.connDB.getAddressForId(id); | ||
const addr = this.conn.db().getAddressForId(id); | ||
if (!addr) { | ||
@@ -245,0 +245,0 @@ throw new Error('no known address for peer:' + id); |
@@ -20,4 +20,8 @@ "use strict"; | ||
function onConnecting(ev) { | ||
staging.unstage(ev.address); | ||
db.update(ev.address, { stateChange: Date.now() }); | ||
const addr = ev.address; | ||
const stagedData = staging.get(addr); | ||
staging.unstage(addr); | ||
db.update(addr, { stateChange: Date.now() }); | ||
const dbData = db.get(addr); | ||
hub.update(addr, Object.assign({}, dbData, stagedData)); | ||
} | ||
@@ -32,6 +36,10 @@ function onConnectingFailed(ev) { | ||
function onConnected(ev) { | ||
staging.unstage(ev.address); | ||
db.update(ev.address, { stateChange: Date.now(), failure: 0 }); | ||
const addr = ev.address; | ||
const stagedData = staging.get(addr); | ||
staging.unstage(addr); | ||
db.update(addr, { stateChange: Date.now(), failure: 0 }); | ||
const dbData = db.get(addr); | ||
hub.update(addr, Object.assign({}, dbData, stagedData)); | ||
if (ev.details.isClient) | ||
setupPing(ev.address, ev.details.rpc); | ||
setupPing(addr, ev.details.rpc); | ||
} | ||
@@ -38,0 +46,0 @@ function onDisconnecting(ev) { |
{ | ||
"name": "ssb-conn", | ||
"description": "SSB plugin for establishing and managing peer connections", | ||
"version": "0.8.5", | ||
"version": "0.9.0", | ||
"homepage": "https://github.com/staltz/ssb-conn", | ||
@@ -23,6 +23,6 @@ "main": "lib/index.js", | ||
"secret-stack-decorators": "1.0.0", | ||
"ssb-conn-db": "~0.2.0", | ||
"ssb-conn-db": "~0.2.1", | ||
"ssb-conn-hub": "~0.2.2", | ||
"ssb-conn-query": "~0.3.1", | ||
"ssb-conn-staging": "~0.0.8", | ||
"ssb-conn-query": "~0.4.0", | ||
"ssb-conn-staging": "~0.1.0", | ||
"ssb-ref": "^2.13.9", | ||
@@ -41,3 +41,3 @@ "ssb-typescript": "^1.4.0", | ||
"ssb-caps": "~1.1.0", | ||
"ssb-lan": "~0.1.1", | ||
"ssb-lan": "~0.1.3", | ||
"ssb-server": "~15.1.0", | ||
@@ -44,0 +44,0 @@ "tape": "^4.9.2", |
@@ -61,6 +61,9 @@ <div style="text-align:center" align="center"> | ||
| **`stagedPeers()`** | `source` | A pull-stream that emits an array of all staged "entries" (see definition below) whenever any staging status updates (upon stage() or unstage()). | | ||
| **`query()`** | `sync` | Returns an instance of [ConnQuery](https://github.com/staltz/ssb-conn-query). | | ||
| **`start()`** | `sync` | Triggers the start of the connection scheduler in CONN. | | ||
| **`stop()`** | `sync` | Stops the CONN scheduler if it is currently active. | | ||
| **`ping()`** | `duplex` | A duplex pull-stream for periodically pinging with peers, fully compatible with `ssb.gossip.ping`. | | ||
| **`db()`** | `sync` | Returns the instance of [ConnDB](https://github.com/staltz/ssb-conn-db) currently in use. | | ||
| **`hub()`** | `sync` | Returns the instance of [ConnHub](https://github.com/staltz/ssb-conn-hub) currently in use. | | ||
| **`staging()`** | `sync` | Returns the instance of [ConnStaging](https://github.com/staltz/ssb-conn-staging) currently in use. | | ||
| **`query()`** | `sync` | Returns the instance of [ConnQuery](https://github.com/staltz/ssb-conn-query) currently in use. | | ||
@@ -212,8 +215,2 @@ An "entry" is a (tuple) array with a multiserver address (string that [follows some rules](https://github.com/dominictarr/multiserver-address)) and data (an object): | ||
**Pro tip:** when implementing your ConnScheduler, you have access to `ssb.conn.*` APIs, but if you need more precision, you can access lower level APIs belonging to ConnDB, ConnHub, and ConnStaging: | ||
- `ssb.conn.internalConnDB().*` | ||
- `ssb.conn.internalConnHub().*` | ||
- `ssb.conn.internalConnStaging().*` | ||
<ul></ul> | ||
@@ -220,0 +217,0 @@ |
@@ -1,2 +0,1 @@ | ||
import ConnHub = require('ssb-conn-hub'); | ||
import ConnQuery = require('ssb-conn-query'); | ||
@@ -89,3 +88,2 @@ import {ListenEvent as HubEvent} from 'ssb-conn-hub/lib/types'; | ||
private readonly config: any; | ||
private readonly hub: ConnHub; | ||
private readonly hasSsbDb: boolean; | ||
@@ -101,3 +99,2 @@ private closed: boolean; | ||
this.config = config; | ||
this.hub = this.ssb.conn.internalConnHub(); | ||
this.hasSsbDb = !!this.ssb.post && !!this.ssb.messagesByType; | ||
@@ -298,3 +295,4 @@ this.closed = true; | ||
const permanent = hasPinged(peer) || isLocal(peer); | ||
return !permanent || this.hub.getState(peer[0]) === 'connecting'; | ||
const state = this.ssb.conn.hub().getState(peer[0]); | ||
return !permanent || state === 'connecting'; | ||
}) | ||
@@ -368,3 +366,3 @@ .filter(peer => peer[1].stateChange! + 10e3 < Date.now()) | ||
this.ssb.conn.forget(address); | ||
} else if (!this.ssb.conn.internalConnDB().has(address)) { | ||
} else if (!this.ssb.conn.db().has(address)) { | ||
this.ssb.conn.stage(address, {key, type: 'pub'}); | ||
@@ -385,3 +383,3 @@ this.ssb.conn.remember(address, { | ||
pull( | ||
this.ssb.conn.internalConnStaging().liveEntries(), | ||
this.ssb.conn.staging().liveEntries(), | ||
pull.drain((staged: Array<any>) => { | ||
@@ -490,10 +488,10 @@ const stagedPubs = staged.filter(([, data]) => data.type === 'pub'); | ||
// Upon wakeup, trigger hard reconnect | ||
onWakeup(() => this.hub.reset()); | ||
onWakeup(() => this.ssb.conn.hub().reset()); | ||
// Upon network changes, trigger hard reconnect | ||
onNetwork(() => this.hub.reset()); | ||
onNetwork(() => this.ssb.conn.hub().reset()); | ||
// Upon some disconnection, attempt to make connections | ||
pull( | ||
this.hub.listen(), | ||
this.ssb.conn.hub().listen(), | ||
pull.filter((ev: HubEvent) => ev.type === 'disconnected'), | ||
@@ -510,5 +508,5 @@ pull.drain(() => this.updateConnectionsSoon(200)), | ||
if (this.ssb.lan && this.ssb.lan.stop) this.ssb.lan.stop(); | ||
this.hub.reset(); | ||
this.ssb.conn.hub().reset(); | ||
this.closed = true; | ||
}; | ||
} |
@@ -16,6 +16,6 @@ import ConnDB = require('ssb-conn-db'); | ||
private readonly config: any; | ||
private readonly db: ConnDB; | ||
private readonly hub: ConnHub; | ||
private readonly staging: ConnStaging; | ||
private readonly connQuery: ConnQuery; | ||
private readonly _db: ConnDB; | ||
private readonly _hub: ConnHub; | ||
private readonly _staging: ConnStaging; | ||
private readonly _query: ConnQuery; | ||
@@ -25,6 +25,6 @@ constructor(ssb: any, cfg: any) { | ||
this.config = cfg; | ||
this.db = new ConnDB({path: this.config.path, writeTimeout: 1e3}); | ||
this.hub = new ConnHub(this.ssb); | ||
this.staging = new ConnStaging(); | ||
this.connQuery = new ConnQuery(this.db, this.hub, this.staging); | ||
this._db = new ConnDB({path: this.config.path, writeTimeout: 1e3}); | ||
this._hub = new ConnHub(this.ssb); | ||
this._staging = new ConnStaging(); | ||
this._query = new ConnQuery(this._db, this._hub, this._staging); | ||
@@ -39,3 +39,3 @@ this.initialize(); | ||
this.maybeAutoStartScheduler(); | ||
interpoolGlue(this.db, this.hub, this.staging); | ||
interpoolGlue(this._db, this._hub, this._staging); | ||
} | ||
@@ -47,5 +47,5 @@ | ||
that.stopScheduler(); | ||
that.db.close(); | ||
that.hub.close(); | ||
that.staging.close(); | ||
that._db.close(); | ||
that._hub.close(); | ||
that._staging.close(); | ||
return fn.apply(this, args); | ||
@@ -66,3 +66,3 @@ }); | ||
private async startScheduler() { | ||
await this.db.loaded(); | ||
await this._db.loaded(); | ||
@@ -96,3 +96,3 @@ if (this.ssb.connScheduler) { | ||
public remember = (address: string, data: any = {}) => { | ||
this.db.set(address, data); | ||
this._db.set(address, data); | ||
}; | ||
@@ -102,7 +102,7 @@ | ||
public forget = (address: string) => { | ||
this.db.delete(address); | ||
this._db.delete(address); | ||
}; | ||
@muxrpc('sync') | ||
public dbPeers = () => this.db.entries() as Iterable<[string, AddressData]>; | ||
public dbPeers = () => this._db.entries() as Iterable<[string, AddressData]>; | ||
@@ -122,3 +122,3 @@ @muxrpc('async') | ||
this.hub | ||
this._hub | ||
.connect(address, data) | ||
@@ -130,3 +130,3 @@ .then(result => cb && cb(null, result), err => cb && cb(err)); | ||
public disconnect = (address: string, cb?: Callback<any>) => { | ||
this.hub | ||
this._hub | ||
.disconnect(address) | ||
@@ -137,3 +137,3 @@ .then(result => cb && cb(null, result), err => cb && cb(err)); | ||
@muxrpc('source') | ||
public peers = () => this.hub.liveEntries(); | ||
public peers = () => this._hub.liveEntries(); | ||
@@ -145,5 +145,5 @@ @muxrpc('sync') | ||
) => { | ||
if (!!this.hub.getState(address)) return false; | ||
if (!!this._hub.getState(address)) return false; | ||
return this.staging.stage(address, data); | ||
return this._staging.stage(address, data); | ||
}; | ||
@@ -153,12 +153,9 @@ | ||
public unstage = (address: string) => { | ||
return this.staging.unstage(address); | ||
return this._staging.unstage(address); | ||
}; | ||
@muxrpc('source') | ||
public stagedPeers = () => this.staging.liveEntries(); | ||
public stagedPeers = () => this._staging.liveEntries(); | ||
@muxrpc('sync') | ||
public query = () => this.connQuery; | ||
@muxrpc('sync') | ||
public start = () => { | ||
@@ -184,11 +181,33 @@ return this.startScheduler(); | ||
@muxrpc('sync') | ||
public internalConnDB = () => this.db; | ||
public db = () => this._db; | ||
@muxrpc('sync') | ||
public internalConnHub = () => this.hub; | ||
public hub = () => this._hub; | ||
@muxrpc('sync') | ||
public internalConnStaging = () => this.staging; | ||
public staging = () => this._staging; | ||
@muxrpc('sync') | ||
public query = () => this._query; | ||
@muxrpc('sync') | ||
public internalConnDB = () => { | ||
console.error('DEPRECATED conn.internalConnDB(), use conn.db() instead'); | ||
return this._db; | ||
}; | ||
@muxrpc('sync') | ||
public internalConnHub = () => { | ||
console.error('DEPRECATED conn.internalConnHub(), use conn.hub() instead'); | ||
return this._hub; | ||
}; | ||
@muxrpc('sync') | ||
public internalConnStaging = () => { | ||
console.error( | ||
'DEPRECATED conn.internalConnStaging(), use conn.staging() instead', | ||
); | ||
return this._staging; | ||
}; | ||
//#endregion | ||
} |
@@ -1,4 +0,1 @@ | ||
import ConnDB = require('ssb-conn-db'); | ||
import ConnHub = require('ssb-conn-hub'); | ||
import ConnStaging = require('ssb-conn-staging'); | ||
import {ListenEvent as HubEvent} from 'ssb-conn-hub/lib/types'; | ||
@@ -90,5 +87,2 @@ import {Callback, Peer} from './types'; | ||
private readonly conn: CONN; | ||
private readonly connDB: ConnDB; | ||
private readonly connHub: ConnHub; | ||
private readonly connStaging: ConnStaging; | ||
@@ -104,5 +98,2 @@ /** | ||
this.conn = this.ssb.conn; | ||
this.connDB = this.conn.internalConnDB(); | ||
this.connHub = this.conn.internalConnHub(); | ||
this.connStaging = this.conn.internalConnStaging(); | ||
this.latestWarning = 0; | ||
@@ -116,3 +107,3 @@ | ||
pull( | ||
this.connHub.listen(), | ||
this.conn.hub().listen(), | ||
pull.drain((ev: HubEvent) => { | ||
@@ -131,3 +122,3 @@ if (ev.type === 'connecting-failed') this.onConnectingFailed(ev); | ||
key: ev.key, | ||
...this.connDB.get(ev.address), | ||
...this.conn.db().get(ev.address), | ||
}; | ||
@@ -142,5 +133,5 @@ this.notify({type: 'connect-failure', peer}); | ||
key: ev.key, | ||
...this.connDB.get(ev.address), | ||
...this.conn.db().get(ev.address), | ||
} as Peer; | ||
if (!this.connDB.has(ev.address)) peer.source = inferSource(ev.address); | ||
if (!this.conn.db().has(ev.address)) peer.source = inferSource(ev.address); | ||
this.notify({type: 'connect', peer}); | ||
@@ -154,3 +145,3 @@ } | ||
key: ev.key, | ||
...this.connDB.get(ev.address), | ||
...this.conn.db().get(ev.address), | ||
} as Peer; | ||
@@ -161,3 +152,3 @@ this.notify({type: 'disconnect', peer}); | ||
private idToAddr(id: any) { | ||
const addr = this.connDB.getAddressForId(id as string) as string; | ||
const addr = this.conn.db().getAddressForId(id as string) as string; | ||
if (!addr) { | ||
@@ -175,13 +166,15 @@ throw new Error('no known address for peer:' + id); | ||
} | ||
const peers = Array.from(this.connDB.entries()).map(([address, data]) => { | ||
return { | ||
...data, | ||
address, | ||
state: this.connHub.getState(address), | ||
}; | ||
}); | ||
const peers = Array.from(this.conn.db().entries()).map( | ||
([address, data]) => { | ||
return { | ||
...data, | ||
address, | ||
state: this.conn.hub().getState(address), | ||
}; | ||
}, | ||
); | ||
// Add peers that are connected but are not in the cold database | ||
for (const [address, data] of this.connHub.entries()) { | ||
if (!this.connDB.has(address)) { | ||
for (const [address, data] of this.conn.hub().entries()) { | ||
if (!this.conn.db().has(address)) { | ||
const [, parsed] = validateAddr(address); | ||
@@ -206,3 +199,3 @@ peers.push({ | ||
if (ref.isFeed(addr)) { | ||
for (let [address, data] of this.connDB.entries()) { | ||
for (let [address, data] of this.conn.db().entries()) { | ||
if (data.key === addr) { | ||
@@ -215,3 +208,3 @@ return {...data, address}; | ||
const [addressString] = validateAddr(addr); | ||
const peer = this.connDB.get(addressString); | ||
const peer = this.conn.db().get(addressString); | ||
if (!peer) return undefined; | ||
@@ -221,3 +214,3 @@ else { | ||
address: addressString, | ||
state: this.connHub.getState(addressString), | ||
state: this.conn.hub().getState(addressString), | ||
...peer, | ||
@@ -242,4 +235,7 @@ }; | ||
this.add(addressString, 'manual'); | ||
const stagedData = this.conn.staging().get(addressString) || {}; | ||
const dbData = this.conn.db().get(addressString) || {}; | ||
const data = {...dbData, ...stagedData}; | ||
this.conn.connect(addressString, cb); | ||
this.conn.connect(addressString, data, cb); | ||
}; | ||
@@ -285,6 +281,6 @@ | ||
if (this.connDB.has(addressString)) { | ||
return this.connDB.get(addressString); | ||
if (this.conn.db().has(addressString)) { | ||
return this.conn.db().get(addressString); | ||
} else { | ||
this.connDB.set(addressString, { | ||
this.conn.db().set(addressString, { | ||
host: parsed.host, | ||
@@ -300,3 +296,3 @@ port: parsed.port, | ||
...parsed, | ||
state: this.connHub.getState(addressString), | ||
state: this.conn.hub().getState(addressString), | ||
source: source || 'manual', | ||
@@ -306,3 +302,3 @@ }, | ||
}); | ||
return this.connDB.get(addressString) || parsed; | ||
return this.conn.db().get(addressString) || parsed; | ||
} | ||
@@ -318,8 +314,8 @@ }; | ||
this.connHub.disconnect(addressString); | ||
this.connStaging.unstage(addressString); | ||
this.conn.hub().disconnect(addressString); | ||
this.conn.staging().unstage(addressString); | ||
const peer = this.connDB.get(addressString); | ||
const peer = this.conn.db().get(addressString); | ||
if (!peer) return; | ||
this.connDB.delete(addressString); | ||
this.conn.db().delete(addressString); | ||
this.notify({type: 'remove', peer: peer}); | ||
@@ -336,3 +332,3 @@ }; | ||
); | ||
this.connHub.reset(); | ||
this.conn.hub().reset(); | ||
}; | ||
@@ -339,0 +335,0 @@ |
@@ -28,4 +28,8 @@ import ConnDB = require('ssb-conn-db'); | ||
function onConnecting(ev: HubEvent) { | ||
staging.unstage(ev.address); | ||
db.update(ev.address, {stateChange: Date.now()}); | ||
const addr = ev.address; | ||
const stagedData = staging.get(addr); | ||
staging.unstage(addr); | ||
db.update(addr, {stateChange: Date.now()}); | ||
const dbData = db.get(addr); | ||
hub.update(addr, {...dbData, ...stagedData}); | ||
} | ||
@@ -42,5 +46,9 @@ | ||
function onConnected(ev: HubEvent) { | ||
staging.unstage(ev.address); | ||
db.update(ev.address, {stateChange: Date.now(), failure: 0}); | ||
if (ev.details.isClient) setupPing(ev.address, ev.details.rpc); | ||
const addr = ev.address; | ||
const stagedData = staging.get(addr); | ||
staging.unstage(addr); | ||
db.update(addr, {stateChange: Date.now(), failure: 0}); | ||
const dbData = db.get(addr); | ||
hub.update(addr, {...dbData, ...stagedData}); | ||
if (ev.details.isClient) setupPing(addr, ev.details.rpc); | ||
} | ||
@@ -47,0 +55,0 @@ |
@@ -20,2 +20,5 @@ const tape = require('tape'); | ||
t.ok(ssb.conn.db, 'ssb.conn.db'); | ||
t.ok(ssb.conn.hub, 'ssb.conn.hub'); | ||
t.ok(ssb.conn.staging, 'ssb.conn.staging'); | ||
t.ok(ssb.conn.query, 'ssb.conn.query'); | ||
@@ -22,0 +25,0 @@ t.ok(ssb.conn.start, 'ssb.conn.start'); |
@@ -19,3 +19,3 @@ const tape = require('tape'); | ||
const entries1 = Array.from(ssb.conn.internalConnStaging().entries()); | ||
const entries1 = Array.from(ssb.conn.staging().entries()); | ||
t.equals(entries1.length, 0, 'there is nothing in staging'); | ||
@@ -35,3 +35,3 @@ | ||
const entries1 = Array.from(ssb.conn.internalConnStaging().entries()); | ||
const entries1 = Array.from(ssb.conn.staging().entries()); | ||
t.equals(entries1.length, 1, 'there is one address in staging'); | ||
@@ -45,3 +45,3 @@ const [actualAddress] = entries1[0]; | ||
const entries2 = Array.from(ssb.conn.internalConnStaging().entries()); | ||
const entries2 = Array.from(ssb.conn.staging().entries()); | ||
t.equals(entries2.length, 0, 'there is nothing in staging'); | ||
@@ -61,3 +61,3 @@ | ||
const entries1 = Array.from(ssb.conn.internalConnStaging().entries()); | ||
const entries1 = Array.from(ssb.conn.staging().entries()); | ||
t.equals(entries1.length, 1, 'there is one address in staging'); | ||
@@ -71,3 +71,3 @@ const [actualAddress] = entries1[0]; | ||
const entries2 = Array.from(ssb.conn.internalConnStaging().entries()); | ||
const entries2 = Array.from(ssb.conn.staging().entries()); | ||
t.equals(entries2.length, 1, 'there is (still) one address in staging'); | ||
@@ -74,0 +74,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
129251
2310
244
+ Addedatomic-file@2.1.1(transitive)
+ Addedflumecodec@0.0.1(transitive)
+ Addedidb-kv-store@4.5.0(transitive)
+ Addedlevel-codec@6.2.0(transitive)
+ Addedmutexify@1.4.0(transitive)
+ Addedpromisize@1.1.2(transitive)
+ Addedqueue-tick@1.0.1(transitive)
+ Addedssb-conn-db@0.3.3(transitive)
+ Addedssb-conn-query@0.4.6(transitive)
+ Addedssb-conn-staging@0.1.0(transitive)
- Removedssb-conn-query@0.3.1(transitive)
- Removedssb-conn-staging@0.0.8(transitive)
Updatedssb-conn-db@~0.2.1
Updatedssb-conn-query@~0.4.0
Updatedssb-conn-staging@~0.1.0