src/kad/router.js
function Router (options) {
  if (!(this instanceof Router)) {
    return new Router(options)
  }
  this._log = options.logger
  this._rpc = options.transport
  this._self = this._rpc._contact
  this._validator = options.validator
  this._routingTable = new RoutingTable(options.storage, this._rpc)
}
function Router (options) {
  if (!(this instanceof Router)) {
    return new Router(options)
  }
  this._log = options.logger
  this._rpc = options.transport
  this._self = this._rpc._contact
  this._validator = options.validator
  this._routingTable = new RoutingTable(options.storage, this._rpc)
}
Represents a routing table of known {@link Contact}s; used by {@link Node}.
@constructor
@param {Object} options
@param {Logger} options.logger - Logger instance to use
@param {RPC} options.transport - Transport adapter (RPC) to use
@param {Router~validator} options.validator - Key-Value validation function
@emits Router#add
@emits Router#drop
@emits Router#shift