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]

Reply via email to