UNPKG

ravendb

Version:
98 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServerNode = void 0; const UriUtility_js_1 = require("./UriUtility.js"); const Topology_js_1 = require("./Topology.js"); class ServerNode { database; url; clusterTag = null; serverRole; supportsAtomicClusterWrites; _lastServerVersionCheck = 0; _lastServerVersion; constructor(opts) { if (opts) { this.database = opts.database; this.url = opts.url; this.clusterTag = opts.clusterTag; } } shouldUpdateServerVersion() { if (!this._lastServerVersion || this._lastServerVersionCheck > 100) { return true; } this._lastServerVersionCheck++; return false; } updateServerVersion(serverVersion) { this._lastServerVersion = serverVersion; this._lastServerVersionCheck = 0; this.supportsAtomicClusterWrites = false; if (serverVersion) { const tokens = serverVersion.split("."); try { const major = Number.parseInt(tokens[0], 10); const minor = Number.parseInt(tokens[1], 10); if (major > 5 || (major === 5 && minor >= 2)) { this.supportsAtomicClusterWrites = true; } } catch { // ignore } } } discardServerVersion() { this._lastServerVersion = null; this._lastServerVersionCheck = 0; } static createFrom(topology, etag) { const newTopology = new Topology_js_1.Topology(); newTopology.etag = etag; newTopology.nodes = []; newTopology.promotables = []; if (!topology) { return newTopology; } for (const node of Object.keys(topology.members)) { const member = topology.members[node]; newTopology.nodes.push(new ServerNode({ url: member, clusterTag: node, serverRole: "Member" })); } for (const node of Object.keys(topology.watchers)) { const watcher = topology.watchers[node]; newTopology.nodes.push(new ServerNode({ url: watcher, clusterTag: node, serverRole: "Member" })); } return newTopology; } get lastServerVersion() { return this._lastServerVersion; } get isSecure() { return UriUtility_js_1.UriUtility.isSecure(this.url); } fromJson(json) { const from = json; this.url = from.Url; this.database = from.Database || null; this.clusterTag = from.ClusterTag || null; } static fromJson(json) { const node = new ServerNode({ database: "", url: "" }); node.fromJson(json); return node; } } exports.ServerNode = ServerNode; //# sourceMappingURL=ServerNode.js.map