Author: fhanik Date: Wed Apr 26 07:31:25 2006 New Revision: 397203 URL: http://svn.apache.org/viewcvs?rev=397203&view=rev Log: Added in support for IPv6
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/RpcChannel.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/MemberImpl.java tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/EchoRpcTest.java tomcat/container/tc5.5.x/modules/groupcom/to-do.txt Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/RpcChannel.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/RpcChannel.java?rev=397203&r1=397202&r2=397203&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/RpcChannel.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/RpcChannel.java Wed Apr 26 07:31:25 2006 @@ -15,10 +15,6 @@ */ package org.apache.catalina.tribes.group; -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; @@ -29,7 +25,6 @@ import org.apache.catalina.tribes.ChannelListener; import org.apache.catalina.tribes.Member; import org.apache.catalina.tribes.util.UUIDGenerator; -import org.apache.catalina.tribes.tipis.*; /** * A channel to handle RPC messaging Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/MemberImpl.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/MemberImpl.java?rev=397203&r1=397202&r2=397203&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/MemberImpl.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/MemberImpl.java Wed Apr 26 07:31:25 2006 @@ -173,7 +173,8 @@ //package looks like //alive - 8 bytes //port - 4 bytes - //host - 4 bytes + //host length - 1 byte + //host - hl bytes //dlen - 4 bytes //domain - dlen bytes //uniqueId - 16 bytes @@ -181,20 +182,29 @@ byte[] domaind = this.domain; byte[] addr = host; - byte[] data = new byte[8+4+addr.length+4+domaind.length+16]; long alive=System.currentTimeMillis()-getServiceStartTime(); + byte hl = (byte)addr.length; + byte[] data = new byte[8+4+1+addr.length+4+domaind.length+16]; + int pos = 0; //alive data XByteBuffer.toBytes((long)alive,data,0); + pos += 8; //port - XByteBuffer.toBytes(port,data,8); + XByteBuffer.toBytes(port,data,pos); + pos += 4; + //host length + data[pos++] = hl; //host - System.arraycopy(addr,0,data,12,addr.length); + System.arraycopy(addr,0,data,pos,addr.length); + pos+=addr.length; //domain length - XByteBuffer.toBytes(domaind.length,data,16); + XByteBuffer.toBytes(domaind.length,data,pos); + pos+=4; //domain - System.arraycopy(domaind,0,data,20,domaind.length); + System.arraycopy(domaind,0,data,pos,domaind.length); + pos+=domaind.length; //unique Id - System.arraycopy(uniqueId,0,data,20+domaind.length,uniqueId.length); + System.arraycopy(uniqueId,0,data,pos,uniqueId.length); dataPkg = data; return data; } @@ -207,30 +217,46 @@ //package looks like //alive - 8 bytes //port - 4 bytes - //host - 4 bytes + //host length - 1 byte + //host - hl bytes //dlen - 4 bytes //domain - dlen bytes //uniqueId - 16 bytes + int pos = 0; + byte[] alived = new byte[8]; - System.arraycopy(data, 0, alived, 0, 8); + System.arraycopy(data, pos, alived, 0, 8); + pos+=8; byte[] portd = new byte[4]; - System.arraycopy(data, 8, portd, 0, 4); - byte[] addr = new byte[4]; - System.arraycopy(data, 12, addr, 0, 4); - //FIXME control the nlen - //FIXME control the dlen + System.arraycopy(data, pos, portd, 0, 4); + pos+=4; + + byte hl = data[pos++]; + byte[] addr = new byte[hl]; + System.arraycopy(data, pos, addr, 0, hl); + pos+=hl; + byte[] dlend = new byte[4]; - System.arraycopy(data, 16, dlend, 0, 4); + System.arraycopy(data, pos, dlend, 0, 4); + pos+=4; + int dlen = XByteBuffer.toInt(dlend, 0); byte[] domaind = new byte[dlen]; - System.arraycopy(data, 20, domaind, 0, domaind.length); + System.arraycopy(data, pos, domaind, 0, domaind.length); + pos+=domaind.length; + byte[] uniqueId = new byte[16]; - System.arraycopy(data, 20+domaind.length, uniqueId, 0, 16); + System.arraycopy(data, pos, uniqueId, 0, 16); + member.domain = domaind; member.setHost(addr); member.setPort(XByteBuffer.toInt(portd, 0)); member.setMemberAliveTime(XByteBuffer.toLong(alived, 0)); member.setUniqueId(uniqueId); + + member.dataPkg = new byte[data.length]; + System.arraycopy(data,0,member.dataPkg,0,data.length); + return member; } @@ -454,6 +480,22 @@ byte[] data = this.getData(); out.writeInt(data.length); out.write(data); + } + + public static void main(String[] args) throws Exception { + //String host = "127.0.0.1"; + String host = "1080:0:0:0:8:800:200C:417A"; + MemberImpl impl = new MemberImpl("domain",host,4444,10000); + byte[] data = impl.getData(false); + data = impl.getData(false); + MemberImpl newimpl = new MemberImpl(); + MemberImpl.getMember(data,newimpl); + byte[] newdata = newimpl.getData(false); + System.out.println("Impl:"+impl); + System.out.println("NewI:"+newimpl); + System.out.println("byte comparison:"+Arrays.equals(data,newdata)); + System.out.println("byte old:"+Arrays.toString(data)); + System.out.println("byte new:"+Arrays.toString(newdata)); } } Modified: tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/EchoRpcTest.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/EchoRpcTest.java?rev=397203&r1=397202&r2=397203&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/EchoRpcTest.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/EchoRpcTest.java Wed Apr 26 07:31:25 2006 @@ -3,11 +3,11 @@ import java.io.Serializable; import org.apache.catalina.tribes.Member; -import org.apache.catalina.tribes.tipis.RpcCallback; +import org.apache.catalina.tribes.group.RpcCallback; import org.apache.catalina.tribes.Channel; import org.apache.catalina.tribes.ManagedChannel; import org.apache.catalina.tribes.group.RpcChannel; -import org.apache.catalina.tribes.tipis.Response; +import org.apache.catalina.tribes.group.Response; /** Modified: tomcat/container/tc5.5.x/modules/groupcom/to-do.txt URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/to-do.txt?rev=397203&r1=397202&r2=397203&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/to-do.txt (original) +++ tomcat/container/tc5.5.x/modules/groupcom/to-do.txt Wed Apr 26 07:31:25 2006 @@ -33,7 +33,9 @@ Code Tasks: =========================================== -39. Support for IPv6 +41. Build a tipi that is a soft membership + +40. channel.stop() - should broadcast a stop message, to avoid timeout 38. Make the AbstractReplicatedMap accept non serializable elements, but just don't replicate them @@ -233,4 +235,7 @@ c) RpcChannel - collect "no reply" replies, so that we don't have to time out The RpcChannel now works together with the group channel, so that when it receives an RPC message -and no one accepts it, then it can reply immediately. this way the rpc sender doesn't have to time out. \ No newline at end of file +and no one accepts it, then it can reply immediately. this way the rpc sender doesn't have to time out. + +39. Support for IPv6 +Notes: Completed. The membership now carries a variable length host address to support IPv6 \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]