/******************************************************************************* * Copyright (c) 2014 EURA NOVA. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v2.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * Aldemar Reynaga - initial API and implementation * Salim Jouili - initial API and implementation ******************************************************************************/ package com.steffi.networking; import java.util.Map; import java.util.Map.Entry; import com.steffi.loader.ResponseProcessor; import com.steffi.model.SteffiGraph; import com.steffi.networking.messages.IdentifiableMessage; import com.steffi.storage.StorageTools; /** * @author Aldemar Reynaga * Handles a set of ZMQ sockets (using the ClientMultiThread class) to exchange asynchronous messages * with other members of the Infinispan cluster */ public class NodeClients { private ClientMultiThread[] clients; public NodeClients(SteffiGraph graph) { Map<String, String> clusterAddresses = StorageTools.getAddressesIps(); this.clients = new ClientMultiThread[graph.getNumberOfMembers()]; ClientMultiThread client = null; for (Entry<String, String> entry : clusterAddresses.entrySet()) { client = new ClientMultiThread(entry.getValue(), entry.getValue()); clients[graph.getMemberIndex(entry.getKey())] = client; new Thread(client).start(); } } public void sendMessage(int memberIndex, IdentifiableMessage message, ResponseProcessor sender) { clients[memberIndex].addMsgToQueue(message, sender); } public void close() { for (ClientMultiThread client : clients) client.stop(); } }