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]

Reply via email to