@hashgraph/sdk
Version:
78 lines (72 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var grpc = _interopRequireWildcard(require("@grpc/grpc-js"));
var _MirrorChannel = _interopRequireDefault(require("./MirrorChannel.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
// SPDX-License-Identifier: Apache-2.0
/**
* @typedef {import("../channel/Channel.js").default} Channel
* @typedef {import("./MirrorChannel.js").MirrorError} MirrorError
*/
/**
* @internal
*/
class NodeMirrorChannel extends _MirrorChannel.default {
/**
* @internal
* @param {string} address
*/
constructor(address) {
super();
/**
* @type {grpc.Client}
* @private
*/
this._client = new grpc.Client(address, address.endsWith(":50212") || address.endsWith(":443") ? grpc.credentials.createSsl() : grpc.credentials.createInsecure(), {
"grpc.keepalive_time_ms": 90000,
"grpc.keepalive_timeout_ms": 5000
});
}
/**
* @override
* @returns {void}
*/
close() {
this._client.close();
}
/**
* @override
* @internal
* @param {string} serviceName
* @param {string} methodName
* @param {Uint8Array} requestData
* @param {(data: Uint8Array) => void} callback
* @param {(error: MirrorError | Error) => void} error
* @param {() => void} end
* @returns {() => void}
*/
makeServerStreamRequest(serviceName, methodName, requestData, callback, error, end) {
const stream = this._client.makeServerStreamRequest(`/com.hedera.mirror.api.proto.${serviceName}/${methodName}`, value => value, value => value, Buffer.from(requestData)).on("data", (/** @type {Uint8Array} */data) => {
callback(data);
}).on("status", (/** @type {grpc.StatusObject} */status) => {
if (status.code == 0) {
end();
} else {
error(status);
}
})
// eslint-disable-next-line @typescript-eslint/no-unused-vars
.on("error", (/** @type {grpc.StatusObject} */err) => {
error(err);
});
return () => {
stream.cancel();
};
}
}
exports.default = NodeMirrorChannel;