Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | 41x 41x 41x 41x 41x 41x 46x 46x 46x 41x 41x 41x 41x 24x 24x 24x 41x 41x 41x 41x 6x 6x 6x 41x 41x 8x 8x 8x 41x 41x 3095x 3010x 3010x 3010x 3010x 85x 85x 3095x 45x 45x 45x 40x 40x 3095x 41x 41x 46x 46x 41x 41x 40x 40x 40x 40x 41x 41x 41x 2x 2x 2x 2x 39x 39x 41x 15x 15x 15x 24x 24x 41x 41x 41x 24x 24x 41x 41x 18x 18x 18x 18x 41x 41x 60x 60x 47x 47x 60x 13x 13x 60x 41x | // Copyright (c) ZeroC, Inc. import { HashMap } from "./HashMap.js"; class EndpointTableEntry { constructor(time, endpoints) { this.time = time; this.endpoints = endpoints; } } class ReferenceTableEntry { constructor(time, reference) { this.time = time; this.reference = reference; } } export class LocatorTable { constructor() { this._adapterEndpointsTable = new Map(); // Map<String, EndpointTableEntry> this._objectTable = new HashMap(HashMap.compareEquals); // Map<Ice.Identity, ReferenceTableEntry> } clear() { this._adapterEndpointsTable.clear(); this._objectTable.clear(); } getAdapterEndpoints(adapter, ttl, cached) { if (ttl === 0) { // Locator cache disabled. cached.value = false; return null; } const entry = this._adapterEndpointsTable.get(adapter); if (entry !== undefined) { cached.value = this.checkTTL(entry.time, ttl); return entry.endpoints; } cached.value = false; return null; } addAdapterEndpoints(adapter, endpoints) { this._adapterEndpointsTable.set(adapter, new EndpointTableEntry(Date.now(), endpoints)); } removeAdapterEndpoints(adapter) { const entry = this._adapterEndpointsTable.get(adapter); this._adapterEndpointsTable.delete(adapter); return entry !== undefined ? entry.endpoints : null; } getObjectReference(id, ttl, cached) { if (ttl === 0) { // Locator cache disabled. cached.value = false; return null; } const entry = this._objectTable.get(id); if (entry !== undefined) { cached.value = this.checkTTL(entry.time, ttl); return entry.reference; } cached.value = false; return null; } addObjectReference(id, ref) { this._objectTable.set(id, new ReferenceTableEntry(Date.now(), ref)); } removeObjectReference(id) { const entry = this._objectTable.get(id); this._objectTable.delete(id); return entry !== undefined ? entry.reference : null; } checkTTL(time, ttl) { console.assert(ttl !== 0); if (ttl < 0) { // TTL = infinite return true; } else { return Date.now() - time <= ttl * 1000; } } } |