proteus-js-client
Version:
Proteus JavaScript Client
217 lines (194 loc) • 9.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _rsocketFlowable = require('rsocket-flowable');
var _frames = require('../frames');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /**
* Copyright (c) 2017-present, Netifi Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
*/
var DeferredConnectingRSocket = function () {
function DeferredConnectingRSocket(transformer, connect) {
_classCallCheck(this, DeferredConnectingRSocket);
this._transformer = transformer;
this._connect = connect;
}
// _error: Error;
// _connected: boolean;
// _connecting: Single<ReactiveSocket<Buffer, Buffer>>;
// _connection: ReactiveSocket<Buffer, Buffer>;
DeferredConnectingRSocket.broadcast = function broadcast(group, tags, connect) {
return new DeferredConnectingRSocket(function (payload) {
var metadata = (0, _frames.encodeFrame)({
type: _frames.FrameTypes.BROADCAST,
majorVersion: null,
minorVersion: null,
group: group,
tags: tags || {},
metadata: payload.metadata || Buffer.alloc(0)
});
return {
data: payload.data,
metadata: metadata
};
}, connect);
};
DeferredConnectingRSocket.group = function group(_group, tags, connect) {
return new DeferredConnectingRSocket(function (payload) {
var metadata = (0, _frames.encodeFrame)({
type: _frames.FrameTypes.GROUP,
majorVersion: null,
minorVersion: null,
group: _group,
tags: tags || {},
metadata: payload.metadata || Buffer.alloc(0)
});
return {
data: payload.data,
metadata: metadata
};
}, connect);
};
DeferredConnectingRSocket.prototype.fireAndForget = function fireAndForget(payload) {
var transformedPayload = this._transformer(payload);
this._connect().subscribe({
onComplete: function onComplete(connection) {
return connection.fireAndForget(transformedPayload);
},
onError: function onError(err) {
return console.warn('Failed to connect:' + JSON.stringify(err));
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
};
DeferredConnectingRSocket.prototype.requestResponse = function requestResponse(payload) {
var _this = this;
var self = this;
return new _rsocketFlowable.Single(function (subscriber) {
_this._connect().subscribe({
onComplete: function onComplete(connection) {
try {
connection.requestResponse(self._transformer(payload)).subscribe(subscriber);
} catch (error) {
subscriber.onError(error);
}
},
onError: function onError(error) {
subscriber.onError(error);
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
});
};
DeferredConnectingRSocket.prototype.requestStream = function requestStream(payload) {
var _this2 = this;
var self = this;
return new _rsocketFlowable.Flowable(function (subscriber) {
_this2._connect().subscribe({
onComplete: function onComplete(connection) {
try {
connection.requestStream(self._transformer(payload)).subscribe(subscriber);
} catch (error) {
subscriber.onError(error);
}
},
onError: function onError(error) {
subscriber.onError(error);
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
});
};
DeferredConnectingRSocket.prototype.requestChannel = function requestChannel(payloads) {
var _this3 = this;
var self = this;
return new _rsocketFlowable.Flowable(function (subscriber) {
_this3._connect().subscribe({
onComplete: function onComplete(connection) {
try {
connection.requestChannel(payloads.map(function (payload) {
return self._transformer(payload);
})).subscribe(subscriber);
} catch (err) {
subscriber.onError(err);
}
},
onError: function onError(error) {
subscriber.onError(error);
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
});
};
DeferredConnectingRSocket.prototype.metadataPush = function metadataPush(payload) {
var _this4 = this;
var self = this;
return new _rsocketFlowable.Single(function (subscriber) {
_this4._connect().subscribe({
onComplete: function onComplete(connection) {
try {
connection.metadataPush(self._transformer(payload)).subscribe(subscriber);
} catch (error) {
subscriber.onError(error);
}
},
onError: function onError(error) {
subscriber.onError(error);
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
});
};
DeferredConnectingRSocket.prototype.close = function close() {
this._connect().subscribe({
onComplete: function onComplete(connection) {
connection.close();
},
onSubscribe: function onSubscribe(cancel) {
/* not sure we would ever cancel */
}
});
};
DeferredConnectingRSocket.prototype.connectionStatus = function connectionStatus() {
var _this5 = this;
return new _rsocketFlowable.Flowable(function (subscriber) {
_this5._connect().subscribe({
onComplete: function onComplete(connection) {
connection.connectionStatus().subscribe(subscriber);
},
onError: function onError(error) {
subscriber.onError(error);
},
onSubscribe: function onSubscribe(cancel) {
subscriber.onSubscribe(cancel);
}
});
});
};
return DeferredConnectingRSocket;
}();
exports.default = DeferredConnectingRSocket;