Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 2718 invoked from network); 18 Feb 2008 18:14:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Feb 2008 18:14:11 -0000 Received: (qmail 40725 invoked by uid 500); 18 Feb 2008 18:13:59 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 40667 invoked by uid 500); 18 Feb 2008 18:13:58 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 40656 invoked by uid 500); 18 Feb 2008 18:13:58 -0000 Delivered-To: apmail-jakarta-tomcat-dev@jakarta.apache.org Received: (qmail 40653 invoked by uid 99); 18 Feb 2008 18:13:58 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Feb 2008 10:13:58 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Feb 2008 18:13:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 116351A9832; Mon, 18 Feb 2008 10:13:43 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r628837 - in /tomcat/trunk: java/org/apache/catalina/tribes/membership/MemberImpl.java test/org/apache/catalina/tribes/test/membership/MemberSerialization.java Date: Mon, 18 Feb 2008 18:13:42 -0000 To: tomcat-dev@jakarta.apache.org From: fhanik@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080218181343.116351A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: fhanik Date: Mon Feb 18 10:13:39 2008 New Revision: 628837 URL: http://svn.apache.org/viewvc?rev=628837&view=rev Log: Add support to carry a UDP port in the broadcast, also add in versioning support (last two bytes) so that we can move the protocol forward Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java tomcat/trunk/test/org/apache/catalina/tribes/test/membership/MemberSerialization.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java?rev=628837&r1=628836&r2=628837&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java Mon Feb 18 10:13:39 2008 @@ -48,8 +48,8 @@ public static final transient String TCP_LISTEN_HOST = "tcpListenHost"; public static final transient String MEMBER_NAME = "memberName"; - public static final transient byte[] TRIBES_MBR_BEGIN = new byte[] {84, 82, 73, 66, 69, 83, 45, 66}; - public static final transient byte[] TRIBES_MBR_END = new byte[] {84, 82, 73, 66, 69, 83, 45, 69}; + public static final transient byte[] TRIBES_MBR_BEGIN = new byte[] {84, 82, 73, 66, 69, 83, 45, 66, 1, 0}; + public static final transient byte[] TRIBES_MBR_END = new byte[] {84, 82, 73, 66, 69, 83, 45, 69, 1, 0}; /** * The listen host for this member @@ -60,6 +60,10 @@ * The tcp listen port for this member */ protected int port; + /** + * The udp listen port for this member + */ + protected int udpPort = -1; /** * The tcp/SSL listen port for this member @@ -182,6 +186,7 @@ 8+ //alive time 4+ //port 4+ //secure port + 4+ //udp port 1+ //host length host.length+ //host 4+ //command length @@ -219,6 +224,7 @@ //alive - 8 bytes //port - 4 bytes //secure port - 4 bytes + //udp port - 4 bytes //host length - 1 byte //host - hl bytes //clen - 4 bytes @@ -255,6 +261,9 @@ //secure port XByteBuffer.toBytes(securePort,data,pos); pos += 4; + //udp port + XByteBuffer.toBytes(udpPort,data,pos); + pos += 4; //host length data[pos++] = hl; //host @@ -305,6 +314,7 @@ //alive - 8 bytes //port - 4 bytes //secure port - 4 bytes + //udp port - 4 bytes //host length - 1 byte //host - hl bytes //clen - 4 bytes @@ -319,7 +329,7 @@ int pos = offset; if (XByteBuffer.firstIndexOf(data,offset,TRIBES_MBR_BEGIN)!=pos) { - throw new IllegalArgumentException("Invalid package, should start with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN)+" Possibly an incompatible client broadcasting on the same multicast address."); + throw new IllegalArgumentException("Invalid package, should start with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN)); } if ( length < (TRIBES_MBR_BEGIN.length+4) ) { @@ -352,6 +362,9 @@ System.arraycopy(data, pos, sportd, 0, 4); pos += 4; + byte[] uportd = new byte[4]; + System.arraycopy(data, pos, uportd, 0, 4); + pos += 4; byte hl = data[pos++]; @@ -387,6 +400,7 @@ member.setHost(addr); member.setPort(XByteBuffer.toInt(portd, 0)); member.setSecurePort(XByteBuffer.toInt(sportd, 0)); + member.setUdpPort(XByteBuffer.toInt(uportd, 0)); member.setMemberAliveTime(XByteBuffer.toLong(alived, 0)); member.setUniqueId(uniqueId); member.payload = payload; @@ -479,6 +493,10 @@ public int getSecurePort() { return securePort; } + + public int getUdpPort() { + return udpPort; + } public void setMemberAliveTime(long time) { memberAliveTime=time; @@ -590,6 +608,12 @@ public void setSecurePort(int securePort) { this.securePort = securePort; + this.dataPkg = null; + } + + public void setUdpPort(int port) { + this.udpPort = port; + this.dataPkg = null; } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { Modified: tomcat/trunk/test/org/apache/catalina/tribes/test/membership/MemberSerialization.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/tribes/test/membership/MemberSerialization.java?rev=628837&r1=628836&r2=628837&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/tribes/test/membership/MemberSerialization.java (original) +++ tomcat/trunk/test/org/apache/catalina/tribes/test/membership/MemberSerialization.java Mon Feb 18 10:13:39 2008 @@ -32,6 +32,7 @@ public class MemberSerialization extends TestCase { MemberImpl m1, m2, p1,p2; byte[] payload = null; + int udpPort = 3445; protected void setUp() throws Exception { super.setUp(); payload = new byte[333]; @@ -46,6 +47,8 @@ m2.setDomain(new byte[] {1,2,3,4,5,6,7,8,9}); m1.setCommand(new byte[] {1,2,4,5,6,7,8,9}); m2.setCommand(new byte[] {1,2,4,5,6,7,8,9}); + m1.setUdpPort(udpPort); + m2.setUdpPort(m1.getUdpPort()); } public void testCompare() throws Exception { @@ -56,6 +59,19 @@ assertFalse(m1.equals(p2)); assertFalse(m2.equals(p2)); assertFalse(p1.equals(p2)); + } + + public void testUdpPort() throws Exception { + byte[] md1 = m1.getData(); + byte[] md2 = m2.getData(); + + MemberImpl a1 = MemberImpl.getMember(md1); + MemberImpl a2 = MemberImpl.getMember(md2); + + assertEquals(true, a1.getUdpPort()==a2.getUdpPort()); + assertEquals(true,a1.getUdpPort()==udpPort); + + } public void testSerializationOne() throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org