You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/05/21 04:01:06 UTC
svn commit: r408121 -
/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
Author: fhanik
Date: Sat May 20 19:01:05 2006
New Revision: 408121
URL: http://svn.apache.org/viewvc?rev=408121&view=rev
Log:
starting to add more helper method, still need clarification on message exchange during election
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java?rev=408121&r1=408120&r2=408121&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java Sat May 20 19:01:05 2006
@@ -61,6 +61,7 @@
protected Member coordinator = null;
+
public NonBlockingCoordinator() {
super();
}
@@ -70,6 +71,7 @@
}
public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException {
+ waitForRelease();
super.sendMessage(destination, msg, payload);
}
@@ -86,14 +88,24 @@
}
public void memberAdded(Member member) {
- if ( membership == null ) setupMembership();
- membership.addMember((MemberImpl)member);
+ try {
+ halt();
+ if (membership == null) setupMembership();
+ membership.addMember( (MemberImpl) member);
+ }finally {
+ release();
+ }
super.memberAdded(member);
}
public void memberDisappeared(Member member) {
- if ( membership == null ) setupMembership();
- membership.removeMember((MemberImpl)member);
+ try {
+ halt();
+ if (membership == null) setupMembership();
+ membership.removeMember( (MemberImpl) member);
+ }finally {
+ release();
+ }
super.memberDisappeared(member);
}
@@ -145,16 +157,36 @@
if ( membership == null ) {
membership = new Membership((MemberImpl)super.getLocalMember(true));
}
-
+ }
+
+ /**
+ * Block in/out messages while a election is going on
+ */
+ protected void halt() {
+
+ }
+
+ /**
+ * Release lock for in/out messages election is completed
+ */
+ protected void release() {
+
+ }
+
+ /**
+ * Wait for an election to end
+ */
+ protected void waitForRelease() {
+
}
/**
* A message is:<br>
- * HEADER, REQUEST|REPLY, ID, MSG, SOURCE_LEN, SOURCE
+ * HEADER, REQUEST|REPLY, ID, MSG, SOURCE_LEN, SOURCE, PAYLOAD_LEN, PAYLOAD
* @param type byte[] - either NBC_REQUEST or NBC_REPLY
* @param msg byte[] - NBC_HALT, NBC_ACK, NBC_NORM, NBC_NOTNORM, NBC_LDR
*/
- protected UniqueId createNBCMessage(XByteBuffer buf, byte[] type, byte[] msg) {
+ protected UniqueId createNBCMessage(XByteBuffer buf, byte[] type, byte[] msg, byte[] payload) {
UniqueId id = new UniqueId(UUIDGenerator.randomUUID(true));
Member local = getLocalMember(false);
byte[] ldata = ((MemberImpl)local).getData(false,false);
@@ -165,6 +197,8 @@
buf.append(msg,0,msg.length);
buf.append(ldata.length);
buf.append(ldata,0,ldata.length);
+ buf.append(payload.length);
+ buf.append(payload,0,payload.length);
return id;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org