/** * Given a source vertex, get all of the vertices which can be reached from * that source. * * @param source the source vertex * * @return a {@link Set} of the destination vertices */ public Set<Object> getDestinations(final Object source) { return Collections.unmodifiableSet(edgeGraph.row(source).keySet()); }
for (String group : surplusExtra.rowKeySet()) { if (!extras.containsKey(group)) { TserverGroupInfo srcTgi = surplusExtra.row(group).values().iterator().next();
@Override protected Map<String, SessionData> getRow(String userId) { return sessionDatas.row(userId); } }
nextGroup: for (String group : extraSurplus.rowKeySet()) { if (!extras.containsKey(group)) { Iterator<TserverGroupInfo> iter = extraSurplus.row(group).values().iterator(); TserverGroupInfo srcTgi = iter.next();
@Override public Iterable<GraphEdge<V, E>> outgoingEdgesOf(V vertex) { return graphTable.row(vertex).values(); }
/** * Given a source vertex, get all of the vertices which can be reached from * that source. * * @param source the source vertex * * @return a {@link Set} of the destination vertices */ public Set<Object> getDestinations(final Object source) { return Collections.unmodifiableSet(edgeGraph.row(source).keySet()); }
@Override public Iterable<GraphEdge<V, E>> edgesOf(V vertex) { return Sets.union(Sets.newHashSet(graphTable.row(vertex).values()), Sets.newHashSet(graphTable.column(vertex).values())); }
/** * @param cls Class of Power * @return All static and dynamic implemented interfaces */ static Set<Class<? extends Power>> getDynamicInterfaces(Class<? extends Power> cls) { return getStaticInterfaces(cls) .stream() .flatMap(i -> Stream.concat( Stream.of(i), PowerManager.adapters.row(i).keySet().stream() )) .collect(Collectors.toSet()); }
public void remove(V v, GraphEdge<V,E> edge){ // Try to remove vertex from row/columns Preconditions.checkArgument(edge.getVertex1().equals(v) || edge.getVertex2().equals(v), "Edge is not connected with the vertex"); V opposite = edge.getVertex1().equals(v) ? edge.getVertex2() : edge.getVertex1(); graphTable.row(v).remove(opposite); }
private void sendShutdownNotifications(ObservableWebresource webresource) { try { this.lock.writeLock().lock(); Map<InetSocketAddress, Token> observations = new HashMap<>(this.observations2.row(webresource)); for (Map.Entry<InetSocketAddress, Token> observation : observations.entrySet()) { InetSocketAddress remoteSocket = observation.getKey(); Token token = observation.getValue(); ObservationParams params = stopObservation(remoteSocket, token); if(params != null) { BlockSize block2Size = params.getBlock2Size(); String uriPath = webresource.getUriPath(); getExecutor().submit(new ShutdownNotificationTask(remoteSocket, token, uriPath, block2Size)); } else { LOG.error("This should never happen!"); } } } finally { this.lock.writeLock().unlock(); } }
private void sendUpdateNotifications(ObservableWebresource webresource) { try { this.lock.readLock().lock(); Map<Long, WrappedResourceStatus> representations = new HashMap<>(); Set<Map.Entry<InetSocketAddress, Token>> observations = this.observations2.row(webresource).entrySet(); LOG.info("Webresource \"{}\" was updated. Starting to send update notifications to {} observers.", webresource.getUriPath(), observations.size()); for(Map.Entry<InetSocketAddress, Token> observation : observations) { // determine observation specific data InetSocketAddress remoteSocket = observation.getKey(); Token token = observation.getValue(); ObservationParams params = this.observations1.get(remoteSocket, token); long contentFormat = params.getContentFormat(); BlockSize block2Size = params.getBlock2Size(); // get the actual resource status WrappedResourceStatus status = representations.get(contentFormat); if (status == null) { status = webresource.getWrappedResourceStatus(contentFormat); representations.put(contentFormat, status); } // schedule update notification (immediately) boolean confirmable = webresource.isUpdateNotificationConfirmable(remoteSocket); int messageType = confirmable ? MessageType.CON : MessageType.NON; getExecutor().submit(new UpdateNotificationTask(remoteSocket, status, messageType, token, block2Size)); } } finally { this.lock.readLock().unlock(); } }
public void remove(V v){ // Get vertices connected with this one for(GraphEdge<V,E> edge : edgesOf(v)){ V connectedVertex = edge.getVertex1().equals(v) ? edge.getVertex2() : edge.getVertex1(); // Is this vertex connected with a different vertex? if (!greaterThan(1, edgesOf(connectedVertex))){ disconnected.add(connectedVertex); } } if (graphTable.containsRow(v)){ graphTable.row(v).clear(); } if (graphTable.containsColumn(v)){ graphTable.column(v).clear(); } // Check for disconnected vertices disconnected.remove(v); // v no longer exists }