Author: fhanik Date: Tue Jun 13 21:53:55 2006 New Revision: 414073 URL: http://svn.apache.org/viewvc?rev=414073&view=rev Log: Fixed nextIndex bug and added support for multi threading during start/stop of the entire demo
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java?rev=414073&r1=414072&r2=414073&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java Tue Jun 13 21:53:55 2006 @@ -33,6 +33,7 @@ import org.apache.catalina.tribes.io.XByteBuffer; import org.apache.catalina.tribes.membership.MemberImpl; import org.apache.catalina.tribes.membership.Membership; +import java.net.ConnectException; /** * <p>Title: A perfect failure detector </p> @@ -254,6 +255,8 @@ }//end if return true; } catch ( SocketTimeoutException sx) { + //do nothing, we couldn't connect + } catch ( ConnectException cx) { //do nothing, we couldn't connect }catch (Exception x ) { log.error("Unable to perform failure detection check, assuming member down.",x); Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java?rev=414073&r1=414072&r2=414073&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/Arrays.java Tue Jun 13 21:53:55 2006 @@ -163,9 +163,13 @@ } public static int nextIndex(Member member, Member[] members) { - int idx = indexOf(member,members); - if (idx == (members.length-1) ) return members.length>0?0:-1; - else return idx+1; + int idx = indexOf(member,members)+1; + if (idx >= members.length ) idx = ((members.length>0)?0:-1); + +//System.out.println("Next index:"+idx); +//System.out.println("Member:"+member.getName()); +//System.out.println("Members:"+toNameString(members)); + return idx; } Modified: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java?rev=414073&r1=414072&r2=414073&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/CoordinationDemo.java Tue Jun 13 21:53:55 2006 @@ -18,6 +18,7 @@ public class CoordinationDemo { static int CHANNEL_COUNT = 5; static int SCREEN_WIDTH = 120; + static boolean MULTI_THREAD = false; StringBuffer statusLine = new StringBuffer(); Status[] status = null; BufferedReader reader = null; @@ -38,9 +39,10 @@ public void printMenuOptions() { System.out.println("Commands:"); - System.out.println("start [member id]"); - System.out.println("stop [member id]"); - System.out.println("quit"); + System.out.println("\tstart [member id]"); + System.out.println("\tstop [member id]"); + System.out.println("\tprint (refresh)"); + System.out.println("\tquit"); System.out.print("Enter command:"); } @@ -90,33 +92,9 @@ String[] args = tokenize(l); while ( args.length >= 1 && (!"quit".equalsIgnoreCase(args[0]))) { if ("start".equalsIgnoreCase(args[0])) { - if ( args.length == 1 ) { - setSystemStatus("System starting up..."); - for (int i = 0; i < status.length; i++) status[i].start(); - setSystemStatus("System started."); - } else { - int index = -1; - try { index = Integer.parseInt(args[1])-1;}catch ( Exception x ) {setSystemStatus("Invalid index:"+args[1]);} - if ( index >= 0 ) { - setSystemStatus("Starting member:"+(index+1)); - status[index].start(); - setSystemStatus("Member started:"+(index+1)); - } - } + cmdStart(args); } else if ("stop".equalsIgnoreCase(args[0])) { - if ( args.length == 1 ) { - setSystemStatus("System shutting down..."); - for (int i = 0; i < status.length; i++) status[i].stop(); - setSystemStatus("System stopped."); - } else { - int index = -1; - try { index = Integer.parseInt(args[1])-1;}catch ( Exception x ) {setSystemStatus("Invalid index:"+args[1]);} - if ( index >= 0 ) { - setSystemStatus("Stopping member:"+(index+1)); - status[index].stop(); - setSystemStatus("Member stopped:"+(index+1)); - } - } + cmdStop(args); } printScreen(); @@ -126,6 +104,56 @@ for ( int i=0; i<status.length; i++ ) status[i].stop(); } + private void cmdStop(String[] args) { + if ( args.length == 1 ) { + setSystemStatus("System shutting down..."); + Thread[] t = new Thread[CHANNEL_COUNT]; + for (int i = 0; i < status.length; i++) { + final int j = i; + t[j] = new Thread() { + public void run() { + status[j].stop(); + } + }; + } + for (int i = 0; i < status.length; i++) if (MULTI_THREAD ) t[i].start(); else t[i].run(); + setSystemStatus("System stopped."); + } else { + int index = -1; + try { index = Integer.parseInt(args[1])-1;}catch ( Exception x ) {setSystemStatus("Invalid index:"+args[1]);} + if ( index >= 0 ) { + setSystemStatus("Stopping member:"+(index+1)); + status[index].stop(); + setSystemStatus("Member stopped:"+(index+1)); + } + } + } + + private void cmdStart(String[] args) { + if ( args.length == 1 ) { + setSystemStatus("System starting up..."); + Thread[] t = new Thread[CHANNEL_COUNT]; + for (int i = 0; i < status.length; i++) { + final int j = i; + t[j] = new Thread() { + public void run() { + status[j].start(); + } + }; + } + for (int i = 0; i < status.length; i++) if (MULTI_THREAD ) t[i].start(); else t[i].run(); + setSystemStatus("System started."); + } else { + int index = -1; + try { index = Integer.parseInt(args[1])-1;}catch ( Exception x ) {setSystemStatus("Invalid index:"+args[1]);} + if ( index >= 0 ) { + setSystemStatus("Starting member:"+(index+1)); + status[index].start(); + setSystemStatus("Member started:"+(index+1)); + } + } + } + public void setSystemStatus(String status) { statusLine.delete(0,statusLine.length()); statusLine.append(status); @@ -137,7 +165,16 @@ public static void main(String[] args) throws Exception { - if ( args.length == 1 ) CHANNEL_COUNT = Integer.parseInt(args[0]); + System.out.println("Usage:"); + System.out.println("\tjava org.apache.catalina.tribes.demos.CoordinationDemo [channel-count multi-thread]"); + System.out.println("Example:"); + System.out.println("\tjava o.a.c.t.d.CoordinationDemo -> starts demo single threaded start/stop with 5 channels"); + System.out.println("\tjava o.a.c.t.d.CoordinationDemo 10 -> starts demo single threaded start/stop with 10 channels"); + System.out.println("\tjava o.a.c.t.d.CoordinationDemo 7 true-> starts demo multi threaded start/stop with 7 channels"); + System.out.println(); + + if ( args.length >= 1 ) CHANNEL_COUNT = Integer.parseInt(args[0]); + if ( args.length >= 2 ) MULTI_THREAD = true; CoordinationDemo demo = new CoordinationDemo(); demo.waitForInput(); } @@ -217,6 +254,8 @@ if ( channel != null ) { channel.stop(channel.DEFAULT); status = "Channel Stopped"; + } else { + status = "Channel Already Stopped"; } }catch ( Exception x ) { status = "Stop failed:"+x.getMessage(); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]