1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- var EventEmitter = require('events').EventEmitter;
- var util = require('util');
- function Command() {
- EventEmitter.call(this);
- this.next = null;
- }
- util.inherits(Command, EventEmitter);
- // slow. debug only
- Command.prototype.stateName = function() {
- var state = this.next;
- for (i in this)
- if (this[i] == state && i != 'next')
- return i;
- };
- Command.prototype.execute = function(packet, connection) {
- // TODO: hack
- if (!this.next) {
- this.next = this.start;
- }
- if (packet && packet.isError()) {
- var err = packet.asError();
- if (this.onResult)
- this.onResult(err);
- else
- this.emit('error', err);
- return true;
- }
- // TODO: don't return anything from execute, it's ugly and error-prone. Listen for 'end' event in connection
- this.next = this.next(packet, connection);
- if (this.next) {
- return false;
- } else {
- this.emit('end');
- return true;
- }
- };
- module.exports = Command;
|