Author: fhanik Date: Mon Feb 11 09:19:32 2008 New Revision: 620529 URL: http://svn.apache.org/viewvc?rev=620529&view=rev Log: added demo on how to use the payload
Added: tomcat/trunk/test/org/apache/catalina/tribes/demos/MembersWithProperties.java Added: tomcat/trunk/test/org/apache/catalina/tribes/demos/MembersWithProperties.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/tribes/demos/MembersWithProperties.java?rev=620529&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/catalina/tribes/demos/MembersWithProperties.java (added) +++ tomcat/trunk/test/org/apache/catalina/tribes/demos/MembersWithProperties.java Mon Feb 11 09:19:32 2008 @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.catalina.tribes.demos; + +import java.io.Serializable; +import org.apache.catalina.tribes.ManagedChannel; +import org.apache.catalina.tribes.Member; +import org.apache.catalina.tribes.Channel; +import java.util.Properties; +import org.apache.catalina.tribes.MembershipListener; +import org.apache.catalina.tribes.util.UUIDGenerator; +import org.apache.catalina.tribes.util.Arrays; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; + +public class MembersWithProperties implements MembershipListener{ + Channel channel; + static Thread main; + + public MembersWithProperties(Channel channel, Properties props) throws IOException { + this.channel = channel; + channel.addMembershipListener(this); + ManagedChannel mchannel = (ManagedChannel)channel; + mchannel.getMembershipService().setPayload(getPayload(props)); + } + + byte[] getPayload(Properties props) throws IOException { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + props.store(bout,""); + return bout.toByteArray(); + } + + Properties getProperties(byte[] payload) throws IOException { + ByteArrayInputStream bin = new ByteArrayInputStream(payload); + Properties props = new Properties(); + props.load(bin); + return props; + } + + public void memberAdded(Member member) { + try { + System.out.println("Received member added:"+member); + System.out.println("Payload["+member+"] :"); + getProperties(member.getPayload()).store(System.out,""); + }catch ( Exception x ) { + x.printStackTrace(); + } + } + + public void memberDisappeared(Member member) { + try { + System.out.println("Received member disappeared:"+member); + System.out.println("Payload["+member+"] :"); + getProperties(member.getPayload()).store(System.out,""); + }catch ( Exception x ) { + x.printStackTrace(); + } + } + + public static void usage() { + System.out.println("Tribes Member Properties demo."); + System.out.println("Usage:\n\t" + + "java MemberWithProperties \n\t" + + "Channel options:" + + ChannelCreator.usage() + "\n\n" + + "Example:\n\t" + + "java MembersWithProperties -port 4004\n\t" + + "java MembersWithProperties -bind 192.168.0.45 -port 4005\n\t" + + "java MembersWithProperties -bind 192.168.0.45 -port 4005 -mbind 192.168.0.45 -count 100 -stats 10\n"); + } + + public static void main(String[] args) throws Exception { + if (args.length==0) usage(); + main = Thread.currentThread(); + ManagedChannel channel = (ManagedChannel) ChannelCreator.createChannel(args); + Properties props = new Properties(); + props.setProperty("mydomainkey","mydomainvalue"); + props.setProperty("someotherkey", Arrays.toString(UUIDGenerator.randomUUID(true))); + MembersWithProperties test = new MembersWithProperties(channel, props); + channel.start(channel.DEFAULT); + Runtime.getRuntime().addShutdownHook(new Shutdown(channel)); + try { + main.sleep(Long.MAX_VALUE); + }catch(InterruptedException ix) { + main.sleep(5000);//allow everything to shutdown + } + } + + public static class Shutdown extends Thread { + ManagedChannel channel = null; + public Shutdown(ManagedChannel channel) { + this.channel = channel; + } + + public void run() { + System.out.println("Shutting down..."); + try { + channel.stop(channel.DEFAULT); + } catch (Exception x) { + x.printStackTrace(); + } + System.out.println("Channel stopped."); + main.interrupt(); + } + } +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]