Initial prototype
This commit is contained in:
83
lib/Connection.js
Normal file
83
lib/Connection.js
Normal file
@ -0,0 +1,83 @@
|
||||
'use strict'
|
||||
|
||||
const assert = require('assert')
|
||||
const debug = require('debug')('elasticsearch')
|
||||
const { resolve } = require('url')
|
||||
const makeRequest = require('simple-get')
|
||||
|
||||
class Connection {
|
||||
constructor (opts = {}) {
|
||||
assert(opts.url, 'Missing url')
|
||||
|
||||
this.url = opts.url
|
||||
this.id = opts.id || opts.url
|
||||
this.deadCount = 0
|
||||
this.resurrectTimeout = 0
|
||||
|
||||
this._status = opts.status || Connection.statuses.ALIVE
|
||||
this.roles = opts.roles || defaultRoles
|
||||
}
|
||||
|
||||
request (params, callback) {
|
||||
params.url = resolve(this.url, params.path)
|
||||
debug('Starting a new request', params)
|
||||
return makeRequest(params, callback)
|
||||
}
|
||||
|
||||
close () {
|
||||
debug('Closing connection')
|
||||
}
|
||||
|
||||
setRole (role, enabled) {
|
||||
assert(
|
||||
~validRoles.indexOf(role),
|
||||
`Unsupported role: '${role}'`
|
||||
)
|
||||
assert(
|
||||
typeof enabled === 'boolean',
|
||||
'enabled should be a boolean'
|
||||
)
|
||||
this.roles[role] = enabled
|
||||
return this
|
||||
}
|
||||
|
||||
get status () {
|
||||
return this._status
|
||||
}
|
||||
|
||||
set status (status) {
|
||||
assert(
|
||||
~validStatuses.indexOf(status),
|
||||
`Unsupported status: '${status}'`
|
||||
)
|
||||
this._status = status
|
||||
}
|
||||
}
|
||||
|
||||
Connection.statuses = {
|
||||
ALIVE: 'alive',
|
||||
DEAD: 'dead'
|
||||
}
|
||||
|
||||
Connection.roles = {
|
||||
MASTER: 'master',
|
||||
DATA: 'data',
|
||||
INGEST: 'ingest',
|
||||
COORDINATING: 'coordinating',
|
||||
MACHINE_LEARNING: 'machine_learning'
|
||||
}
|
||||
|
||||
const defaultRoles = {
|
||||
[Connection.roles.MASTER]: true,
|
||||
[Connection.roles.DATA]: true,
|
||||
[Connection.roles.INGEST]: true,
|
||||
[Connection.roles.COORDINATING]: true,
|
||||
[Connection.roles.MACHINE_LEARNING]: true
|
||||
}
|
||||
|
||||
const validStatuses = Object.keys(Connection.statuses)
|
||||
.map(k => Connection.statuses[k])
|
||||
const validRoles = Object.keys(Connection.roles)
|
||||
.map(k => Connection.roles[k])
|
||||
|
||||
module.exports = Connection
|
||||
Reference in New Issue
Block a user