/** * Close and disconnects all the child expressions. */ private void disconnect() { synchronized(lock) { while (!readRecipies.isEmpty()) { DesiredRateExpression<?> expression = readRecipies.keySet().iterator().next(); disconnectReadExpression(expression); } } }
@Override public void dispose() { // Disconnect everything on dispose if (currentExpressions != null) { for (DesiredRateExpression<?> desiredRateExpression : new HashSet<>(currentExpressions)) { getDirector().disconnectReadExpression(desiredRateExpression); } } currentExpressions = null; previousName = null; }
@Override public void dispose() { // Disconnect everything on dispose if (currentExpressions != null) { for (DesiredRateExpression<?> desiredRateExpression : new HashSet<>(currentExpressions)) { getDirector().disconnectReadExpression(desiredRateExpression); } } currentExpressions = null; previousNames = null; }
@Override public void dispose() { // Disconnect everything on dispose if (currentExpression != null) { getDirector().disconnectReadExpression(currentExpression); } currentExpression = null; }
/** * Removes the expression with the given name. * * @param name the name of the expression to remove * @return this expression */ public ReadMap<T> remove(String name) { synchronized(lock) { if (!expressions.containsKey(name)) { throw new IllegalArgumentException("MapExpression does not contain an expression named '" + name + "'"); } getMapOfFunction().getMapUpdateCollector().writeValue(MapUpdate.<T>removeFunction(name)); DesiredRateExpression<T> expression = expressions.remove(name); if (director != null) { director.disconnectReadExpression(expression); } return this; } }
/** * Removes all the expressions currently in the map. * * @return this expression */ public ReadMap<T> clear() { synchronized(lock) { getMapOfFunction().getMapUpdateCollector().writeValue(MapUpdate.<T>clear()); if (director != null) { for (DesiredRateExpression<T> desiredRateExpression : expressions.values()) { director.disconnectReadExpression(desiredRateExpression); } } expressions.clear(); return this; } }
getDirector().disconnectReadExpression(desiredRateExpression);
for (DesiredRateExpression<?> desiredRateExpression : currentExpressions) { if (desiredRateExpression != null) { getDirector().disconnectReadExpression(desiredRateExpression); getDirector().disconnectReadExpression(newExpression); newExpressions.set(0, newExpression); newExpression = channel(newName + ".LLIM", Object.class); getDirector().disconnectReadExpression(newExpression); newExpressions.set(1, newExpression); newExpression = channel(newName + ".ULIM", Object.class); getDirector().disconnectReadExpression(newExpression); newExpressions.set(2, newExpression);
@Override public Object calculate(final List<Object> args) { // Retrieve the new name VString value = (VString) args.get(0); String newName = null; if (value != null) { newName = value.getValue(); } // If the name does not match, disconnect and connect if (!Objects.equals(newName, previousName)) { // Disconnect previous if (currentExpression != null) { getDirector().disconnectReadExpression(currentExpression); currentExpression = null; } // Connect new if (newName != null) { currentExpression = channel(newName, Object.class); getDirector().connectReadExpression(currentExpression); } previousName = newName; } // Return value if (newName == null) { return null; } return currentExpression.getFunction().readValue(); }