jonathan 04/10/29 17:13:10
Modified: javaapps User.java recThread.java
Log:
Apply Ryan Caudy's rework of groups code to report multiple VS sets
in membership messages. This breaks the SP API, althought some backwards
compability code is included. Also fixes the Java interface to support
new methods.
Revision Changes Path
1.4 +51 -45 spread/javaapps/User.java
Index: User.java
===================================================================
RCS file: /storage/cvsroot/spread/javaapps/User.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- User.java 5 Mar 2004 00:37:11 -0000 1.3
+++ User.java 29 Oct 2004 21:13:09 -0000 1.4
@@ -59,7 +59,7 @@
// True if there is a listening thread.
///////////////////////////////////////
private boolean listening;
- private recThread rt;
+ private recThread rt;
private void PrintMenu()
{
@@ -90,6 +90,55 @@
}
System.out.print("\tq -- quit\n");
}
+
+ // Print this membership data. Does so in a generic way so identical
+ // function is used in recThread and User.
+ private void printMembershipInfo(MembershipInfo info)
+ {
+ SpreadGroup group = info.getGroup();
+ if(info.isRegularMembership()) {
+ SpreadGroup members[] = info.getMembers();
+ MembershipInfo.VirtualSynchronySet
virtual_synchrony_sets[] = info.getVirtualSynchronySets();
+ MembershipInfo.VirtualSynchronySet
my_virtual_synchrony_set = info.getMyVirtualSynchronySet();
+
+ System.out.println("REGULAR membership for group " +
group +
+ " with " + members.length + "
members:");
+ for( int i = 0; i < members.length; ++i ) {
+ System.out.println("\t\t" + members[i]);
+ }
+ System.out.println("Group ID is " + info.getGroupID());
+
+ System.out.print("\tDue to ");
+ if(info.isCausedByJoin()) {
+ System.out.println("the JOIN of " +
info.getJoined());
+ } else if(info.isCausedByLeave()) {
+ System.out.println("the LEAVE of " +
info.getLeft());
+ } else if(info.isCausedByDisconnect()) {
+ System.out.println("the DISCONNECT of " +
info.getDisconnected());
+ } else if(info.isCausedByNetwork()) {
+ System.out.println("NETWORK change");
+ for( int i = 0 ; i <
virtual_synchrony_sets.length ; ++i ) {
+ MembershipInfo.VirtualSynchronySet set
= virtual_synchrony_sets[i];
+ SpreadGroup setMembers[] =
set.getMembers();
+ System.out.print("\t\t");
+ if( set == my_virtual_synchrony_set ) {
+ System.out.print( "(LOCAL) " );
+ } else {
+ System.out.print( "(OTHER) " );
+ }
+ System.out.println( "Virtual Synchrony
Set " + i + " has " +
+ set.getSize() + "
members:");
+ for( int j = 0; j < set.getSize(); ++j
) {
+ System.out.println("\t\t\t" +
setMembers[j]);
+ }
+ }
+ }
+ } else if(info.isTransition()) {
+ System.out.println("TRANSITIONAL membership for group "
+ group);
+ } else if(info.isSelfLeave()) {
+ System.out.println("SELF-LEAVE message for group " +
group);
+ }
+ }
private void DisplayMessage(SpreadMessage msg)
{
@@ -132,50 +181,7 @@
else if (msg.isMembership())
{
MembershipInfo info = msg.getMembershipInfo();
-
- if(info.isRegularMembership())
- {
- SpreadGroup groups[] = msg.getGroups();
-
- System.out.println("Received a REGULAR
membership.");
- System.out.println("For group " +
info.getGroup() + ".");
- System.out.println("With " +
groups.length + " members.");
- System.out.println("I am member " +
msg.getType() + ".");
- for(int i = 0 ; i < groups.length ; i++)
- System.out.println(" " +
groups[i]);
-
- System.out.println("Group ID is " +
info.getGroupID());
-
- System.out.print("Due to ");
- if(info.isCausedByJoin())
- {
- System.out.println("the JOIN of
" + info.getJoined() + ".");
- }
- else if(info.isCausedByLeave())
- {
- System.out.println("the LEAVE
of " + info.getLeft() + ".");
- }
- else if(info.isCausedByDisconnect())
- {
- System.out.println("the
DISCONNECT of " + info.getDisconnected() + ".");
- }
- else if(info.isCausedByNetwork())
- {
- SpreadGroup stayed[] =
info.getStayed();
- System.out.println("NETWORK
change.");
- System.out.println("VS set has
" + stayed.length + " members:");
- for(int i = 0 ; i <
stayed.length ; i++)
- System.out.println(" "
+ stayed[i]);
- }
- }
- else if(info.isTransition())
- {
- System.out.println("Received a
TRANSITIONAL membership for group " + info.getGroup());
- }
- else if(info.isSelfLeave())
- {
- System.out.println("Received a
SELF-LEAVE message for group " + info.getGroup());
- }
+ printMembershipInfo(info);
} else if ( msg.isReject() )
{
// Received a Reject message
1.4 +51 -44 spread/javaapps/recThread.java
Index: recThread.java
===================================================================
RCS file: /storage/cvsroot/spread/javaapps/recThread.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- recThread.java 5 Mar 2004 00:37:11 -0000 1.3
+++ recThread.java 29 Oct 2004 21:13:09 -0000 1.4
@@ -41,6 +41,56 @@
public recThread(SpreadConnection aConn) {
connection=aConn;
}
+
+ // Print this membership data. Does so in a generic way so identical
+ // function is used in recThread and User.
+ private void printMembershipInfo(MembershipInfo info)
+ {
+ SpreadGroup group = info.getGroup();
+ if(info.isRegularMembership()) {
+ SpreadGroup members[] = info.getMembers();
+ MembershipInfo.VirtualSynchronySet
virtual_synchrony_sets[] = info.getVirtualSynchronySets();
+ MembershipInfo.VirtualSynchronySet
my_virtual_synchrony_set = info.getMyVirtualSynchronySet();
+
+ System.out.println("REGULAR membership for group " +
group +
+ " with " + members.length + "
members:");
+ for( int i = 0; i < members.length; ++i ) {
+ System.out.println("\t\t" + members[i]);
+ }
+ System.out.println("Group ID is " + info.getGroupID());
+
+ System.out.print("\tDue to ");
+ if(info.isCausedByJoin()) {
+ System.out.println("the JOIN of " +
info.getJoined());
+ } else if(info.isCausedByLeave()) {
+ System.out.println("the LEAVE of " +
info.getLeft());
+ } else if(info.isCausedByDisconnect()) {
+ System.out.println("the DISCONNECT of " +
info.getDisconnected());
+ } else if(info.isCausedByNetwork()) {
+ System.out.println("NETWORK change");
+ for( int i = 0 ; i <
virtual_synchrony_sets.length ; ++i ) {
+ MembershipInfo.VirtualSynchronySet set
= virtual_synchrony_sets[i];
+ SpreadGroup setMembers[] =
set.getMembers();
+ System.out.print("\t\t");
+ if( set == my_virtual_synchrony_set ) {
+ System.out.print( "(LOCAL) " );
+ } else {
+ System.out.print( "(OTHER) " );
+ }
+ System.out.println( "Virtual Synchrony
Set " + i + " has " +
+ set.getSize() + "
members:");
+ for( int j = 0; j < set.getSize(); ++j
) {
+ System.out.println("\t\t\t" +
setMembers[j]);
+ }
+ }
+ }
+ } else if(info.isTransition()) {
+ System.out.println("TRANSITIONAL membership for group "
+ group);
+ } else if(info.isSelfLeave()) {
+ System.out.println("SELF-LEAVE message for group " +
group);
+ }
+ }
+
private void DisplayMessage(SpreadMessage msg)
{
try
@@ -83,50 +133,7 @@
else if ( msg.isMembership() )
{
MembershipInfo info = msg.getMembershipInfo();
-
- if(info.isRegularMembership())
- {
- SpreadGroup groups[] = msg.getGroups();
-
- System.out.println("Received a REGULAR
membership.");
- System.out.println("For group " +
info.getGroup() + ".");
- System.out.println("With " +
groups.length + " members.");
- System.out.println("I am member " +
msg.getType() + ".");
- for(int i = 0 ; i < groups.length ; i++)
- System.out.println(" " +
groups[i]);
-
- System.out.println("Group ID is " +
info.getGroupID());
-
- System.out.print("Due to ");
- if(info.isCausedByJoin())
- {
- System.out.println("the JOIN of
" + info.getJoined() + ".");
- }
- else if(info.isCausedByLeave())
- {
- System.out.println("the LEAVE
of " + info.getLeft() + ".");
- }
- else if(info.isCausedByDisconnect())
- {
- System.out.println("the
DISCONNECT of " + info.getDisconnected() + ".");
- }
- else if(info.isCausedByNetwork())
- {
- SpreadGroup stayed[] =
info.getStayed();
- System.out.println("NETWORK
change.");
- System.out.println("VS set has
" + stayed.length + " members:");
- for(int i = 0 ; i <
stayed.length ; i++)
- System.out.println(" "
+ stayed[i]);
- }
- }
- else if(info.isTransition())
- {
- System.out.println("Received a
TRANSITIONAL membership for group " + info.getGroup());
- }
- else if(info.isSelfLeave())
- {
- System.out.println("Received a
SELF-LEAVE message for group " + info.getGroup());
- }
+ printMembershipInfo(info);
} else if ( msg.isReject() )
{
// Received a Reject message
|