/** * @param key e.g., {service}.configurators, {service}.tagrouters, {group}.dubbo.properties * @return */ @Override public Object getInternalProperty(String key) { ChildData childData = treeCache.getCurrentData(key); if (childData != null) { return new String(childData.getData(), StandardCharsets.UTF_8); } return null; }
@Override public void close() throws IOException { statusCache.close(); }
private ChangedType getChangedType(final TreeCacheEvent event) { switch (event.getType()) { case NODE_UPDATED: return DataChangedEvent.ChangedType.UPDATED; case NODE_REMOVED: return DataChangedEvent.ChangedType.DELETED; default: return DataChangedEvent.ChangedType.IGNORED; } }
@Override public void nodeChanged() throws Exception { String path = nodeCache.getCurrentData().getPath(); Object data = nodeCache.getCurrentData().getData(); if (data == null) { listener.dataDeleted(path); } else { listener.dataChange(path, data); } } };
@Override public final void childEvent(final CuratorFramework client, final TreeCacheEvent event) throws Exception { ChildData childData = event.getData(); if (null == childData) { return; } String path = childData.getPath(); if (path.isEmpty()) { return; } dataChanged(path, event.getType(), null == childData.getData() ? "" : new String(childData.getData(), Charsets.UTF_8)); }
@Override public void childEvent(CuratorFramework curatorFramework, PathChildrenCacheEvent pathChildrenCacheEvent) throws Exception { if (pathChildrenCacheEvent.getType().equals(PathChildrenCacheEvent.Type.CHILD_ADDED)) { final Task task = jsonMapper.readValue( cf.getData().forPath(pathChildrenCacheEvent.getData().getPath()), Task.class ); assignTask(task); } } }
@Override public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception { if (event.getType() == PathChildrenCacheEvent.Type.CHILD_ADDED) { DataSegmentChangeRequest request = jsonMapper.readValue( event.getData().getData(), DataSegmentChangeRequest.class ); request.go(handler, null); } } }
@Override public void childEvent(final CuratorFramework client, final TreeCacheEvent event) throws UnsupportedEncodingException { ChildData data = event.getData(); if (null == data || null == data.getPath()) { return; } ChangedType changedType = getChangedType(event); if (ChangedType.IGNORED != changedType) { dataChangedEventListener.onChange(new DataChangedEvent(data.getPath(), null == data.getData() ? null : new String(data.getData(), "UTF-8"), changedType)); } } });
/** * Adds a listener to the pathChildrenCache, initializes the cache, then starts the cache-management background * thread */ private void buildCache() throws Exception { this.treeCache = new TreeCache(client, rootPath); // create the watcher for future configuration updates treeCache.getListenable().addListener(cacheListener, executor); // it's not blocking, so we use an extra latch 'initializedLatch' to make sure cache fully initialized before use. treeCache.start(); initializedLatch.await(); } }
public void start() throws Exception { statusCache.start(PathChildrenCache.StartMode.POST_INITIALIZED_EVENT); }
public void addListener(PathChildrenCacheListener listener) { statusCache.getListenable().addListener(listener); }
public PathChildrenCache make(CuratorFramework curator, String path) { return new PathChildrenCache( curator, path, cacheData, compressed, new CloseableExecutorService(exec, shutdownExecutorOnClose) ); }
@Override public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) { if (event.getType() == PathChildrenCacheEvent.Type.CHILD_ADDED) { loadRequestSignal.countDown(); } } }
@Override public void evictCacheData(final String cachePath) { TreeCache cache = caches.remove(cachePath + "/"); if (null != cache) { cache.close(); } }
@Override public void nodeChanged() throws Exception { String path = nodeCache.getCurrentData().getPath(); Object data = nodeCache.getCurrentData().getData(); if (data == null) { listener.dataDeleted(path); } else { listener.dataChange(path, data); } } };
/** * @param key e.g., {service}.configurators, {service}.tagrouters, {group}.dubbo.properties * @return */ @Override public Object getInternalProperty(String key) { ChildData childData = treeCache.getCurrentData(key); if (childData != null) { return new String(childData.getData(), StandardCharsets.UTF_8); } return null; }
/** * Adds a listener to the pathChildrenCache, initializes the cache, then starts the cache-management background * thread */ private void buildCache() throws Exception { this.treeCache = new TreeCache(client, rootPath); // create the watcher for future configuration updates treeCache.getListenable().addListener(cacheListener, executor); // it's not blocking, so we use an extra latch 'initializedLatch' to make sure cache fully initialized before use. treeCache.start(); initializedLatch.await(); } }
@Override public String get(final String key) { TreeCache cache = findTreeCache(key); if (null == cache) { return getDirectly(key); } ChildData resultInCache = cache.getCurrentData(key); if (null != resultInCache) { return null == resultInCache.getData() ? null : new String(resultInCache.getData(), Charsets.UTF_8); } return getDirectly(key); }
@Override public String get(final String key) { TreeCache cache = findTreeCache(key); if (null == cache) { return getDirectly(key); } ChildData resultInCache = cache.getCurrentData(key); if (null != resultInCache) { return null == resultInCache.getData() ? null : new String(resultInCache.getData(), Charsets.UTF_8); } return getDirectly(key); }