/** * @param nodeId Node ID. * @param rmvClient Client to remove. * @return {@code True} if client was removed. */ private boolean removeNodeClient(UUID nodeId, GridCommunicationClient rmvClient) { for (;;) { GridCommunicationClient[] curClients = clients.get(nodeId); if (curClients == null || rmvClient.connectionIndex() >= curClients.length || curClients[rmvClient.connectionIndex()] != rmvClient) return false; GridCommunicationClient[] newClients = Arrays.copyOf(curClients, curClients.length); newClients[rmvClient.connectionIndex()] = null; if (clients.replace(nodeId, curClients, newClients)) return true; } }
/** {@inheritDoc} */ @Override public int connectionIndex() { return delegate.connectionIndex(); } }
assert connIdx == addClient.connectionIndex() : addClient;
recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); recovery = outRecDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1));
assert connIdx == client.connectionIndex() : client;
/** * @param nodeId Node ID. * @param rmvClient Client to remove. * @return {@code True} if client was removed. */ private boolean removeNodeClient(UUID nodeId, GridCommunicationClient rmvClient) { for (;;) { GridCommunicationClient[] curClients = clients.get(nodeId); if (curClients == null || rmvClient.connectionIndex() >= curClients.length || curClients[rmvClient.connectionIndex()] != rmvClient) return false; GridCommunicationClient[] newClients = Arrays.copyOf(curClients, curClients.length); newClients[rmvClient.connectionIndex()] = null; if (clients.replace(nodeId, curClients, newClients)) return true; } }
assert connIdx == addClient.connectionIndex() : addClient;
recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); recovery = outRecDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1));
assert connIdx == client.connectionIndex() : client;