@Test public void testValues() { LocalMap<String, String> map = sharedData.getLocalMap("foo"); map.put("foo1", "val1"); map.put("foo2", "val2"); map.put("foo3", "val3"); assertEquals(3, map.size()); Collection<String> values = map.values(); assertEquals(3, values.size()); assertTrue(values.contains("val1")); assertTrue(values.contains("val2")); assertTrue(values.contains("val3")); }
@Test public void testValuesCopied() { LocalMap<String, JsonObject> map = sharedData.getLocalMap("foo"); JsonObject json1 = new JsonObject().put("foo1", "val1"); JsonObject json2 = new JsonObject().put("foo2", "val1"); JsonObject json3 = new JsonObject().put("foo3", "val1"); map.put("key1", json1); map.put("key2", json2); map.put("key3", json3); assertEquals(3, map.size()); Collection<JsonObject> values = map.values(); assertEquals(3, values.size()); assertTrue(values.contains(json1)); assertTrue(values.contains(json2)); assertTrue(values.contains(json3)); // copied assertFalse(containsExact(values, json1)); assertFalse(containsExact(values, json2)); assertFalse(containsExact(values, json3)); }
@Override public synchronized void handle(Long tid) { long now = System.currentTimeMillis(); Set<String> toRemove = new HashSet<>(); for (Session session: localMap.values()) { if (now - session.lastAccessed() > session.timeout()) { toRemove.add(session.id()); } } for (String id: toRemove) { localMap.remove(id); } if (!closed) { setTimer(); } }
@Test public void testValues() { LocalMap<String, String> map = sharedData.getLocalMap("foo"); map.put("foo1", "val1"); map.put("foo2", "val2"); map.put("foo3", "val3"); assertEquals(3, map.size()); Collection<String> values = map.values(); assertEquals(3, values.size()); assertTrue(values.contains("val1")); assertTrue(values.contains("val2")); assertTrue(values.contains("val3")); }
@Test public void testValuesCopied() { LocalMap<String, JsonObject> map = sharedData.getLocalMap("foo"); JsonObject json1 = new JsonObject().put("foo1", "val1"); JsonObject json2 = new JsonObject().put("foo2", "val1"); JsonObject json3 = new JsonObject().put("foo3", "val1"); map.put("key1", json1); map.put("key2", json2); map.put("key3", json3); assertEquals(3, map.size()); Collection<JsonObject> values = map.values(); assertEquals(3, values.size()); assertTrue(values.contains(json1)); assertTrue(values.contains(json2)); assertTrue(values.contains(json3)); // copied assertFalse(containsExact(values, json1)); assertFalse(containsExact(values, json2)); assertFalse(containsExact(values, json3)); }
@Override public void values(Handler<AsyncResult<List<V>>> handler) { try { Collection<V> values = local.values(); handler.handle(Future.succeededFuture(new ArrayList<>(values))); } catch (Exception e) { handler.handle(Future.failedFuture(e)); } }
@Override public void values(Handler<AsyncResult<List<V>>> handler) { try { Collection<V> values = local.values(); handler.handle(Future.succeededFuture(new ArrayList<>(values))); } catch (Exception e) { handler.handle(Future.failedFuture(e)); } }
@Override public void all(Handler<JsonArray> callback) { JsonArray items = new JsonArray(); for (String s : storage.values()) { items.add(new JsonObject(s)); } callback.handle(items); }
/** retrieve all stored messages by topicFilter */ public void getMessagesByTopic(String topicFilter, String clientID, Handler<List<byte[]>> handler) { String key = tenant + clientID + topicFilter; // qos 1 and 2 messages LocalMap<String, byte[]> set = vertx.sharedData().getLocalMap(key); // retained messages LocalMap<String, byte[]> set2 = vertx.sharedData().getLocalMap(tenant); // union ArrayList<byte[]> ret = new ArrayList<>(); ret.addAll(set.values()); ret.addAll(set2.values()); handler.handle( ret ); }
@Override public synchronized void handle(Long tid) { long now = System.currentTimeMillis(); Set<String> toRemove = new HashSet<>(); for (Session session: localMap.values()) { if (now - session.lastAccessed() > session.timeout()) { toRemove.add(session.id()); } } for (String id: toRemove) { localMap.remove(id); } if (!closed) { setTimer(); } }