public static LongLongHashTable doubleClone(LongLongHashTable source) { final LongLongHashTable result = new LongLongHashTable(Integer.bitCount(source.mask)*2); LongLongHashTableVisitor visitor = new LongLongHashTableVisitor(){ @Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } }; LongLongHashTable.visit(source, visitor); return result; }
public static synchronized void setSessionTimeoutNS(int sessionId, long timeoutNS) { if (timeoutNS>0) { minTimeout = Math.min(minTimeout, timeoutNS); } if (LongLongHashTable.isFull(timeoutHash)) { timeoutHash = LongLongHashTable.doubleClone(timeoutHash); } LongLongHashTable.setItem(timeoutHash, sessionId, timeoutNS); }
public static long lookupSessionTimeoutNS(int sessionId) { long value = LongLongHashTable.getItem(timeoutHash, sessionId); if (0!=value) { return value; } else { return -1; } }
@Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } };
public synchronized static int registerDomain(CharSequence host) { int hostId = (int)TrieParserReader.query(new TrieParserReader(true), domainRegistry, host); if (-1==hostId) { hostId = totalKnownDomains++; domainRegistry.setUTF8Value(host, hostId); if (hostId==conTables.length) { LongLongHashTable[] bigger = new LongLongHashTable[conTables.length*2]; System.arraycopy(conTables, 0, bigger, 0, conTables.length); conTables = bigger; } conTables[hostId] = new LongLongHashTable(5); //This will grow as needed //store list of domains so the actual connection code can use this value instead of passing it arround String strDomain = host instanceof String ? (String)host : host.toString(); domainLookupArray = ArrayGrow.setIntoArray(domainLookupArray, strDomain, hostId); domainLookupArrayBytes = ArrayGrow.setIntoArray(domainLookupArrayBytes, strDomain.getBytes(), hostId); } return hostId; }
public static long lookup(int hostId, int port, int sessionId) { assert(hostId>=0) : "hostID must be zero or postitive"; int key = computePortSessionKey(port, sessionId); long result = LongLongHashTable.getItem(conTables[hostId], key); if (0!=result) { return result; } else { if (LongLongHashTable.hasItem(conTables[hostId],key)) { return result; } else { return -1; } } }
@Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } };
public static LongLongHashTable doubleClone(LongLongHashTable source) { final LongLongHashTable result = new LongLongHashTable(Integer.bitCount(source.mask)*2); LongLongHashTableVisitor visitor = new LongLongHashTableVisitor(){ @Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } }; LongLongHashTable.visit(source, visitor); return result; }
LongLongHashTable table = conTables[cc.hostId]; if (LongLongHashTable.isFull(table)) { conTables[cc.hostId] = table = LongLongHashTable.doubleClone(table); LongLongHashTable.setItem(table, key, connectionId);
@Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } };
public static LongLongHashTable doubleClone(LongLongHashTable source) { final LongLongHashTable result = new LongLongHashTable(Integer.bitCount(source.mask)*2); LongLongHashTableVisitor visitor = new LongLongHashTableVisitor(){ @Override public void visit(long key, long value) { LongLongHashTable.setItem(result, key, value); } }; LongLongHashTable.visit(source, visitor); return result; }