npm.io
0.1.1 • Published 8 years ago

@nhz.io/abstract-resource-manager

Licence
MIT
Version
0.1.1
Deps
0
Vulns
0
Weekly
0

AbstractResourceManager Class

Travis Build NPM Version

Install

npm i -S @nhz.io/abstract-resource-manager

Usage

const AbstractResourceManager = require('@nhz.io/abstract-resource-manager')

class Manager extends AbstractResourceManager {
  /* Implement the methods */
}

...

Literate Source

Manager
class AbstractResourceManager
Start managing resource
  manage: (resource) ->

    return unless resource = @register resource

    job = @getJob resource

    if job

      @stop job, resource if @shouldStop job, resource

      config = @needUpgrade job, resource

      job = @upgrade job, config if config

      @start job, resource if @shouldStart job, resource

Return the resource

    resource
Stop managing resouce
  unmanage: (resource) ->

    return unless resource = @unregister resource

    job = @getJob resource

    if job

      @stop job, resource if @shouldStop job, resource

      config = @needDowngrade job, resource

      job = @downgrade job, config if config

      @start job, resource if @shouldStart job, resource

Return the resource

    resource
Unimplemented methods with sane defaults
  register: (resource) -> resource

  unregister: (resource) -> resource

  getJob: (resource) -> null

  shouldStart: (job, resource) -> false

  shouldStop: (job, resource) -> false

  needUpgrade: (job, resource) -> null

  needDowngrade: (job, resource) -> null

  upgrade: (job, config) -> null

  downgrade: (job, config) -> null

  start: (job, resource) -> job

  stop: (job, resource) -> job

module.exports = AbstractResourceManager

Tests

test = require 'tape-async'

test 'AbstractResourceManager constructor', (t) ->
  t.plan 1

  manager = new AbstractResourceManager

  t.ok manager instanceof AbstractResourceManager

Version 0.1.1

License MIT

Keywords