Refactor to reuse connection handle

This commit is contained in:
Christian Bundy 2019-07-03 11:21:47 -07:00
parent 1d9c61f066
commit 353947ecca
No known key found for this signature in database
GPG Key ID: EB541AAEF4366237
1 changed files with 52 additions and 33 deletions

View File

@ -3,14 +3,16 @@ const secretStack = require('secret-stack')
const ssbConfig = require('ssb-config')
const debug = require('debug')('oasis')
const rawConnect = () => new Promise((resolve, reject) => {
ssbClient((err, api) => {
if (err) return reject(err)
resolve(api)
})
})
const db = {
connect: function () {
return new Promise((resolve, reject) => {
ssbClient((err, api) => {
if (err) reject(err)
resolve(api)
})
})
return handle
},
/**
* @param {function} method
@ -31,36 +33,53 @@ const db = {
}
debug.enabled = true
db.connect().then(() =>
debug('Using pre-existing Scuttlebutt server instead of starting one')
).catch(() => {
debug('Starting Scuttlebutt server')
const server = secretStack()
const handle = new Promise((resolve, reject) => {
rawConnect().then((ssb) => {
debug('Using pre-existing Scuttlebutt server instead of starting one')
resolve(ssb)
}).catch(() => {
debug('Initial connection attempt failed')
debug('Starting Scuttlebutt server')
server
.use(require('ssb-db'))
.use(require('ssb-onion'))
.use(require('ssb-unix-socket'))
.use(require('ssb-no-auth'))
.use(require('ssb-plugins'))
.use(require('ssb-master'))
.use(require('ssb-gossip'))
.use(require('ssb-replicate'))
.use(require('ssb-friends'))
.use(require('ssb-blobs'))
.use(require('ssb-invite'))
.use(require('ssb-local'))
.use(require('ssb-logging'))
.use(require('ssb-query'))
.use(require('ssb-links'))
.use(require('ssb-ws'))
.use(require('ssb-ebt'))
.use(require('ssb-ooo'))
.use(require('ssb-backlinks'))
.use(require('ssb-about'))
const server = secretStack()
server(ssbConfig)
server
.use(require('ssb-db'))
.use(require('ssb-onion'))
.use(require('ssb-unix-socket'))
.use(require('ssb-no-auth'))
.use(require('ssb-plugins'))
.use(require('ssb-master'))
.use(require('ssb-gossip'))
.use(require('ssb-replicate'))
.use(require('ssb-friends'))
.use(require('ssb-blobs'))
.use(require('ssb-invite'))
.use(require('ssb-local'))
.use(require('ssb-logging'))
.use(require('ssb-query'))
.use(require('ssb-links'))
.use(require('ssb-ws'))
.use(require('ssb-ebt'))
.use(require('ssb-ooo'))
.use(require('ssb-backlinks'))
.use(require('ssb-about'))
server(ssbConfig)
const connectOrRetry = () => {
rawConnect().then((ssb) => {
debug('Retrying connection to own server')
resolve(ssb)
}).catch((e) => {
debug(e)
connectOrRetry()
})
}
connectOrRetry()
})
})
module.exports = db