Sha256: e1b9cd5fa8f97c5b8aea7bb3054f55285c1ee946240305dc691b073fafd5b7be

Contents?: true

Size: 1.35 KB

Versions: 35

Compression:

Stored size: 1.35 KB

Contents

function AcceptorStateMachine(states, state) {
  this.currentState = state || null;
  this.states = states || {};
}

AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {
  if (typeof finalState === 'function') {
    inputError = bindObject; bindObject = done;
    done = finalState; finalState = null;
  }

  var self = this;
  var state = self.states[self.currentState];
  state.fn.call(bindObject || self, inputError, function(err) {
    if (err) {
      if (state.fail) self.currentState = state.fail;
      else return done ? done.call(bindObject, err) : null;
    } else {
      if (state.accept) self.currentState = state.accept;
      else return done ? done.call(bindObject) : null;
    }
    if (self.currentState === finalState) {
      return done ? done.call(bindObject, err) : null;
    }

    self.runTo(finalState, done, bindObject, err);
  });
};

AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {
  if (typeof acceptState === 'function') {
    fn = acceptState; acceptState = null; failState = null;
  } else if (typeof failState === 'function') {
    fn = failState; failState = null;
  }

  if (!this.currentState) this.currentState = name;
  this.states[name] = { accept: acceptState, fail: failState, fn: fn };
  return this;
};

module.exports = AcceptorStateMachine;

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
sumomo-0.10.8 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.10.4 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.10.3 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.10.2 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.10.1 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.10.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.9.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.22 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.21 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.20 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.17 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.16 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.15 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.14 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.13 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.12 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.11 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.10 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.9 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js
sumomo-0.8.8 data/sumomo/api_modules/node_modules/aws-sdk/lib/state_machine.js