awv3
Version:
⚡ AWV3 embedded CAD
140 lines (106 loc) • 5.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _socket = require('socket.io-client');
var _socket2 = _interopRequireDefault(_socket);
var _base = require('./base');
var _base2 = _interopRequireDefault(_base);
var _parser = require('../core/parser');
var _parser2 = _interopRequireDefault(_parser);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var SocketIO = function (_Base) {
(0, _inherits3.default)(SocketIO, _Base);
function SocketIO(options) {
(0, _classCallCheck3.default)(this, SocketIO);
return (0, _possibleConstructorReturn3.default)(this, (SocketIO.__proto__ || (0, _getPrototypeOf2.default)(SocketIO)).call(this, options));
}
(0, _createClass3.default)(SocketIO, [{
key: 'connect',
value: function connect() {
var _this2 = this;
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.url;
var options = arguments[1];
return new _promise2.default(function (resolve, reject) {
_this2.url = url;
_this2.socket = (0, _socket2.default)(url);
_this2.socket.once("connect", function () {
_this2.socket.once('permission', function (data) {
_this2.connected = true;
_this2.id = data.id;
_this2.emit('connected', _this2, data);
resolve(_this2);
});
_this2.socket.emit('init', options || _this2.options);
});
_this2.socket.on('connect_error', function (reason) {
_this2.emit('error', reason);
reject(reason);
});
_this2.socket.on('connect_timeout', function (reason) {
_this2.emit('error', reason);
reject(reason);
});
var current = undefined;
_this2.socket.on('binary', function (data, flags) {
SocketIO._ack(_this2.socket);
if (current) (0, _parser.handleResult)(current, new Uint8Array(data));
});
_this2.socket.on('json', function (data) {
SocketIO._ack(_this2.socket);
if (data.from === 'BeginFrame') current = _this2.tasks.get(data.transactionID);
if (current) (0, _parser.handleResult)(current, data);
if (current && data.from === 'EndFrame' && data.transactionID === current.id) {
_this2.tasks.delete(current.id);
current = undefined;
}
});
});
}
}, {
key: 'disconnect',
value: function disconnect() {
this.socket.disconnect();
this.socket = undefined;
this.tasks = new _map2.default();
this.emit('disconnected', this);
}
}, {
key: 'request',
value: function request(command) {
var _this3 = this;
var factory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new _promise2.default(function (resolve, reject) {
var context = (0, _parser.createContext)(factory, resolve, reject, command);
context.options.callback({ type: _parser2.default.Factory.Started, context: context });
_this3.tasks.set(context.id, context);
_this3.socket.emit('send', context.id, command, factory.classcad);
}).then(function (results) {
results.options.callback({ type: _parser2.default.Factory.Finished, context: results });
return results;
});
}
}], [{
key: '_ack',
value: function _ack(socket) {
//if (socket.io.engine.transport.name !== 'websocket');
socket && socket.emit('received');
}
}]);
return SocketIO;
}(_base2.default);
exports.default = SocketIO;