satellite.coffee | |
|---|---|
| memory stores and get/set API | redisStore = require './satellite/stores/redis'
defaultStore = require './satellite/stores/default'
@store = defaultStore |
| Load the various strategies | roundRobin = require './satellite/strategies/roundRobin'
stickySession = require './satellite/strategies/stickySession' |
| Add an address to the list | exports.addAddress = (address, cb) =>
@store.addresses.get (addresses) =>
if addresses.indexOf(address) is -1
@store.addresses.add address, (status) ->
cb status
else
cb 'already there' |
| Remove an address from the list | exports.removeAddress = (address, cb) =>
@store.addresses.remove address, (status) =>
@store.stickySessions.get (stickySessions) =>
for cookie, addr of stickySessions
if addr is address
@store.stickySessions.delete cookie, (res) ->
{}
cb status
|
| Change store | exports.useStore = (storeName, options={}, cb=null) =>
switch storeName
when 'default'
@store = defaultStore
cb("Ok") if cb?
when 'redis'
@store = redisStore
@store.redisClient = options.redisClient
@store.namespace = options.namespace || 'satellite'
cb("Ok") if cb?
else
cb("Error: #{storeName} not a valid store type") if cb? |
| Make middleware functions available | exports.roundRobinStrategy = roundRobin.strategy
exports.stickySessionStrategy = stickySession.strategy
|