diff --git a/bin/SMaRt.jar b/bin/SMaRt.jar index cab87388ffcb0430c55fa47ea4b097c376847eff..acd01f897f1b1287de9e570b7df2761398b76970 100644 Binary files a/bin/SMaRt.jar and b/bin/SMaRt.jar differ diff --git a/runscripts/smartrun.bat b/runscripts/smartrun.bat index 0b87b72ea2c7d6d9e4c945db077e8d3bd1fc4419..8e399ed999edfa6e3dea4d4be5fbd25c5ed54e5e 100644 --- a/runscripts/smartrun.bat +++ b/runscripts/smartrun.bat @@ -1 +1 @@ -java -cp bin\SMaRt_com_Vista.jar;lib\slf4j-api-1.5.8.jar;lib\slf4j-jdk14-1.5.8.jar;lib\netty-3.1.1.GA.jar %1 %2 %3 %4 %5 %6 %7 \ No newline at end of file +java -cp bin\SMaRt.jar;lib\slf4j-api-1.5.8.jar;lib\slf4j-jdk14-1.5.8.jar;lib\netty-3.1.1.GA.jar %1 %2 %3 %4 %5 %6 %7 \ No newline at end of file diff --git a/runscripts/smartrun_to_logs.bat b/runscripts/smartrun_to_logs.bat index 2d2b36d324df87987cefeb00a6db0130c010b21c..43e001d57c34a72f49c65c9adc05a388f5a34768 100644 --- a/runscripts/smartrun_to_logs.bat +++ b/runscripts/smartrun_to_logs.bat @@ -1 +1 @@ -java -cp bin\SMaRt_com_Vista.jar;lib\slf4j-api-1.5.8.jar;lib\slf4j-jdk14-1.5.8.jar;lib\netty-3.1.1.GA.jar %1 %2 %3 %4 %5 %6 %7 > output_replica_%2.txt 2>&1 \ No newline at end of file +java -cp bin\SMaRt.jar;lib\slf4j-api-1.5.8.jar;lib\slf4j-jdk14-1.5.8.jar;lib\netty-3.1.1.GA.jar %1 %2 %3 %4 %5 %6 %7 > output_replica_%2.txt 2>&1 \ No newline at end of file diff --git a/src/navigators/smart/communication/client/netty/NettyClientServerCommunicationSystemClientSide.java b/src/navigators/smart/communication/client/netty/NettyClientServerCommunicationSystemClientSide.java index f916cb4ed140d112a2d1b96fb5d3666575329e29..9bfc55218f21807af7149aa98a1537db69785e30 100644 --- a/src/navigators/smart/communication/client/netty/NettyClientServerCommunicationSystemClientSide.java +++ b/src/navigators/smart/communication/client/netty/NettyClientServerCommunicationSystemClientSide.java @@ -118,7 +118,7 @@ public class NettyClientServerCommunicationSystemClientSide extends SimpleChanne //******* EDUARDO BEGIN **************// // Start the connection attempt. - ChannelFuture future = bootstrap.connect(manager.getStaticConf().getRemoteAddress(currV[i])); + ChannelFuture future = bootstrap.connect(manager.getRemoteAddress(currV[i])); //creates MAC stuff Mac macSend = Mac.getInstance(manager.getStaticConf().getHmacAlgorithm()); @@ -129,7 +129,7 @@ public class NettyClientServerCommunicationSystemClientSide extends SimpleChanne macReceive, currV[i], manager.getStaticConf().getRSAPublicKey(currV[i]), new ReentrantLock()); sessionTable.put(currV[i], cs); - System.out.println("Connecting to replica " + currV[i] + " at " + manager.getStaticConf().getRemoteAddress(currV[i])); + System.out.println("Connecting to replica " + currV[i] + " at " + manager.getRemoteAddress(currV[i])); //******* EDUARDO END **************// @@ -241,7 +241,7 @@ public class NettyClientServerCommunicationSystemClientSide extends SimpleChanne //******* EDUARDO BEGIN **************// // Start the connection attempt. - ChannelFuture future = bootstrap.connect(manager.getStaticConf().getRemoteAddress(currV[i])); + ChannelFuture future = bootstrap.connect(manager.getRemoteAddress(currV[i])); //creates MAC stuff Mac macSend = Mac.getInstance(manager.getStaticConf().getHmacAlgorithm()); @@ -251,7 +251,7 @@ public class NettyClientServerCommunicationSystemClientSide extends SimpleChanne NettyClientServerSession cs = new NettyClientServerSession(future.getChannel(), macSend, macReceive, currV[i], manager.getStaticConf().getRSAPublicKey(currV[i]), new ReentrantLock()); sessionTable.put(currV[i], cs); - System.out.println("Connecting to replica " + currV[i] + " at " + manager.getStaticConf().getRemoteAddress(currV[i])); + System.out.println("Connecting to replica " + currV[i] + " at " + manager.getRemoteAddress(currV[i])); //******* EDUARDO END **************// @@ -321,7 +321,7 @@ public class NettyClientServerCommunicationSystemClientSide extends SimpleChanne // Set up the default event pipeline. bootstrap.setPipelineFactory(new NettyClientPipelineFactory(this, true, sessionTable, authKey, macDummy.getMacLength(), manager, rl, TOMUtil.getSignatureSize(manager), new ReentrantLock())); // Start the connection attempt. - ChannelFuture future = bootstrap.connect(manager.getStaticConf().getRemoteAddress(ncss.getReplicaId())); + ChannelFuture future = bootstrap.connect(manager.getRemoteAddress(ncss.getReplicaId())); //******* EDUARDO END **************// diff --git a/src/navigators/smart/reconfiguration/ReconfigurationManager.java b/src/navigators/smart/reconfiguration/ReconfigurationManager.java index dc2799ae2902fabaf9b0fa9176761dc1f5b9f291..fded9c6be56d8a49b50dd18b66cde44f4f341bd4 100644 --- a/src/navigators/smart/reconfiguration/ReconfigurationManager.java +++ b/src/navigators/smart/reconfiguration/ReconfigurationManager.java @@ -4,6 +4,7 @@ */ package navigators.smart.reconfiguration; +import java.net.InetSocketAddress; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -194,7 +195,12 @@ public class ReconfigurationManager extends ViewManager { f = currentView.getF(); } - View newV = new View(currentView.getId() + 1, nextV, f); + InetSocketAddress[] addresses = new InetSocketAddress[nextV.length]; + + for(int i = 0 ;i < nextV.length ;i++) + addresses[i] = getStaticConf().getRemoteAddress(nextV[i]); + + View newV = new View(currentView.getId() + 1, nextV, f,addresses); System.out.println("new view: " + newV); System.out.println("lastJoinSet: " + jSet); diff --git a/src/navigators/smart/reconfiguration/View.java b/src/navigators/smart/reconfiguration/View.java index 885e42e041a825c33dd9918cb72dc25d072f435a..7c4d84f5f967561d3b83c87dca131c24fd7903dd 100644 --- a/src/navigators/smart/reconfiguration/View.java +++ b/src/navigators/smart/reconfiguration/View.java @@ -7,6 +7,9 @@ package navigators.smart.reconfiguration; import java.io.Serializable; import java.util.Arrays; +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; /** * @@ -14,61 +17,68 @@ import java.util.Arrays; */ public class View implements Serializable { - private int id; - private int f; - private int[] processes; - - public View(int id, int[] processes, int f){ - this.id = id; - this.processes = processes; - Arrays.sort(this.processes); - this.f = f; - } + private int id; + private int f; + private int[] processes; + private Map addresses; - public boolean isMember(int id){ - for(int i = 0; i < this.processes.length;i++){ - if(this.processes[i] == id){ - return true; - } - } - return false; - } - - - public int getPos(int id){ - for(int i = 0; i < this.processes.length;i++){ - if(this.processes[i] == id){ - return i; - } - } - return -1; - } - - public int getId() { - return id; - } + public View(int id, int[] processes, int f, InetSocketAddress[] addresses){ + this.id = id; + this.processes = processes; + this.addresses = new HashMap(); - public int getF() { - return f; - } - - public int getN(){ - return this.processes.length; - } - - public int[] getProcesses() { - return processes; - } - - @Override - public String toString(){ - String ret = "ID:"+id+"; F:"+f+"; Processes:"; - for(int i = 0; i < processes.length;i++){ - ret = ret+processes[i]+","; - } - - - return ret; - } + for(int i = 0; i < this.processes.length;i++) + this.addresses.put(processes[i],addresses[i]); + Arrays.sort(this.processes); + this.f = f; + } + + public boolean isMember(int id){ + for(int i = 0; i < this.processes.length;i++){ + if(this.processes[i] == id){ + return true; + } + } + return false; + } + + + public int getPos(int id){ + for(int i = 0; i < this.processes.length;i++){ + if(this.processes[i] == id){ + return i; + } + } + return -1; + } + + public int getId() { + return id; + } + + public int getF() { + return f; + } + + public int getN(){ + return this.processes.length; + } + + public int[] getProcesses() { + return processes; + } + + @Override + public String toString(){ + String ret = "ID:"+id+"; F:"+f+"; Processes:"; + for(int i = 0; i < processes.length;i++){ + ret = ret+processes[i]+"("+addresses.get(processes[i])+"),"; + } + + return ret; + } + public InetSocketAddress getAddress(int id) { + return addresses.get(id); + } } diff --git a/src/navigators/smart/reconfiguration/ViewManager.java b/src/navigators/smart/reconfiguration/ViewManager.java index f5aa1817d8557ebbdfa1e1375b09471cdd6219ee..086b3f28275483b0d18728530a6eddc4106a602c 100644 --- a/src/navigators/smart/reconfiguration/ViewManager.java +++ b/src/navigators/smart/reconfiguration/ViewManager.java @@ -6,6 +6,8 @@ package navigators.smart.reconfiguration; import navigators.smart.reconfiguration.util.TOMConfiguration; +import java.net.InetSocketAddress; +import java.net.SocketAddress; @@ -23,18 +25,31 @@ public class ViewManager { public ViewManager(int procId){ this.initialConf = new TOMConfiguration(procId); - initialView = new View(0,initialConf.getInitialView(),initialConf.getF()); + initialView = new View(0,initialConf.getInitialView(),initialConf.getF(),getAdddresses(initialConf)); reconfigureTo(initialView); } public ViewManager(int procId,String configHome){ this.initialConf = new TOMConfiguration(procId,configHome); - initialView = new View(0,initialConf.getInitialView(),initialConf.getF()); + initialView = new View(0,initialConf.getInitialView(),initialConf.getF(),getAdddresses(initialConf)); + reconfigureTo(initialView); } - - + private InetSocketAddress[] getAdddresses(TOMConfiguration initialConf){ + + int nextV[] = initialConf.getInitialView(); + InetSocketAddress[] addresses = new InetSocketAddress[nextV.length]; + for(int i = 0 ;i < nextV.length ;i++) + addresses[i] = initialConf.getRemoteAddress(nextV[i]); + + return addresses; + } + + public SocketAddress getRemoteAddress(int id) { + return currentView.getAddress(id); + } + /* public void reconfigureTo(byte[] reply, boolean isAView){ ByteArrayInputStream bInp = new ByteArrayInputStream(reply); try { diff --git a/src/navigators/smart/tom/core/TOMLayer.java b/src/navigators/smart/tom/core/TOMLayer.java index 3aa7ed40ff598248cbf39de6ee629f15b8af4195..a1a17f1aae9d8dcac5da093aa33b65c82d06b1af 100644 --- a/src/navigators/smart/tom/core/TOMLayer.java +++ b/src/navigators/smart/tom/core/TOMLayer.java @@ -1,4 +1,4 @@ -/** +/** * Copyright (c) 2007-2009 Alysson Bessani, Eduardo Alchieri, Paulo Sousa, and the authors indicated in the @author tags * * This file is part of SMaRt.